ONLYOFFICE DocSpace Portal 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 |
|---|---|---|---|
| AppsApi | get | GET /api/2.0/apps/{id} | Get an app |
| AppsApi | getAll | GET /api/2.0/apps | Get all apps |
| AppsApi | getSettings | GET /api/2.0/apps/{id}/settings | Get app settings |
| AppsApi | setEnabled | PUT /api/2.0/apps/{id}/enabled | Enable or disable an app |
| AppsApi | setSettings | PUT /api/2.0/apps/{id}/settings | Save app settings |
| AuthenticationApi | authenticateMe | POST /api/2.0/authentication | Authenticate a user |
| AuthenticationApi | authenticateMeFromBodyWithCode | POST /api/2.0/authentication/{code} | Authenticate a user by code |
| AuthenticationApi | checkConfirm | POST /api/2.0/authentication/confirm | Check a confirmation link |
| AuthenticationApi | getIsAuthentificated | GET /api/2.0/authentication | Check authentication |
| AuthenticationApi | logout | POST /api/2.0/authentication/logout | Log out |
| AuthenticationApi | saveMobilePhone | POST /api/2.0/authentication/setphone | Set a mobile phone |
| AuthenticationApi | sendSmsCode | POST /api/2.0/authentication/sendsms | Send SMS code |
| CapabilitiesApi | getPortalCapabilities | GET /api/2.0/capabilities | Get portal capabilities |
| MigrationApi | cancelMigration | POST /api/2.0/migration/cancel | Cancel migration |
| MigrationApi | clearMigration | POST /api/2.0/migration/clear | Clear migration |
| MigrationApi | finishMigration | POST /api/2.0/migration/finish | Finish migration |
| MigrationApi | getMigrationLogs | GET /api/2.0/migration/logs | Get migration logs |
| MigrationApi | getMigrationStatus | GET /api/2.0/migration/status | Get migration status |
| MigrationApi | listMigrations | GET /api/2.0/migration/list | Get available migrators |
| MigrationApi | startMigration | POST /api/2.0/migration/migrate | Start migration |
| MigrationApi | uploadAndInitializeMigration | POST /api/2.0/migration/init/{migratorName} | Parse migration archive |
| PortalPaymentApi | calculateWalletPayment | PUT /api/2.0/portal/payment/calculatewallet | Calculate the wallet payment amount |
| PortalPaymentApi | changeTenantWalletServiceState | POST /api/2.0/portal/payment/servicestate | Switch a wallet service |
| PortalPaymentApi | createCustomerMonthlyUsageReport | POST /api/2.0/portal/payment/customer/usage/monthly/report | Start the monthly usage report |
| PortalPaymentApi | createCustomerOperationsReport | POST /api/2.0/portal/payment/customer/operationsreport | Start the operations report |
| PortalPaymentApi | createCustomerServiceUsageReport | POST /api/2.0/portal/payment/customer/usage/report | Start the service usage report |
| PortalPaymentApi | getAccountingServicePrices | GET /api/2.0/portal/payment/accounting/prices/{serviceName} | Get the service prices from the accounting service |
| PortalPaymentApi | getActiveServices | GET /api/2.0/portal/payment/activeservices | Get the active wallet services |
| PortalPaymentApi | getAiPrices | GET /api/2.0/portal/payment/ai-prices | Get AI model prices |
| PortalPaymentApi | getCheckoutSetupUrl | GET /api/2.0/portal/payment/checkoutsetupurl | Get the checkout setup page URL |
| PortalPaymentApi | getCustomerBalance | GET /api/2.0/portal/payment/customer/balance | Get the customer balance |
| PortalPaymentApi | getCustomerInfo | GET /api/2.0/portal/payment/customerinfo | Get the customer information |
| PortalPaymentApi | getCustomerMonthlyUsage | GET /api/2.0/portal/payment/customer/usage/monthly | Get the customer monthly usage |
| PortalPaymentApi | getCustomerMonthlyUsageReport | GET /api/2.0/portal/payment/customer/usage/monthly/report | Get the monthly usage report status |
| PortalPaymentApi | getCustomerOperations | GET /api/2.0/portal/payment/customer/operations | Get the wallet operations |
| PortalPaymentApi | getCustomerOperationsReport | GET /api/2.0/portal/payment/customer/operationsreport | Get the operations report status |
| PortalPaymentApi | getCustomerServiceUsage | GET /api/2.0/portal/payment/customer/usage | Get the customer service usage |
| PortalPaymentApi | getCustomerServiceUsageReport | GET /api/2.0/portal/payment/customer/usage/report | Get the service usage report status |
| PortalPaymentApi | getPaymentAccount | GET /api/2.0/portal/payment/account | Get the billing account page |
| PortalPaymentApi | getPaymentCurrencies | GET /api/2.0/portal/payment/currencies | Get the billing currencies |
| PortalPaymentApi | getPaymentQuotas | GET /api/2.0/portal/payment/quotas | Get the purchasable quotas |
| PortalPaymentApi | getPaymentUrl | PUT /api/2.0/portal/payment/url | Get the payment page URL |
| PortalPaymentApi | getPortalPrices | GET /api/2.0/portal/payment/prices | Get the product prices |
| PortalPaymentApi | getQuotaPaymentInformation | GET /api/2.0/portal/payment/quota | Get the current plan and limits |
| PortalPaymentApi | getRestrictedAiModels | GET /api/2.0/portal/payment/ai-model/restrictions | Get restricted AI models |
| PortalPaymentApi | getSubscriptionBalanceInfo | GET /api/2.0/portal/payment/subscription/balance | Get the subscription balance information |
| PortalPaymentApi | getTenantWalletServiceSettings | GET /api/2.0/portal/payment/servicessettings | Get the wallet service settings |
| PortalPaymentApi | getTenantWalletSettings | GET /api/2.0/portal/payment/topupsettings | Get the auto top-up settings |
| PortalPaymentApi | getWalletService | GET /api/2.0/portal/payment/walletservice | Get a wallet service |
| PortalPaymentApi | getWalletServices | GET /api/2.0/portal/payment/walletservices | Get wallet services |
| PortalPaymentApi | moveSubscriptionToWallet | POST /api/2.0/portal/payment/subscription/movetowallet | Move the subscription to the wallet |
| PortalPaymentApi | sendPaymentRequest | POST /api/2.0/portal/payment/request | Contact the sales team |
| PortalPaymentApi | setRestrictedAiModels | PUT /api/2.0/portal/payment/ai-model/restrictions | Set restricted AI models |
| PortalPaymentApi | setTenantWalletSettings | POST /api/2.0/portal/payment/topupsettings | Set the auto top-up settings |
| PortalPaymentApi | terminateCustomerMonthlyUsageReport | DELETE /api/2.0/portal/payment/customer/usage/monthly/report | Terminate the monthly usage report |
| PortalPaymentApi | terminateCustomerOperationsReport | DELETE /api/2.0/portal/payment/customer/operationsreport | Terminate the operations report |
| PortalPaymentApi | terminateCustomerServiceUsageReport | DELETE /api/2.0/portal/payment/customer/usage/report | Terminate the service usage report |
| PortalPaymentApi | topUpDeposit | POST /api/2.0/portal/payment/deposit | Top up the wallet |
| PortalPaymentApi | updatePayment | PUT /api/2.0/portal/payment/update | Change the subscription quantity |
| PortalPaymentApi | updateWalletPayment | PUT /api/2.0/portal/payment/updatewallet | Change a wallet service quantity |
| PortalQuotaApi | getPortalQuota | GET /api/2.0/portal/quota | Get the portal quota |
| PortalQuotaApi | getPortalTariff | GET /api/2.0/portal/tariff | Get the portal tariff |
| PortalQuotaApi | getPortalUsedSpace | GET /api/2.0/portal/usedspace | Get the portal used space |
| PortalQuotaApi | getRightQuota | GET /api/2.0/portal/quota/right | Get the recommended quota |
| PortalQuotaApi | getUpcomingPayments | GET /api/2.0/portal/tariff/upcoming | Get upcoming payments |
| PortalSettingsApi | continuePortal | PUT /api/2.0/portal/continue | Restore a portal |
| PortalSettingsApi | deletePortal | DELETE /api/2.0/portal/delete | Delete a portal |
| PortalSettingsApi | getPortalInformation | GET /api/2.0/portal | Get portal information |
| PortalSettingsApi | getPortalPath | GET /api/2.0/portal/path | Get a path to the portal |
| PortalSettingsApi | sendDeleteInstructions | POST /api/2.0/portal/delete | Send removal instructions |
| PortalSettingsApi | sendSuspendInstructions | POST /api/2.0/portal/suspend | Send suspension instructions |
| PortalSettingsApi | suspendPortal | PUT /api/2.0/portal/suspend | Deactivate a portal |
| PortalUsersApi | createInvitationLink | POST /api/2.0/portal/users/invitationlink | Create an invitation link |
| PortalUsersApi | deleteInvitationLink | DELETE /api/2.0/portal/users/invitationlink | Delete an invitation link |
| PortalUsersApi | getInvitationLink | GET /api/2.0/portal/users/invite/{employeeType} | Get a legacy invitation link |
| PortalUsersApi | getInvitationLinkByEmployeeType | GET /api/2.0/portal/users/invitationlink/{employeeType} | Get an invitation link by role |
| PortalUsersApi | getPortalUsersCount | GET /api/2.0/portal/userscount | Get a number of portal users |
| PortalUsersApi | getUserById | GET /api/2.0/portal/users/{userID} | Get a portal user |
| PortalUsersApi | markGiftMessageAsRead | POST /api/2.0/portal/present/mark | Mark a gift message as read |
| PortalUsersApi | sendCongratulations | POST /api/2.0/portal/sendcongratulations | Send congratulations |
| PortalUsersApi | updateInvitationLink | PUT /api/2.0/portal/users/invitationlink | Update an invitation link |
| SecurityAccessToDevToolsApi | setTenantDevToolsAccessSettings | POST /api/2.0/settings/devtoolsaccess | Set the Developer Tools access settings |
| SecurityActiveConnectionsApi | getAllActiveConnections | GET /api/2.0/security/activeconnections | Get active connections |
| SecurityActiveConnectionsApi | logOutActiveConnection | PUT /api/2.0/security/activeconnections/logout/{loginEventId} | Log out one connection |
| SecurityActiveConnectionsApi | logOutAllActiveConnectionsChangePassword | PUT /api/2.0/security/activeconnections/logoutallchangepassword | Log out and reset password |
| SecurityActiveConnectionsApi | logOutAllActiveConnectionsForUser | PUT /api/2.0/security/activeconnections/logoutall/{userId} | Log out a user everywhere |
| SecurityActiveConnectionsApi | logOutAllExceptThisConnection | PUT /api/2.0/security/activeconnections/logoutallexceptthis | Log out other connections |
| SecurityAuditTrailDataApi | createAuditTrailReport | POST /api/2.0/security/audit/events/report | Start audit trail report |
| SecurityAuditTrailDataApi | getAuditEventsByFilter | GET /api/2.0/security/audit/events/filter | Get filtered audit events |
| SecurityAuditTrailDataApi | getAuditSettings | GET /api/2.0/security/audit/settings/lifetime | Get audit lifetime settings |
| SecurityAuditTrailDataApi | getAuditTrailMappers | GET /api/2.0/security/audit/mappers | Get audit trail mappers |
| SecurityAuditTrailDataApi | getAuditTrailReport | GET /api/2.0/security/audit/events/report | Get audit trail report status |
| SecurityAuditTrailDataApi | getAuditTrailTypes | GET /api/2.0/security/audit/types | Get audit trail types |
| SecurityAuditTrailDataApi | getLastAuditEvents | GET /api/2.0/security/audit/events/last | Get recent audit events |
| SecurityAuditTrailDataApi | setAuditSettings | POST /api/2.0/security/audit/settings/lifetime | Set audit lifetime settings |
| SecurityAuditTrailDataApi | terminateAuditTrailReport | DELETE /api/2.0/security/audit/events/report | Terminate audit trail report |
| SecurityBannersVisibilityApi | setTenantBannerSettings | POST /api/2.0/settings/banner | Set the banners visibility |
| SecurityCSPApi | configureCsp | POST /api/2.0/security/csp | Configure CSP settings |
| SecurityCSPApi | getCspSettings | GET /api/2.0/security/csp | Get CSP settings |
| SecurityFirebaseApi | docRegisterPusnNotificationDevice | POST /api/2.0/settings/push/docregisterdevice | Register a push device |
| SecurityFirebaseApi | subscribeDocumentsPushNotification | PUT /api/2.0/settings/push/docsubscribe | Set push subscription |
| SecurityLoginHistoryApi | createLoginHistoryReport | POST /api/2.0/security/audit/login/report | Start login history report |
| SecurityLoginHistoryApi | getLastLoginEvents | GET /api/2.0/security/audit/login/last | Get recent login events |
| SecurityLoginHistoryApi | getLoginEventsByFilter | GET /api/2.0/security/audit/login/filter | Get filtered login events |
| SecurityLoginHistoryApi | getLoginHistoryReport | GET /api/2.0/security/audit/login/report | Get login history report status |
| SecurityLoginHistoryApi | terminateLoginHistoryReport | DELETE /api/2.0/security/audit/login/report | Terminate login history report |
| SecurityOAuth2Api | generateJwtToken | GET /api/2.0/security/oauth2/token | Generate JWT token |
| SecuritySMTPSettingsApi | getSmtpOperationStatus | GET /api/2.0/smtpsettings/smtp/test/status | Get SMTP test status |
| SecuritySMTPSettingsApi | getSmtpSettings | GET /api/2.0/smtpsettings/smtp | Get SMTP settings |
| SecuritySMTPSettingsApi | resetSmtpSettings | DELETE /api/2.0/smtpsettings/smtp | Reset SMTP settings |
| SecuritySMTPSettingsApi | saveSmtpSettings | POST /api/2.0/smtpsettings/smtp | Save SMTP settings |
| SecuritySMTPSettingsApi | testSmtpSettings | GET /api/2.0/smtpsettings/smtp/test | Test SMTP settings |
| SettingsAccessToDevToolsApi | getTenantAccessDevToolsSettings | GET /api/2.0/settings/devtoolsaccess | Get the Developer Tools access settings |
| SettingsAuthorizationApi | getAuthServices | GET /api/2.0/settings/authservice | Get the authorization services |
| SettingsAuthorizationApi | saveAuthKeys | POST /api/2.0/settings/authservice | Save the authorization keys |
| SettingsAuthorizationApi | testExternalDatabaseConnection | POST /api/2.0/settings/authservice/externaldb/test | Test external database connection |
| SettingsBannersVisibilityApi | getTenantBannerSettings | GET /api/2.0/settings/banner | Get the banners visibility |
| SettingsCommonSettingsApi | closeAdminHelper | PUT /api/2.0/settings/closeadminhelper | Close the admin helper |
| SettingsCommonSettingsApi | completeWizard | PUT /api/2.0/settings/wizard/complete | Complete the Wizard settings |
| SettingsCommonSettingsApi | configureDeepLink | POST /api/2.0/settings/deeplink | Configure the deep link settings |
| SettingsCommonSettingsApi | deletePortalColorTheme | DELETE /api/2.0/settings/colortheme | Delete a color theme |
| SettingsCommonSettingsApi | getDeepLinkSettings | GET /api/2.0/settings/deeplink | Get the deep link settings |
| SettingsCommonSettingsApi | getPaymentSettings | GET /api/2.0/settings/payment | Get the payment settings |
| SettingsCommonSettingsApi | getPortalColorTheme | GET /api/2.0/settings/colortheme | Get a color theme |
| SettingsCommonSettingsApi | getPortalHostname | GET /api/2.0/settings/machine | Get the portal hostname |
| SettingsCommonSettingsApi | getPortalLogo | GET /api/2.0/settings/logo | Get a portal logo |
| SettingsCommonSettingsApi | getPortalSettings | GET /api/2.0/settings | Get the portal settings |
| SettingsCommonSettingsApi | getSocketSettings | GET /api/2.0/settings/socket | Get the socket settings |
| SettingsCommonSettingsApi | getSupportedCultures | GET /api/2.0/settings/cultures | Get supported languages |
| SettingsCommonSettingsApi | getTenantAiAccessSettings | GET /api/2.0/settings/ai-access | Get the AI access settings |
| SettingsCommonSettingsApi | getTenantUserInvitationSettings | GET /api/2.0/settings/invitationsettings | Get the user invitation settings |
| SettingsCommonSettingsApi | getTimeZones | GET /api/2.0/settings/timezones | Get time zones |
| SettingsCommonSettingsApi | saveDefaultFolder | PUT /api/2.0/settings/defaultfolder | Set the default folder |
| SettingsCommonSettingsApi | saveDnsSettings | PUT /api/2.0/settings/dns | Save the DNS settings |
| SettingsCommonSettingsApi | saveMailDomainSettings | POST /api/2.0/settings/maildomainsettings | Save the mail domain settings |
| SettingsCommonSettingsApi | savePortalColorTheme | PUT /api/2.0/settings/colortheme | Save a color theme |
| SettingsCommonSettingsApi | setTenantAiAccessSettings | POST /api/2.0/settings/ai-access | Set the AI access settings |
| SettingsCommonSettingsApi | updateEmailActivationSettings | PUT /api/2.0/settings/emailactivation | Update the email activation settings |
| SettingsCommonSettingsApi | updateInvitationSettings | PUT /api/2.0/settings/invitationsettings | Update the user invitation settings |
| SettingsCookiesApi | getCookieSettings | GET /api/2.0/settings/cookiesettings | Get the cookie lifetime settings |
| SettingsCookiesApi | updateCookieSettings | PUT /api/2.0/settings/cookiesettings | Update the cookie lifetime settings |
| SettingsDocsCloudApi | calculateDevPack | POST /api/2.0/settings/docscloud/calculatedevpack | Calculate the Docs Connect Dev Pack switch cost |
| SettingsDocsCloudApi | createTenantQuotaReport | POST /api/2.0/settings/docscloud/tenant/quota/report | Start the Docs Connect quota report |
| SettingsDocsCloudApi | getTenant | GET /api/2.0/settings/docscloud/tenant | Get the Docs Connect tenant |
| SettingsDocsCloudApi | getTenantConfig | GET /api/2.0/settings/docscloud/tenant/config | Get the Docs Connect tenant configuration |
| SettingsDocsCloudApi | getTenantInfo | GET /api/2.0/settings/docscloud/tenant/info | Get the Docs Connect tenant information |
| SettingsDocsCloudApi | getTenantQuota | GET /api/2.0/settings/docscloud/tenant/quota | Get the Docs Connect tenant quota |
| SettingsDocsCloudApi | getTenantQuotaReport | GET /api/2.0/settings/docscloud/tenant/quota/report | Get the Docs Connect quota report status |
| SettingsDocsCloudApi | getTenantUsage | GET /api/2.0/settings/docscloud/tenant/usage | Get the Docs Connect tenant usage |
| SettingsDocsCloudApi | startDocsCloudTrial | POST /api/2.0/settings/docscloud/trial | Start the Docs Connect trial |
| SettingsDocsCloudApi | switchToDevPack | POST /api/2.0/settings/docscloud/switchtodevpack | Switch Docs Connect to Docs Connect Dev Pack |
| SettingsDocsCloudApi | terminateTenantQuotaReport | DELETE /api/2.0/settings/docscloud/tenant/quota/report | Terminate the Docs Connect quota report |
| SettingsDocsCloudApi | updateTenantConfig | PUT /api/2.0/settings/docscloud/tenant/config | Update the Docs Connect tenant configuration |
| SettingsEncryptionApi | getStorageEncryptionProgress | GET /api/2.0/settings/encryption/progress | Get the storage encryption progress |
| SettingsEncryptionApi | getStorageEncryptionSettings | GET /api/2.0/settings/encryption/settings | Get the storage encryption settings |
| SettingsEncryptionApi | startStorageEncryption | POST /api/2.0/settings/encryption/start | Start the storage encryption |
| SettingsGreetingSettingsApi | getGreetingSettings | GET /api/2.0/settings/greetingsettings | Get greeting settings |
| SettingsGreetingSettingsApi | getIsDefaultGreetingSettings | GET /api/2.0/settings/greetingsettings/isdefault | Check the default greeting settings |
| SettingsGreetingSettingsApi | restoreGreetingSettings | POST /api/2.0/settings/greetingsettings/restore | Restore the greeting settings |
| SettingsGreetingSettingsApi | saveGreetingSettings | POST /api/2.0/settings/greetingsettings | Save the greeting settings |
| SettingsIPRestrictionsApi | getIpRestrictions | GET /api/2.0/settings/iprestrictions | Get IP restrictions |
| SettingsIPRestrictionsApi | readIpRestrictionsSettings | GET /api/2.0/settings/iprestrictions/settings | Get IP restriction settings |
| SettingsIPRestrictionsApi | saveIpRestrictions | PUT /api/2.0/settings/iprestrictions | Save IP restrictions |
| SettingsIPRestrictionsApi | updateIpRestrictionsSettings | PUT /api/2.0/settings/iprestrictions/settings | Update IP restriction settings |
| SettingsLicenseApi | acceptLicense | POST /api/2.0/settings/license/accept | Activate a license |
| SettingsLicenseApi | getIsLicenseRequired | GET /api/2.0/settings/license/required | Check if a license is required |
| SettingsLicenseApi | refreshLicense | GET /api/2.0/settings/license/refresh | Refresh the license |
| SettingsLicenseApi | uploadLicense | POST /api/2.0/settings/license | Upload a license |
| SettingsLoginSettingsApi | getLoginSettings | GET /api/2.0/settings/security/loginsettings | Get login settings |
| SettingsLoginSettingsApi | setDefaultLoginSettings | DELETE /api/2.0/settings/security/loginsettings | Reset login settings |
| SettingsLoginSettingsApi | updateLoginSettings | PUT /api/2.0/settings/security/loginsettings | Update login settings |
| SettingsMessagesApi | enableAdminMessageSettings | POST /api/2.0/settings/messagesettings | Enable or disable administrator messages |
| SettingsMessagesApi | sendAdminMail | POST /api/2.0/settings/sendadmmail | Send a message to the administrator |
| SettingsMessagesApi | sendJoinInviteMail | POST /api/2.0/settings/sendjoininvite | Send an invitation email |
| SettingsNotificationsApi | getNotificationChannels | GET /api/2.0/settings/notification/channels | Get notification channels |
| SettingsNotificationsApi | getNotificationSettings | GET /api/2.0/settings/notification/{type} | Check notification availability |
| SettingsNotificationsApi | getRoomsNotificationSettings | GET /api/2.0/settings/notification/rooms | Get muted rooms |
| SettingsNotificationsApi | setNotificationSettings | POST /api/2.0/settings/notification | Set notification status |
| SettingsNotificationsApi | setRoomsNotificationStatus | POST /api/2.0/settings/notification/rooms | Mute or unmute a room |
| SettingsOwnerApi | sendOwnerChangeInstructions | POST /api/2.0/settings/owner | Start the portal owner change |
| SettingsOwnerApi | updatePortalOwner | PUT /api/2.0/settings/owner | Confirm the portal owner change |
| SettingsQuotaApi | getUserQuotaSettings | GET /api/2.0/settings/userquotasettings | Get the user quota settings |
| SettingsQuotaApi | saveAiAgentQuotaSettings | POST /api/2.0/settings/aiagentquotasettings | Save the AI Agent quota settings |
| SettingsQuotaApi | saveRoomQuotaSettings | POST /api/2.0/settings/roomquotasettings | Save the room quota settings |
| SettingsQuotaApi | setTenantQuotaSettings | PUT /api/2.0/settings/tenantquotasettings | Save the tenant quota settings |
| SettingsRebrandingApi | deleteAdditionalWhiteLabelSettings | DELETE /api/2.0/settings/rebranding/additional | Delete the additional white label settings |
| SettingsRebrandingApi | deleteCompanyWhiteLabelSettings | DELETE /api/2.0/settings/rebranding/company | Delete the company white label settings |
| SettingsRebrandingApi | getAdditionalWhiteLabelSettings | GET /api/2.0/settings/rebranding/additional | Get the additional white label settings |
| SettingsRebrandingApi | getCompanyWhiteLabelSettings | GET /api/2.0/settings/rebranding/company | Get the company white label settings |
| SettingsRebrandingApi | getEnableWhitelabel | GET /api/2.0/settings/enablewhitelabel | Check the white label availability |
| SettingsRebrandingApi | getIsDefaultWhiteLabelLogoText | GET /api/2.0/settings/whitelabel/logotext/isdefault | Check the default logo text |
| SettingsRebrandingApi | getIsDefaultWhiteLabelLogos | GET /api/2.0/settings/whitelabel/logos/isdefault | Check the default white label logos |
| SettingsRebrandingApi | getLicensorData | GET /api/2.0/settings/companywhitelabel | Get the licensor data |
| SettingsRebrandingApi | getWhiteLabelLogoText | GET /api/2.0/settings/whitelabel/logotext | Get the white label logo text |
| SettingsRebrandingApi | getWhiteLabelLogos | GET /api/2.0/settings/whitelabel/logos | Get the white label logos |
| SettingsRebrandingApi | restoreWhiteLabelLogoText | PUT /api/2.0/settings/whitelabel/logotext/restore | Restore the white label logo text |
| SettingsRebrandingApi | restoreWhiteLabelLogos | PUT /api/2.0/settings/whitelabel/logos/restore | Restore the white label logos |
| SettingsRebrandingApi | saveAdditionalWhiteLabelSettings | POST /api/2.0/settings/rebranding/additional | Save the additional white label settings |
| SettingsRebrandingApi | saveCompanyWhiteLabelSettings | POST /api/2.0/settings/rebranding/company | Save the company white label settings |
| SettingsRebrandingApi | saveWhiteLabelLogoText | POST /api/2.0/settings/whitelabel/logotext/save | Save the white label logo text |
| SettingsRebrandingApi | saveWhiteLabelSettings | POST /api/2.0/settings/whitelabel/logos/save | Save the white label logos |
| SettingsRebrandingApi | saveWhiteLabelSettingsFromFiles | POST /api/2.0/settings/whitelabel/logos/savefromfiles | Save the logos from files |
| SettingsSSOApi | getDefaultSsoSettingsV2 | GET /api/2.0/settings/ssov2/default | Get the default SSO settings |
| SettingsSSOApi | getSsoSettingsV2 | GET /api/2.0/settings/ssov2 | Get the SSO settings |
| SettingsSSOApi | getSsoSettingsV2Constants | GET /api/2.0/settings/ssov2/constants | Get the SSO settings constants |
| SettingsSSOApi | resetSsoSettingsV2 | DELETE /api/2.0/settings/ssov2 | Reset the SSO settings |
| SettingsSSOApi | saveSsoSettingsV2 | POST /api/2.0/settings/ssov2 | Save the SSO settings |
| SettingsSecurityApi | getEnabledModules | GET /api/2.0/settings/security/modules | Get enabled modules |
| SettingsSecurityApi | getIsProductAdministrator | GET /api/2.0/settings/security/administrator | Check product administrator |
| SettingsSecurityApi | getPasswordSettings | GET /api/2.0/settings/security/password | Get password settings |
| SettingsSecurityApi | getProductAdministrators | GET /api/2.0/settings/security/administrator/{productid} | Get product administrators |
| SettingsSecurityApi | getWebItemSecurityInfo | GET /api/2.0/settings/security/{id} | Check module availability |
| SettingsSecurityApi | getWebItemSettingsSecurityInfo | GET /api/2.0/settings/security | Get module access settings |
| SettingsSecurityApi | setAccessToWebItems | PUT /api/2.0/settings/security/access | Set access to modules in bulk |
| SettingsSecurityApi | setProductAdministrator | PUT /api/2.0/settings/security/administrator | Set product administrator |
| SettingsSecurityApi | setWebItemSecurity | PUT /api/2.0/settings/security | Set module access |
| SettingsSecurityApi | updatePasswordSettings | PUT /api/2.0/settings/security/password | Update password settings |
| SettingsStatisticsApi | getSpaceUsageStatistics | GET /api/2.0/settings/statistics/spaceusage/{id} | Get the space usage statistics |
| SettingsStorageApi | getAllBackupStorages | GET /api/2.0/settings/storage/backup | Get the backup storages |
| SettingsStorageApi | getAllCdnStorages | GET /api/2.0/settings/storage/cdn | Get the CDN storages |
| SettingsStorageApi | getAllStorages | GET /api/2.0/settings/storage | Get the portal storages |
| SettingsStorageApi | getAmazonS3Regions | GET /api/2.0/settings/storage/s3/regions | Get the Amazon S3 regions |
| SettingsStorageApi | getStorageProgress | GET /api/2.0/settings/storage/progress | Get the storage migration progress |
| SettingsStorageApi | resetCdnToDefault | DELETE /api/2.0/settings/storage/cdn | Reset the CDN storage settings |
| SettingsStorageApi | resetStorageToDefault | DELETE /api/2.0/settings/storage | Reset the storage settings |
| SettingsStorageApi | updateCdnStorage | PUT /api/2.0/settings/storage/cdn | Update the CDN storage |
| SettingsStorageApi | updateStorage | PUT /api/2.0/settings/storage | Switch the portal storage |
| SettingsTFASettingsApi | getTfaAppCodes | GET /api/2.0/settings/tfaappcodes | Get the TFA backup codes |
| SettingsTFASettingsApi | getTfaConfirmData | GET /api/2.0/settings/tfaapp/confirm | Get TFA confirmation data |
| SettingsTFASettingsApi | getTfaSettings | GET /api/2.0/settings/tfaapp | Get the TFA settings |
| SettingsTFASettingsApi | tfaAppGenerateSetupCode | GET /api/2.0/settings/tfaapp/setup | Generate the TFA setup code |
| SettingsTFASettingsApi | tfaValidateAuthCode | POST /api/2.0/settings/tfaapp/validate | Validate the TFA code |
| SettingsTFASettingsApi | unlinkTfaApp | PUT /api/2.0/settings/tfaappnewapp | Unlink the TFA application |
| SettingsTFASettingsApi | updateTfaAppCodes | PUT /api/2.0/settings/tfaappnewcodes | Regenerate the TFA backup codes |
| SettingsTFASettingsApi | updateTfaSettings | PUT /api/2.0/settings/tfaapp | Update the TFA settings |
| SettingsTFASettingsApi | updateTfaSettingsLink | PUT /api/2.0/settings/tfaappwithlink | Update TFA settings with a link |
| SettingsTelegramApi | checkTelegram | GET /api/2.0/settings/telegram/check | Check the Telegram connection |
| SettingsTelegramApi | linkTelegram | GET /api/2.0/settings/telegram/link | Get the Telegram link |
| SettingsTelegramApi | unlinkTelegram | DELETE /api/2.0/settings/telegram/link | Unlink Telegram |
| SettingsWebhooksApi | createWebhook | POST /api/2.0/settings/webhook | Create a webhook |
| SettingsWebhooksApi | enableWebhook | PUT /api/2.0/settings/webhook/enable | Switch a webhook on or off |
| SettingsWebhooksApi | getTenantWebhooks | GET /api/2.0/settings/webhook | Get the portal webhooks |
| SettingsWebhooksApi | getWebhookTriggers | GET /api/2.0/settings/webhook/triggers | Get the webhook triggers |
| SettingsWebhooksApi | getWebhooksLogs | GET /api/2.0/settings/webhooks/log | Get the webhook delivery log |
| SettingsWebhooksApi | removeWebhook | DELETE /api/2.0/settings/webhook/{id} | Remove a webhook |
| SettingsWebhooksApi | retryWebhook | PUT /api/2.0/settings/webhook/{id}/retry | Retry a webhook delivery |
| SettingsWebhooksApi | retryWebhooks | PUT /api/2.0/settings/webhook/retry | Retry webhook deliveries |
| SettingsWebhooksApi | updateWebhook | PUT /api/2.0/settings/webhook | Update a webhook |
| SettingsWebpluginsApi | addWebPluginFromFile | POST /api/2.0/settings/webplugins | Add a web plugin |
| SettingsWebpluginsApi | deleteWebPlugin | DELETE /api/2.0/settings/webplugins/{name} | Delete a web plugin |
| SettingsWebpluginsApi | getWebPlugin | GET /api/2.0/settings/webplugins/{name} | Get a web plugin by name |
| SettingsWebpluginsApi | getWebPlugins | GET /api/2.0/settings/webplugins | Get web plugins |
| SettingsWebpluginsApi | updateWebPlugin | PUT /api/2.0/settings/webplugins/{name} | Update a web plugin |
| ThirdPartyApi | getThirdPartyCode | GET /api/2.0/thirdparty/{provider} | Get provider consent URL |
AppsApi
get
AppWrapper get(id)
GET /api/2.0/apps/{id}
Get an app
Returns one portal application by its identifier - one of the feature modules the portal can turn on, such as ai-rooms or docs-cloud - with the enabled state and the settings document stored for the current portal. The identifier must be an application declared in the installation configuration: take it from GET api/2.0/apps, because an unknown identifier is rejected instead of creating anything. Any authenticated portal member may read it. The call is read-only and idempotent. The result carries the identifier, the enabled flag of the current portal and the settings JSON document, which is empty while the portal has never saved settings for this application. An application that is not configured on this installation fails with 404, so this is also the way to find out whether an application exists here at all. Use GET api/2.0/apps to read all applications in one call, or GET api/2.0/apps/{id}/settings when only the settings document is needed.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | String | The application to read, by the identifier GET api/2.0/apps reports - one of the feature modules the portal can turn on, such as ai-room or docs-cloud. An identifier not declared in the installation configuration answers 404, which is also how a caller learns that an application does not exist here. | [required] [example: ai-room] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The application with the enabled state and the settings of the current portal | AppWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 404 | No application with this identifier is configured on this installation | - | - |
| 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
getAll
AppArrayWrapper getAll()
GET /api/2.0/apps
Get all apps
Returns every portal application available on this installation, each with the state it has for the current portal: the feature modules the portal can turn on and configure, such as ai-rooms or docs-cloud. The set of applications and their initial enabled state come from the installation configuration and cannot be changed through the API; only the enabled flag and the settings document are stored per portal, by PUT api/2.0/apps/{id}/enabled and PUT api/2.0/apps/{id}/settings. Any authenticated portal member may read the list. The call is read-only and idempotent. The list follows the order of the configuration, and every item carries the application identifier, whether the application is enabled for the current portal, and the settings JSON document saved for it, which is empty while the portal has never saved one. An empty list means that no applications are configured on this installation, not that they are all disabled. There is neither paging nor filtering here: to read a single application use GET api/2.0/apps/{id}.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The portal applications configured on this installation, each with the enabled state and the settings of the current portal | AppArrayWrapper | 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
getSettings
UnknownNullableWrapper getSettings(id)
GET /api/2.0/apps/{id}/settings
Get app settings
Returns only the settings document of one portal application, such as ai-rooms or docs-cloud: the JSON that the current portal has saved for it through PUT api/2.0/apps/{id}/settings, with no wrapper around it. The identifier must be an application declared in the installation configuration, as listed by GET api/2.0/apps. Any authenticated portal member may read it. The call is read-only and idempotent. The document comes back exactly as it was saved: its shape is defined by the application itself and is not validated by the portal, and an empty result means that the portal has never saved settings for this application, so the application uses its own defaults. The enabled state is not part of the answer: read it from GET api/2.0/apps/{id}.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | String | The application to read, by the identifier GET api/2.0/apps reports - one of the feature modules the portal can turn on, such as ai-room or docs-cloud. An identifier not declared in the installation configuration answers 404, which is also how a caller learns that an application does not exist here. | [required] [example: ai-room] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The settings document saved for the application, or an empty result if the portal has never saved one | UnknownNullableWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 404 | No application with this identifier is configured on this installation | - | - |
| 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
setEnabled
AppWrapper setEnabled(id, SetAppEnabledBody)
PUT /api/2.0/apps/{id}/enabled
Enable or disable an app
Turns one portal application on or off for the current portal, and notifies the clients connected to the portal so that they can show or hide it without being reloaded. The identifier must be an application declared in the installation configuration, as listed by GET api/2.0/apps. The caller must be a portal administrator allowed to edit the portal settings. The call is mutating and idempotent: it stores the flag for this portal, overriding the default that the configuration gives the application, and repeating it with the same value changes nothing. Disabling an application does not delete its settings document, which stays saved and applies again as soon as the application is enabled. The response is the application in its new state, including that settings document. Only the enabled flag is affected here: to change the settings document use PUT api/2.0/apps/{id}/settings.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | String | The application to switch, by the identifier GET api/2.0/apps reports. It has to be an application declared in the installation configuration; an unknown identifier answers 404 rather than creating anything. | [required] [example: ai-room] |
| SetAppEnabledBody | body | SetAppEnabledBody | The new state of the application. Only the enabled flag travels here; the settings document is changed through PUT api/2.0/apps/{id}/settings. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The application in its new state, with the saved settings document left untouched | AppWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not allowed to edit the portal settings | - | - |
| 404 | No application with this identifier is configured on this installation | - | - |
| 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
setSettings
AppWrapper setSettings(id, SetAppSettingsBody)
PUT /api/2.0/apps/{id}/settings
Save app settings
Stores the application-specific settings document of one portal application for the current portal. The identifier must be an application declared in the installation configuration, as listed by GET api/2.0/apps. The caller must be a portal administrator allowed to edit the portal settings. The call is mutating and idempotent, and it replaces the whole document instead of merging into it: read the current one with GET api/2.0/apps/{id}/settings, change it and send it back complete, or send null to drop the saved document and let the application fall back to its own defaults. Any valid JSON value is accepted, since the content is stored as it is and is interpreted by the application rather than by the portal, while a body that is not valid JSON fails with 400 and stores nothing. The response is the application in its new state, with the stored document echoed back. Unlike PUT api/2.0/apps/{id}/enabled, this operation sends no notification to the connected clients, which pick the new settings up on their next read.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | String | The application whose configuration is stored, by the identifier GET api/2.0/apps reports. An identifier not declared in the installation configuration answers 404. | [required] [example: ai-room] |
| SetAppSettingsBody | body | SetAppSettingsBody | The configuration to store for this portal, replacing whatever was stored before. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The application in its new state, with the stored settings document | AppWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The request body is not a valid JSON document, so no settings are stored | - | - |
| 403 | The caller is not allowed to edit the portal settings | - | - |
| 404 | No application with this identifier is configured on this installation | - | - |
| 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
AuthenticationApi
authenticateMe
AuthenticationTokenWrapper authenticateMe(AuthRequestsDto)
POST /api/2.0/authentication
Authenticate a user
Signs a user in to the current portal and either issues the authentication token or reports which second factor is still missing. Credentials go in the body as userName with password or passwordHash, as the key of a confirmation link in confirmData, or as a third-party account (provider with accessToken, or serializedProfile), which only a standalone installation or a tariff with third-party sign-in allows. Open to unauthenticated callers, mutating and not idempotent: it writes a login event, sets the portal cookies and counts every failure against the brute-force limit. When a second factor is required for this user the answer carries no token but sms with the masked phone number - or a confirmUrl pointing at POST api/2.0/authentication/setphone while no number is activated yet - or tfa with the setup key while the authenticator app is not connected; submit the code to POST api/2.0/authentication/{code} to finish such a sign-in. Otherwise the answer carries token for the Authorization header and expires, which is omitted when session=true ties the token to the browser session. An unknown user fails with 404, rejected credentials with 401, a disabled or blocked user with 403.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| AuthRequestsDto | body | AuthRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The authentication token, or the second factor that has to be passed before a token is issued | AuthenticationTokenWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The request body could not be validated, for example confirmData.email is not an email address | - | - |
| 401 | The password, the confirmation key or the third-party profile was rejected, or third-party sign-in is not allowed for this portal | - | - |
| 403 | The user is disabled, or too many failed attempts and CAPTCHA failures have blocked further sign-ins for these credentials | - | - |
| 404 | No user of this portal matches the credentials in the request body | - | - |
| 429 | The portal rate limiter rejected the call - retry after the interval in the Retry-After header | 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: application/json
- Accept: application/json
authenticateMeFromBodyWithCode
AuthenticationTokenWrapper authenticateMeFromBodyWithCode(code, AuthWithCodeRequestsDto)
POST /api/2.0/authentication/{code}
Authenticate a user by code
Finishes a two-factor sign-in: checks the one-time code and, when it matches, issues the authentication token. Call it only after POST api/2.0/authentication answered with sms or tfa set, and repeat the same credentials in the body next to code - the code alone does not identify the user. The code comes from the SMS the portal sent, which POST api/2.0/authentication/sendsms resends, or from the authenticator app; whichever second factor the portal has enabled for this user is the one checked here. Open to unauthenticated callers, mutating and not idempotent: a code is single-use, the sign-in is written to the login history, and the first code accepted from an authenticator app also connects that app to the user. The answer carries token for the Authorization header, expires unless session=true tied the token to the browser session, and either sms with the masked phone number or tfa. A wrong, empty or expired code fails with 401 and counts against the brute-force limit, which then refuses further attempts with 403.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| code | path | String | The two-factor authentication code. Send the same value as the code of the request body, which is the one the handler reads. | [required] |
| AuthWithCodeRequestsDto | body | AuthWithCodeRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The authentication token to send in the Authorization header, together with the second factor that was accepted | AuthenticationTokenWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The request body could not be validated, for example confirmData.email is not an email address | - | - |
| 401 | The credentials were rejected, or the two-factor code is wrong, empty or expired | - | - |
| 403 | The user is disabled, or too many failed attempts have blocked further sign-ins for these credentials | - | - |
| 404 | No user of this portal matches the credentials in the request body | - | - |
| 429 | The portal rate limiter rejected the call - retry after the interval in the Retry-After header | 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: application/json
- Accept: application/json
checkConfirm
ConfirmWrapper checkConfirm(EmailValidationKeyModel)
POST /api/2.0/authentication/confirm
Check a confirmation link
Checks the key of a confirmation link that the portal sent by email and reports whether the action behind that link can still be carried out - an employee invitation, phone activation, a password change, portal removal and so on. Take key and type from the query string of the link; when key is left empty, the key saved in the confirmation cookie of the same type is used instead. Open to unauthenticated callers and read-only: it neither accepts the invitation nor signs anyone in. result is Ok when the link may be used, Invalid when the key does not match the type or the email, Expired when it is too old, and TariffLimit, UserExisted, UserExcluded or QuotaFailed when the key is sound but the invitation behind it cannot be accepted. Only Ok should be followed by the operation that performs the action - POST api/2.0/people with fromInviteLink for an invitation, POST api/2.0/authentication with confirmData for a sign-in link - and for an invitation to a room the answer also carries the identifier and the title of that room.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| EmailValidationKeyModel | body | EmailValidationKeyModel | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Whether the confirmation link may be used, with the room and the email it was issued for when it is an invitation | ConfirmWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The portal's IP restrictions do not allow this address to check an invitation link | - | - |
| 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
getIsAuthentificated
BooleanWrapper getIsAuthentificated()
GET /api/2.0/authentication
Check authentication
Reports whether the credentials that came with this very request identify a signed-in user of the current portal - the authentication cookie, or the token in the Authorization header. Nothing has to be called first: the operation is open to unauthenticated callers, who simply get false, it is read-only and idempotent, and it answers even while the portal's payment has lapsed. The result is a bare boolean that carries no reason, so false covers a missing, malformed, expired and revoked token alike; the way to recover from it is to sign in again with POST api/2.0/authentication. It says nothing about who the caller is or how long the session still lasts - read GET api/2.0/people/@self for the profile behind the token.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true when the request carries a valid token or cookie of an active portal user, false in every other case | BooleanWrapper | 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
logout
StringWrapper logout()
POST /api/2.0/authentication/logout
Log out
Ends the session the request itself was made with: the login event behind the authentication cookie is closed, the sockets opened for it are disconnected, the portal cookies are cleared and a logout event is written to the login history. Send it with the cookie or token of the session that is to be closed; an anonymous call is accepted and closes nothing. The operation is mutating and idempotent - the same session cannot be closed twice - and it touches only that one session: the other sessions of the same user stay alive and are ended by PUT api/2.0/security/activeconnections/logoutallexceptthis or PUT api/2.0/security/activeconnections/logout/{loginEventId}. The answer is a single logout URL when the user signed in through SSO and the portal has an SLO endpoint configured, and the client has to open that URL to end the session on the identity provider as well; for everyone else it is empty and nothing more is needed.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The single logout URL to open when the user signed in through SSO, or an empty result when no further action is needed | StringWrapper | 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
saveMobilePhone
AuthenticationTokenWrapper saveMobilePhone(MobileRequestsDto)
POST /api/2.0/authentication/setphone
Set a mobile phone
Stores the mobile phone number of a user who is going through phone activation and sends the first SMS authentication code to it. It is reachable only with the phone-activation confirmation link that POST api/2.0/authentication returns in confirmUrl when SMS two-factor is required and the user has no activated number yet: that link authorizes the call in place of an authentication token, and no token is issued here. The operation is mutating and not idempotent - it saves the number as not activated, writes an audit event and sends a message - and an already activated number is not replaced this way, the stored number has to be erased first. The answer carries sms, the masked number and expires, the moment the code stops being accepted. Submit that code to POST api/2.0/authentication/{code}, which signs the user in and marks the number activated, or ask for another one with POST api/2.0/authentication/sendsms.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| MobileRequestsDto | body | MobileRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The masked phone number the code was sent to and the moment that code expires - no authentication token yet | AuthenticationTokenWrapper | 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
sendSmsCode
AuthenticationTokenWrapper sendSmsCode(AuthRequestsDto)
POST /api/2.0/authentication/sendsms
Send SMS code
Sends a new SMS authentication code to the phone number stored for the user and reports when that code expires. The credentials in the body are checked exactly as by POST api/2.0/authentication, so use this operation to resend the code after that call answered with sms; the user needs SMS two-factor enabled and a phone number already stored, which POST api/2.0/authentication/setphone registers. Open to unauthenticated callers, mutating and not idempotent: every call sends a message, is counted in the portal's SMS usage and spends one of the few codes a number is allowed within the code lifetime (ten minutes by default), after which the call fails until those codes expire. Codes sent earlier stay valid, so a resent code does not invalidate them, and the first one to be accepted invalidates all of them. The answer carries sms, the masked number and expires, and no token - submit the code to POST api/2.0/authentication/{code}.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| AuthRequestsDto | body | AuthRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The masked phone number the code was sent to and the moment that code expires - no authentication token yet | AuthenticationTokenWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The request body could not be validated, for example confirmData.email is not an email address | - | - |
| 401 | The password, the confirmation key or the third-party profile was rejected | - | - |
| 403 | The user is disabled, or too many failed attempts have blocked further sign-ins for these credentials | - | - |
| 404 | No user of this portal matches the credentials in the request body | - | - |
| 429 | The portal rate limiter rejected the call - retry after the interval in the Retry-After header | 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: application/json
- Accept: application/json
CapabilitiesApi
getPortalCapabilities
CapabilitiesWrapper getPortalCapabilities()
GET /api/2.0/capabilities
Get portal capabilities
Returns the sign-in methods this portal offers, which a login client needs before anyone has signed in: LDAP authentication and its domain, the external identity providers to show, the SAML single sign-on URL and its label, and whether the built-in identity server is available. No token is needed and nothing has to be called first - the operation is open to unauthenticated callers, answers even while the portal's payment has lapsed, and is read-only and idempotent. providers holds provider keys such as google or facebook, ordered for the country detected from the caller's IP address and reduced to the ones this installation has configured; pass one of them as provider to POST api/2.0/authentication. An empty providers means external sign-in is off and an empty ssoUrl means single sign-on is off; a capability whose settings cannot be read is reported as disabled rather than failing the call, so a false flag means the method is not offered, not that it is unknown. The answer describes the portal and never a user, and carries none of the configuration behind these methods: an administrator reads that from GET api/2.0/settings/ssov2 and GET api/2.0/settings/authservice.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The sign-in methods the portal offers: LDAP, the external identity providers, single sign-on and the identity server, each with the state it has for this portal | CapabilitiesWrapper | 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
MigrationApi
cancelMigration
cancelMigration()
POST /api/2.0/migration/cancel
Cancel migration
Stops the parse pass queued for this portal and deletes the backup uploaded for it - the way back from a wrong archive or a wrong migrator name. Nothing has to be called first and a DocSpace administrator is required; the request is only queued, so the parse ends shortly after the call returns and GET api/2.0/migration/status stops reporting it. The call is destructive for the uploaded data: the whole upload folder is removed and the backup has to be sent to migrationFileUpload.ashx again before a new parse. It is idempotent - cancelling when nothing is running still answers 200 - and it undoes nothing that was already written to the portal. Only the parse stage is stopped, the job whose parseResult.operation is parse: an import started by POST api/2.0/migration/migrate keeps running, and a finished import is discarded with POST api/2.0/migration/clear instead.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The cancellation has been queued; the parse stops and the uploaded backup is deleted. The response carries no content | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not 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
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
clearMigration
clearMigration()
POST /api/2.0/migration/clear
Clear migration
Discards a finished import and deletes the data uploaded for it, freeing the portal for the next one. Call it once GET api/2.0/migration/status reports isCompleted for a job whose parseResult.operation is migration; a DocSpace administrator is required. Only the queued job and the temporary upload folder go - the users, groups and files already imported stay in the portal - so the call destroys migration data alone, and it is idempotent: clearing twice, or with nothing to clear, still answers 200. Like the other write operations here it is only queued, and once it has run GET api/2.0/migration/status returns an empty result and GET api/2.0/migration/logs answers 404, so download the log before calling it. A parse that is still running is not affected - stop that with POST api/2.0/migration/cancel - and POST api/2.0/migration/finish performs the same clean-up itself, which makes this call unnecessary after it.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The clean-up has been queued; the finished import is dropped and the uploaded data deleted. The response carries no content | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not 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
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
finishMigration
finishMigration(FinishDto)
POST /api/2.0/migration/finish
Finish migration
Closes a completed import: it can send every user the import created the activation email they need before they can sign in, and it then discards the job and the data uploaded for it. Call it once GET api/2.0/migration/status reports isCompleted for the import; a DocSpace administrator is required, and with isSendWelcomeEmail set to true the job must still be in the queue, so do not clear it first. That flag decides what happens to the imported people: true mails the activation link to each of them who has not activated their account yet and skips the ones that are already active, false ends the import quietly and leaves inviting them for later. The call writes to the portal and is not idempotent - the emails go out again on every call - while its second half repeats what POST api/2.0/migration/clear does, removing the finished job and the uploaded backup and leaving everything already imported in place. It answers with an empty body, after which GET api/2.0/migration/status returns an empty result and GET api/2.0/migration/logs answers 404, so download the log first.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| FinishDto | body | FinishDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The activation emails have been sent if they were asked for and the clean-up has been queued. The response carries no content | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator | - | - |
| 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
getMigrationLogs
getMigrationLogs()
GET /api/2.0/migration/logs
Get migration logs
Downloads the log of the parse or import the portal currently holds - the step-by-step record behind the numbers and the single error message of GET api/2.0/migration/status, and the place where the reason for a skipped user or file is written. The portal has to hold such a job, started by POST api/2.0/migration/init/{migratorName} or POST api/2.0/migration/migrate and not yet removed by POST api/2.0/migration/clear or POST api/2.0/migration/finish, otherwise the call answers 404; a DocSpace administrator is required and the call is read-only and idempotent. The body is not JSON: it is text/plain; charset=UTF-8 sent as an attachment named migration.log, one line per step with the progress it reported. Each job writes its own log, so this always returns the log of the job that GET api/2.0/migration/status describes, and while that job runs the file keeps growing - a call made early returns only the part written so far and may be repeated later for the rest.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The log of the current job as a text/plain attachment named migration.log | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator | - | - |
| 404 | The portal holds no parse or import whose log could be returned | - | - |
| 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
getMigrationStatus
MigrationStatusWrapper getMigrationStatus()
GET /api/2.0/migration/status
Get migration status
Returns how far the parse or the import queued for this portal has got and, once it stopped, what it produced - the one place where every other operation in this group reports what it did. Any of them may be polled from here as soon as it returns; a DocSpace administrator is required and the call is read-only and idempotent. progress is the share of the job that is done, from 0 to 100, and isCompleted turns true when the job stopped whether it succeeded or not, so read error as well: it stays empty while nothing went wrong and otherwise holds the message that ended the job. parseResult carries what the migrator has read so far - after a parse pass the users, groups and unreadable archives to edit and post to POST api/2.0/migration/migrate, and during an import also successedUsers and failedUsers - and its operation field, parse or migration, tells the two stages apart. The result is empty with status 200 when the portal has no job at all, because none was ever started or because POST api/2.0/migration/clear or POST api/2.0/migration/finish has removed the last one; an empty answer is therefore not an error. Line-by-line detail behind the numbers is in GET api/2.0/migration/logs.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of the parse or import queued for the portal, or an empty result when the portal has no job | MigrationStatusWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not 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: Not defined
- Accept: application/json
listMigrations
STRINGArrayWrapper listMigrations()
GET /api/2.0/migration/list
Get available migrators
Lists the source products this installation can import a portal from, as the migrator names every other operation in this group expects. Nothing has to be called first, a DocSpace administrator is required as everywhere here, and the call is read-only and idempotent. The answer is a plain list of names such as GoogleWorkspace, Nextcloud or Workspace, never localized and ordered as the migrators are registered; pass one of them as migratorName to POST api/2.0/migration/init/{migratorName}, where the match ignores case. The list depends on the installation rather than on the portal, so it does not change while the portal runs, and a name that is not in it is not rejected by the operation that takes it - the queued job ends with the failure reported in error of GET api/2.0/migration/status.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The names of the migrators this installation can import from, in registration order | STRINGArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not 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: Not defined
- Accept: application/json
startMigration
startMigration(MigrationApiInfo)
POST /api/2.0/migration/migrate
Start migration
Starts the import itself: the users, the groups and the files selected in the request body are created on this portal from the backup that the parse pass has read. Run POST api/2.0/migration/init/{migratorName} first and wait for isCompleted in GET api/2.0/migration/status, then send parseResult from that answer back here with shouldImport set on the users and groups to take and the import...Files flags set for the content to copy. A DocSpace administrator is required, and importing a user as DocSpaceAdmin additionally requires the caller to be the portal owner unless a user with that email is an administrator of this portal already, otherwise the whole call is rejected with 403 before anything is imported. The job is queued and the call answers with an empty body at once: watch progress, successedUsers, failedUsers and error in GET api/2.0/migration/status and read what each step did from GET api/2.0/migration/logs. The import writes to the portal and cannot be undone, and a repeat is no help: a call made while the job runs is ignored, and once the job has ended the uploaded backup is deleted, so a new call has nothing to read until the archive is uploaded and parsed again. When the import is done, close it with POST api/2.0/migration/finish, which can also mail the imported users their activation link.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| MigrationApiInfo | body | MigrationApiInfo | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The import has been queued; the response carries no content and the progress is read from GET api/2.0/migration/status | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The request body is missing or could not be read as a parse result | - | - |
| 403 | The caller is not a DocSpace administrator, or is not the portal owner and asked to import a user as DocSpaceAdmin who is not an administrator of this portal yet | - | - |
| 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: application/json
- Accept: application/json
uploadAndInitializeMigration
uploadAndInitializeMigration(migratorName)
POST /api/2.0/migration/init/{migratorName}
Parse migration archive
Queues a pass that reads the backup already uploaded for this portal with the migrator named in the path and reports what it holds - the users, the users that carry no email address, the users that exist on this portal already, the groups and the archives it could not open - so that the caller can choose what to import. Upload the backup first: migrationFileUpload.ashx?Init=true opens a new upload folder and drops the previous one, then every part of the archive is posted to the same handler with Name set to its file name; take migratorName from GET api/2.0/migration/list. A DocSpace administrator is required. The call only queues the job and answers at once with an empty body: poll GET api/2.0/migration/status until isCompleted is true, then read what was found from parseResult and any failure from error. Nothing is imported here and the portal is not changed - the parse result is the body to edit and send to POST api/2.0/migration/migrate. A portal runs one job at a time, so a call made while another parse or import is still running is ignored instead of reported, and a backup bigger than the portal's total storage quota ends the job with an error rather than failing this call.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| migratorName | path | String | The migrator that knows the format of the uploaded backup. It has to be one of the names GET api/2.0/migration/list reports for this installation, spelled exactly as listed. | [required] [example: GoogleWorkspace] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The parse job has been queued; the response carries no content and the result is read from GET api/2.0/migration/status | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator | - | - |
| 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
PortalPaymentApi
calculateWalletPayment
PaymentCalculationWrapper calculateWalletPayment(WalletQuantityRequestDto)
PUT /api/2.0/portal/payment/calculatewallet
Calculate the wallet payment amount
Prices a wallet-service purchase without making it: it returns what buying the requested number of units would cost right now, so a client can show the amount before asking for a confirmation. Only productQuantityType Add (1) is accepted, the quantity must be greater than zero, and the portal needs a billing customer whose wallet has a sub-account in the accounting currency. The caller has to be a DocSpace administrator. Nothing is bought, charged or written down - the call is read-only and may be repeated - and the purchase itself is PUT api/2.0/portal/payment/updatewallet. The answer carries the amount with its currency, the quantity it was computed for and the identifier of the calculation. It is the price of this moment and is not held: it can differ by the time the purchase is made.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| WalletQuantityRequestDto | body | WalletQuantityRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The amount the purchase would cost, its currency and the quantity it was calculated for | PaymentCalculationWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The quantity type is not Add, the quantity is not greater than zero, or the product is not a wallet service | - | - |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer, or its wallet has no sub-account in the accounting currency | - | - |
| 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
changeTenantWalletServiceState
TenantWalletServiceSettingsWrapper changeTenantWalletServiceState(ChangeWalletServiceStateRequestDto)
POST /api/2.0/portal/payment/servicestate
Switch a wallet service
Switches one wallet service on or off for the portal: service names it and enabled says which way. The portal needs a billing customer, and the caller needs both the permission to edit the portal settings and DocSpace administrator rights. Order matters between the two AI services - AI tools has to be on before AI search may be switched on, and switching AI tools off switches AI search off with it - so a request that breaks that order is refused with 403. The call is mutating and idempotent: switching on a service that is already on changes nothing. It is written to the portal audit trail, and switching AI tools notifies the portal clients so the AI features appear or disappear for them without a reload. The whole updated set of switched-on services comes back. Switching a service on does not buy it - its units are still bought with PUT api/2.0/portal/payment/updatewallet.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| ChangeWalletServiceStateRequestDto | body | ChangeWalletServiceStateRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The whole set of wallet services switched on for the portal after the change | TenantWalletServiceSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit the portal settings or is not a DocSpace administrator, the portal has no billing service configured, or AI search was switched on while AI tools is off | - | - |
| 404 | This portal has no billing customer yet | - | - |
| 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
TenantWalletServiceSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
createCustomerMonthlyUsageReport
DocumentBuilderTaskWrapper createCustomerMonthlyUsageReport(CustomerMonthlyUsageReportRequestDto)
POST /api/2.0/portal/payment/customer/usage/monthly/report
Start the monthly usage report
Queues the wallet spending added up per calendar month as an xlsx file and returns the task that will build it; the file is not ready when the response arrives. The portal needs a billing customer and the caller has to be a DocSpace administrator. The body takes only the period - startDate and endDate, both inclusive - and an empty body covers everything from the portal creation date to now; the months are cut in the portal time zone, exactly as in GET api/2.0/portal/payment/customer/usage/monthly. Poll GET api/2.0/portal/payment/customer/usage/monthly/report until isCompleted is true, then take the file from resultFileUrl or open resultFileId: the finished file is saved into the caller's own My documents section, where it counts against the portal storage like any other file. One monthly usage report per user is tracked at a time - a call made while the previous one is still running answers with that task - and DELETE api/2.0/portal/payment/customer/usage/monthly/report stops it. There is no service filter here: for a report per service use POST api/2.0/portal/payment/customer/usage/report.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CustomerMonthlyUsageReportRequestDto | body | CustomerMonthlyUsageReportRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The queued task, to be polled until isCompleted is true | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer yet | - | - |
| 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
createCustomerOperationsReport
DocumentBuilderTaskWrapper createCustomerOperationsReport(CustomerOperationsReportRequestDto)
POST /api/2.0/portal/payment/customer/operationsreport
Start the operations report
Queues the history of the wallet movements as an xlsx file and returns the task that will build it; the file is not ready when the response arrives. The portal needs a billing customer and the caller has to be a DocSpace administrator. The body takes the same filters as GET api/2.0/portal/payment/customer/operations - the service names, the date range, the participant, the operation type and status, the credit and debit directions and the ordering - and an empty body reports everything from the portal creation date to now; a service name this installation does not sell fails with 404. Poll GET api/2.0/portal/payment/customer/operationsreport until isCompleted is true, then take the file from resultFileUrl or open resultFileId: the finished file is saved into the caller's own My documents section, where it counts against the portal storage like any other file. One operations report per user is tracked at a time - a call made while the previous one is still running answers with that task - and DELETE api/2.0/portal/payment/customer/operationsreport stops it. A build that fails ends the task with error filled in rather than failing this call.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CustomerOperationsReportRequestDto | body | CustomerOperationsReportRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The queued task, to be polled until isCompleted is true | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer, or one of the names in serviceName is not a wallet service of this installation | - | - |
| 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
createCustomerServiceUsageReport
DocumentBuilderTaskWrapper createCustomerServiceUsageReport(CustomerServiceUsageReportRequestDto)
POST /api/2.0/portal/payment/customer/usage/report
Start the service usage report
Queues the usage of the wallet services as an xlsx file and returns the task that will build it; the file is not ready when the response arrives. The portal needs a billing customer and the caller has to be a DocSpace administrator. The body takes the same filters as GET api/2.0/portal/payment/customer/usage - the service names, the date range, the participant, the operation status, the usage metadata and the ordering - and an empty body reports every service from the portal creation date to now; a service name this installation does not sell fails with 404. Poll GET api/2.0/portal/payment/customer/usage/report until isCompleted is true, then take the file from resultFileUrl or open resultFileId: the finished file is saved into the caller's own My documents section, where it counts against the portal storage like any other file. One service usage report per user is tracked at a time - a call made while the previous one is still running answers with that task - and DELETE api/2.0/portal/payment/customer/usage/report stops it. It is a different report from the operations one and does not interfere with it: per-movement history is POST api/2.0/portal/payment/customer/operationsreport.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CustomerServiceUsageReportRequestDto | body | CustomerServiceUsageReportRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The queued task, to be polled until isCompleted is true | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer, or one of the names in serviceName is not a wallet service of this installation | - | - |
| 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
getAccountingServicePrices
ServicePriceInfoArrayWrapper getAccountingServicePrices(serviceName, active)
GET /api/2.0/portal/payment/accounting/prices/{serviceName}
Get the service prices from the accounting service
Returns the portal's automatic wallet top-up settings: whether it is switched on, the balance that triggers it, the balance it tops the wallet up to and the currency it charges in. Only a DocSpace administrator may read it, no billing customer is needed, and the call is read-only. A portal that has never configured it gets the defaults rather than an empty result, so enabled is the field that says whether anything happens at all. Two of the values are kept by the portal itself and cannot be set through this API: lowBalanceThreshold is the balance below which the portal warns its administrators by mail, and lowBalanceNotified says whether that warning has already gone out for the current dip. Change the rest with POST api/2.0/portal/payment/topupsettings.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| serviceName | path | String | The service whose price list is read, named the way the billing catalogue names it, such as ai-tools or backup. Take the value from the serviceName field of GET api/2.0/portal/payment/walletservices; a name the accounting service does not price yields an empty list rather than an error. | [required] [example: ai-tools] [minLength: 0] [maxLength: 255] |
| active | query | Boolean | Whether the answer is narrowed to the prices in force at the moment of the call. Leaving it false also returns the retired and the not yet started ones, which is what pricing a movement recorded in the past needs. | [optional] [example: false] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The list of the service prices | ServicePriceInfoArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | No permissions to perform this action | - | - |
| 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
getActiveServices
ActiveServiceArrayWrapper getActiveServices()
GET /api/2.0/portal/payment/activeservices
Get the active wallet services
Lists the wallet services the portal is running right now: the add-ons its plan pays for that are in the active state, plus the ones an administrator switched on by hand in the wallet service settings; the Docs Connect trial is listed as well, although it is not paid from the wallet. Only a DocSpace administrator may call it, no billing customer is needed for it, and the call is read-only. Every item names the service, its title and the unit it is measured in, and says whether it is a subscription; a subscribed service also carries the limit it grants and how much of it is used where that number is known - the editor seats and the editors currently active for Docs Connect, the purchased units and the units already consumed for disk storage. A service listed with no limit is one whose usage is not counted this way, not one without a limit. The catalogue of what could be switched on is GET api/2.0/portal/payment/walletservices, and switching one is POST api/2.0/portal/payment/servicestate.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The wallet services active on the portal, with their limits and usage where those are known | ActiveServiceArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 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
getAiPrices
AiPricesWrapper getAiPrices()
GET /api/2.0/portal/payment/ai-prices
Get AI model prices
Returns the price list of the AI features the portal pays for out of its wallet: the chat models with the price of their prompt and completion tokens, the embedding models, the image models with their per-image price, and the web search providers with the price of one search. The installation needs both a billing service and the AI gateway configured, otherwise the answer is 403, and only a DocSpace administrator may read it; the call is read-only. Token prices are normalised per million tokens, and every price is in the single currency the answer names. Each entry carries the model identifier to use when talking to the AI operations, its display alias, its provider with the provider icon, and a link to the model's own page. It is a list of what the models cost and not of what the portal spent - that is GET api/2.0/portal/payment/customer/usage - and it says nothing about which of them are allowed here, which is GET api/2.0/portal/payment/ai-model/restrictions.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The prices of the chat, embedding and image models and of the web search providers, with the currency they are in | AiPricesWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the installation has no billing service or no AI gateway configured | - | - |
| 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
getCheckoutSetupUrl
StringWrapper getCheckoutSetupUrl(BackUrl, SuccessUrl)
GET /api/2.0/portal/payment/checkoutsetupurl
Get the checkout setup page URL
Hands back the hosted page on which a payment method is attached to the portal's billing account, for the case where money has to be taken later - a wallet top-up or an automatic one - rather than a plan bought now. A portal that already has a payment method on file answers with an empty result; a DocSpace administrator may ask for the page, but once the portal has a billing customer with an e-mail, only its payer may. The call itself changes nothing and may be repeated: the payment method is stored by the payment provider when the returned page is completed, after which GET api/2.0/portal/payment/customerinfo reports it as set. The URL is absolute, carries the caller's e-mail, the language of the request and the currency of the region, and redirects to successUrl or backUrl when the user finishes or cancels. It buys nothing - a plan is bought with PUT api/2.0/portal/payment/url.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| BackUrl | query | URI (uri) | The absolute address the setup page sends the user back to when attaching a payment method is abandoned. It has to be a well-formed URL and must be reachable by that user rather than by the portal. | [required] [example: https://example.com/payment/back] [minLength: 0] [maxLength: 255] |
| SuccessUrl | query | URI (uri) | The absolute address the setup page sends the user to once the payment provider has stored the payment method. Reaching it means a method is now on file, which GET api/2.0/portal/payment/customerinfo confirms; nothing has been charged. | [required] [example: https://example.com/payment/success] [minLength: 0] [maxLength: 255] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The absolute URL of the payment method setup page, or an empty result when the portal already has a payment method | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator or, once a billing customer exists, not its payer; or the portal has no billing service configured | - | - |
| 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
getCustomerBalance
BalanceWrapper getCustomerBalance(refresh)
GET /api/2.0/portal/payment/customer/balance
Get the customer balance
Returns the money the portal has in its wallet as the accounting service holds it: the account with its own currency, one sub-account per currency with the amount on it, and the most recent credit movement. Only a DocSpace administrator may read it, an installation without a billing service answers 403, and a portal that has never been a customer gets an empty result. The call is read-only. This balance is what the wallet services are charged against, so it falls as they are used and rises with POST api/2.0/portal/payment/deposit; the movements behind a change are listed by GET api/2.0/portal/payment/customer/operations. Pass refresh=true to re-read it from the accounting service rather than the cache - right after a top-up the cached figure is still the old one.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| refresh | query | Boolean | Whether the answer is fetched from the billing service instead of the portal cache. The cached copy is what a start-up needs and costs nothing; asking for a fresh one makes a remote call, so use it right after a purchase or a top-up and not on every read. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The wallet account with its sub-account per currency, or an empty result when the portal has no billing customer | BalanceWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 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
getCustomerInfo
CustomerInfoWrapper getCustomerInfo(refresh)
GET /api/2.0/portal/payment/customerinfo
Get the customer information
Returns the billing customer behind the portal: the e-mail its billing account is registered to, whether a payment method is stored for it, and the portal user who is the payer of that account. Only a DocSpace administrator may read it, and the call is read-only. The answer is empty in two ordinary cases - the installation has no billing service configured at all, and the portal has never been a customer - so an empty body is not an error. payer is filled in only when the billing e-mail belongs to a portal user; when it does not, the e-mail is still shown but the field stays empty, and that is what makes every payer-only operation of this group unreachable for everybody. refresh=true re-reads the customer from the billing provider instead of the cache, which is worth doing right after a payment method has been attached.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| refresh | query | Boolean | Whether the answer is fetched from the billing service instead of the portal cache. The cached copy is what a start-up needs and costs nothing; asking for a fresh one makes a remote call, so use it right after a purchase or a top-up and not on every read. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The billing customer with its payer, or an empty result when the portal has no customer or billing is not configured | CustomerInfoWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator | - | - |
| 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
getCustomerMonthlyUsage
CustomerMonthlyUsageArrayWrapper getCustomerMonthlyUsage(startDate, endDate)
GET /api/2.0/portal/payment/customer/usage/monthly
Get the customer monthly usage
Returns what the portal spent from its wallet added up per calendar month, so a client can draw a spending chart without paging through every movement. Only a DocSpace administrator may read it, a portal with no billing customer answers with an empty result, and the call is read-only. startDate and endDate bound the period, both inclusive, and default to the portal creation date and the present moment; the months are cut in the portal time zone, so a movement at the edge of a month falls where the portal sees it and not where UTC does. Each item names its year and month, the total charged in it with the currency, and how many operations that total came from. The movements behind a month are in GET api/2.0/portal/payment/customer/operations, and the same figures as a file come from POST api/2.0/portal/payment/customer/usage/monthly/report.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| startDate | query | Date (date-time) | The beginning of the reported period, inclusive. The months are cut in the portal time zone rather than in UTC, so spending at the turn of a month falls where the portal sees it; defaults to the portal creation date. | [optional] [example: 2025-01-01T00:00:00Z] |
| endDate | query | Date (date-time) | The end of the reported period, inclusive. Cut in the portal time zone in the same way as startDate, and defaults to the moment the call is made. | [optional] [example: 2025-12-31T23:59:59Z] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | One item per calendar month that had spending, or an empty result when the portal has no billing customer | CustomerMonthlyUsageArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 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
CustomerMonthlyUsageArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getCustomerMonthlyUsageReport
DocumentBuilderTaskWrapper getCustomerMonthlyUsageReport()
GET /api/2.0/portal/payment/customer/usage/monthly/report
Get the monthly usage report status
Returns the state of the xlsx monthly usage report this user started with POST api/2.0/portal/payment/customer/usage/monthly/report: percentage while it is being built, isCompleted when it is done, resultFileId, resultFileName and resultFileUrl pointing at the file in the caller's My documents, and error when the build failed. The portal needs a billing customer and the caller has to be a DocSpace administrator; the call is read-only and is the one to poll. The task is kept per user and per report kind, so it reports neither another administrator's report nor the operations and service usage ones, which have their own status operations. An empty result means this user has no monthly usage report at all - none was started, or the finished one was already picked up or terminated. A completed task is dropped as soon as the next report is started, so read the file link out of the same answer that first reports isCompleted.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of this user's monthly usage report, or an empty result when there is none | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer yet | - | - |
| 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
getCustomerOperations
ReportWrapper getCustomerOperations(offset, limit, ServiceName, StartDate, EndDate, ParticipantName, Credit, Debit, Type, Status, OrderBy, OrderType)
GET /api/2.0/portal/payment/customer/operations
Get the wallet operations
Lists the money movements on the portal's wallet - top-ups, the charges of the wallet services, refunds and corrections - one page at a time, which is what a billing history is built from. Only a DocSpace administrator may read it, a portal with no billing customer answers with an empty result, and the call is read-only. Every filter is optional: startDate and endDate are read in the portal time zone and default to the portal creation date and the present moment, serviceName narrows to particular wallet services and fails with 404 on a name this installation does not sell, participantName, type and status narrow to who caused a movement and how it ended, and credit and debit include or exclude the two directions. offset and limit page through the result and default to 0 and 25, orderBy and orderType sort it, and the answer repeats them next to totalQuantity, totalPage and currentPage so a client can page without counting. The same data as a downloadable file is POST api/2.0/portal/payment/customer/operationsreport, and the figures added up per service are GET api/2.0/portal/payment/customer/usage.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| offset | query | Integer (int32) | The number of movements to skip before the first one returned, for walking through a long history page by page. Counted after the filters and the ordering are applied, and starts at 0 when omitted. | [optional] [example: 0] |
| limit | query | Integer (int32) | The maximum number of movements returned in one page. Defaults to 25 when omitted; the answer echoes the window back next to totalQuantity, totalPage and currentPage, so the next offset can be computed without counting the items. | [optional] [example: 25] |
| ServiceName | query | List | The wallet services whose movements are kept, named the way the billing catalogue names them - backup, ai-tools, ai-search, disk-storage, docscloud. Take the values from the serviceName field of GET api/2.0/portal/payment/walletservices; the match ignores case, a name this installation does not sell fails the call with 404, and an omitted list keeps every service. A bare string is accepted in place of an array for backward compatibility. | [optional] [example: [backup]] |
| StartDate | query | Date (date-time) | The beginning of the reported period, inclusive. Read in the portal time zone rather than in UTC, so a movement at the edge of the period falls where the portal sees it; defaults to the portal creation date. | [optional] [example: 2024-01-01T00:00:00Z] |
| EndDate | query | Date (date-time) | The end of the reported period, inclusive. Read in the portal time zone rather than in UTC, and defaults to the moment the call is made. | [optional] [example: 2024-01-31T23:59:59Z] |
| ParticipantName | query | String | The participant whose movements are kept - the account the accounting service records as the cause of a movement. A movement caused by a portal user carries that user ID here, and one caused by the portal itself carries the customer name; surrounding whitespace is trimmed, and an omitted value keeps every participant. | [optional] [example: My Own Corporation] |
| Credit | query | Boolean | Whether movements that add money to the wallet - top-ups, refunds and corrections in the portal's favour - are kept. Both directions are reported when neither this nor debit is given. | [optional] [example: true] |
| Debit | query | Boolean | Whether movements that take money out of the wallet - the charges of the wallet services - are kept. Both directions are reported when neither this nor credit is given. | [optional] [example: false] |
| Type | query | OperationType | The kind of movement to keep, which says what caused the money to move rather than how it ended. Every kind is reported when it is omitted. | [optional] [example: ServicePayment] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] |
| Status | query | OperationStatus | The outcome to keep. A movement that is still being settled is reported as pending and may change later, while the other outcomes are final; every outcome is reported when this is omitted. | [optional] [example: Completed] [enum: 0, 1, 2, 3] |
| OrderBy | query | String | The name of the field the movements are sorted by, spelled as the accounting service names it, such as StartDate or ServiceName. Surrounding whitespace is trimmed, and the accounting service applies its own ordering when this is omitted. | [optional] [example: StartDate] |
| OrderType | query | OperationOrderType | The direction the field named in orderBy is sorted in. Newest or largest first is what the accounting service does by default, so leaving this out sorts the same way as asking for descending explicitly. | [optional] [example: Descending] [enum: 0, 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | A page of wallet movements with its paging information, or an empty result when the portal has no billing customer | ReportWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 404 | One of the names in serviceName is not a wallet service of this installation | - | - |
| 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
getCustomerOperationsReport
DocumentBuilderTaskWrapper getCustomerOperationsReport()
GET /api/2.0/portal/payment/customer/operationsreport
Get the operations report status
Returns the state of the xlsx wallet operations report this user started with POST api/2.0/portal/payment/customer/operationsreport: percentage while it is being built, isCompleted when it is done, resultFileId, resultFileName and resultFileUrl pointing at the file in the caller's My documents, and error when the build failed. The portal needs a billing customer and the caller has to be a DocSpace administrator; the call is read-only and is the one to poll. The task is kept per user and per report kind, so it never reports another administrator's report, nor the service usage and monthly usage ones, which have their own status operations. An empty result means this user has no operations report at all - none was started, or the finished one was already picked up or terminated. A completed task is dropped as soon as the next report is started, so read the file link out of the same answer that first reports isCompleted.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of this user's operations report, or an empty result when there is none | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer yet | - | - |
| 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
getCustomerServiceUsage
CustomerServiceUsageReportWrapper getCustomerServiceUsage(ServiceName, ParticipantName, Status, StartDate, EndDate, Metadata, offset, limit, OrderBy, OrderType)
GET /api/2.0/portal/payment/customer/usage
Get the customer service usage
Returns how much of each wallet service the portal consumed and what that cost, added up per service instead of listed per movement. Only a DocSpace administrator may read it, a portal with no billing customer answers with an empty result, and the call is read-only. The filters are optional: serviceName narrows to particular services and fails with 404 on a name this installation does not sell, participantName and status narrow to who consumed and how the operation ended, startDate and endDate bound the period in the portal time zone, metadata matches the key and value pairs a service records with its usage, and offset, limit, orderBy and orderType page and sort the result. Amounts come with the unit the service is sold in, except AI tools, whose consumption is reported in tokens rather than in AI credits. The individual charges behind these totals are GET api/2.0/portal/payment/customer/operations, and the same figures as a downloadable file are POST api/2.0/portal/payment/customer/usage/report.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| ServiceName | query | List | The wallet services whose consumption is added up, named the way the billing catalogue names them - backup, ai-tools, ai-search, disk-storage, docscloud. Take the values from the serviceName field of GET api/2.0/portal/payment/walletservices; the match ignores case, a name this installation does not sell fails the call with 404, and an omitted list covers every service. | [optional] [example: [backup]] |
| ParticipantName | query | String | The participant whose consumption is added up - the account the accounting service records as the consumer. Consumption caused by a portal user carries that user ID here; surrounding whitespace is trimmed, and an omitted value covers every participant. | [optional] [example: My Own Corporation] |
| Status | query | OperationStatus | The outcome to keep. Consumption that is still being settled is reported as pending and may change later, while the other outcomes are final; every outcome is counted when this is omitted. | [optional] [example: Completed] [enum: 0, 1, 2, 3] |
| StartDate | query | Date (date-time) | The beginning of the reported period, inclusive. Read in the portal time zone rather than in UTC, and defaults to the portal creation date. | [optional] [example: 2025-01-01T00:00:00Z] |
| EndDate | query | Date (date-time) | The end of the reported period, inclusive. Read in the portal time zone rather than in UTC, and defaults to the moment the call is made. | [optional] [example: 2025-12-31T23:59:59Z] |
| Metadata | query | Map | The usage annotations a wallet service records alongside its consumption, as the key and value pairs that must all match for a record to be counted. The keys are chosen by the service that writes them, so read them off the metadata of the records already returned rather than guessing; an omitted map counts every record. | [optional] [example: {"key1":"value1","key2":"value2"}] |
| offset | query | Integer (int32) | The number of per-service totals to skip before the first one returned. Counted after the filters and the ordering are applied, and starts at 0 when omitted. | [optional] [example: 0] |
| limit | query | Integer (int32) | The maximum number of per-service totals returned in one page. Defaults to 25 when omitted; the answer echoes the window back with its paging information, so the next offset can be computed without counting the items. | [optional] [example: 25] |
| OrderBy | query | String | The name of the field the per-service totals are sorted by, spelled as the accounting service names it, such as ServiceName or StartDate. Surrounding whitespace is trimmed, and the accounting service applies its own ordering when this is omitted. | [optional] [example: ServiceName] |
| OrderType | query | OperationOrderType | The direction the field named in orderBy is sorted in. Newest or largest first is what the accounting service does by default, so leaving this out sorts the same way as asking for descending explicitly. | [optional] [example: Descending] [enum: 0, 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The usage and cost per wallet service with its paging information, or an empty result when the portal has no billing customer | CustomerServiceUsageReportWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 404 | One of the names in serviceName is not a wallet service of this installation | - | - |
| 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
CustomerServiceUsageReportWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getCustomerServiceUsageReport
DocumentBuilderTaskWrapper getCustomerServiceUsageReport()
GET /api/2.0/portal/payment/customer/usage/report
Get the service usage report status
Returns the state of the xlsx service usage report this user started with POST api/2.0/portal/payment/customer/usage/report: percentage while it is being built, isCompleted when it is done, resultFileId, resultFileName and resultFileUrl pointing at the file in the caller's My documents, and error when the build failed. The portal needs a billing customer and the caller has to be a DocSpace administrator; the call is read-only and is the one to poll. The task is kept per user and per report kind, so it reports neither another administrator's report nor the operations and monthly usage ones, which have their own status operations. An empty result means this user has no service usage report at all - none was started, or the finished one was already picked up or terminated. A completed task is dropped as soon as the next report is started, so read the file link out of the same answer that first reports isCompleted.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of this user's service usage report, or an empty result when there is none | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer yet | - | - |
| 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
getPaymentAccount
StringWrapper getPaymentAccount(backUrl)
GET /api/2.0/portal/payment/account
Get the billing account page
Hands back the address of the portal page on which the billing account is managed - the payment method on file, the invoices and the receipts - so a client can link to it instead of assembling the address itself. The portal must already have a billing customer: one that has never had it gets an empty result, and an installation without a billing service answers 403. Only the payer or the portal owner may read it, and the call changes nothing. The value is relative to the portal root (payment.ashx), and the optional backUrl is appended to it as a query parameter so the page can send the user back where they came from. It is not a checkout page: a plan is bought with PUT api/2.0/portal/payment/url and a payment method is attached with GET api/2.0/portal/payment/checkoutsetupurl.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| backUrl | query | URI (uri) | The absolute address the billing account page should offer as its way back. It is appended to the returned portal-relative address as a query parameter rather than followed here, and omitting it yields the bare address of the page. | [optional] [example: https://example.com] [minLength: 0] [maxLength: 255] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The portal-relative address of the billing account page, or an empty result when the portal has no billing customer | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is neither the payer nor the portal owner, or the portal has no billing service configured | - | - |
| 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
getPaymentCurrencies
CurrenciesArrayWrapper getPaymentCurrencies()
GET /api/2.0/portal/payment/currencies
Get the billing currencies
Tells a client which currency the portal is billed in: the default currency of the portal region always comes first, followed by the currency resolved for the current request when that one differs, so the answer holds one or two items. Nothing has to be called first, the caller needs the permission to edit the portal settings, and the call is read-only. Each item carries the country code of the region, the currency symbol and the native name of the currency; the first item is the currency the amounts from GET api/2.0/portal/payment/prices are expressed in. These are the currencies of the subscription prices, and they are not the accounting currencies the wallet is topped up in - those come with the balance in GET api/2.0/portal/payment/customer/balance.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The default currency of the portal region first, followed by the currency of the current request when it differs | CurrenciesArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit 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
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getPaymentQuotas
QuotaArrayWrapper getPaymentQuotas(wallet, additional)
GET /api/2.0/portal/payment/quotas
Get the purchasable quotas
Lists the quotas the portal can be put on - the paid plans and the wallet services - each with its price, its features and the limits it grants, which is what a pricing page is built from. Nothing has to be called first, the caller needs the permission to edit the portal settings, and the call is read-only. Only quotas marked visible are listed, newest first, and the two optional filters narrow that: wallet selects the wallet services (true) or the subscription plans (false), additional selects the add-ons to a plan (true) or the plans themselves (false), and an omitted filter keeps both kinds. A portal on a non-profit quota is a special case - asking for additional=false returns that single quota and nothing else, because no other plan may be bought for it. The quota the portal is actually on is not marked here; read it from GET api/2.0/portal/payment/quota.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| wallet | query | Boolean | Which side of the catalogue is listed: true keeps the services paid out of the portal wallet, false keeps the subscription plans, and omitting it keeps both. | [optional] [example: true] |
| additional | query | Boolean | Which layer of the catalogue is listed: true keeps the add-ons that extend a plan, false keeps the plans themselves, and omitting it keeps both. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The visible quotas matching the filters, newest first, each with its price, features and limits | QuotaArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit 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
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getPaymentUrl
StringWrapper getPaymentUrl(PaymentUrlRequestDto)
PUT /api/2.0/portal/payment/url
Get the payment page URL
Starts the purchase of a monthly paid plan for this portal by handing back the hosted checkout page the buyer has to open; nothing is bought until that page is completed. The portal must have no paid plan yet - a portal whose plan is already paid gets an empty result and changes its subscription through PUT api/2.0/portal/payment/update instead - and the product name in quantity must be one of the monthly, non-wallet plans listed by GET api/2.0/portal/payment/quotas. Only a DocSpace administrator may call it. The call itself changes nothing on the portal and may be repeated: the money is taken by the payment provider on the checkout page, and the plan becomes active once the provider confirms it. The returned URL is absolute and single-purpose - it carries the caller's e-mail, the language of the request and the currency of the request region, and it redirects to successUrl or backUrl when the buyer finishes or cancels. Exactly one product per call is accepted and its quantity has to be greater than zero; yearly and wallet products are refused, and wallet services are bought with PUT api/2.0/portal/payment/updatewallet instead.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| PaymentUrlRequestDto | body | PaymentUrlRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The absolute URL of the checkout page to open, or an empty result when the portal already has a paid plan | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | quantity holds more than one product, a quantity that is not greater than zero, or a product that is not a monthly plan | - | - |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 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
getPortalPrices
getPortalPrices_200_response getPortalPrices()
GET /api/2.0/portal/payment/prices
Get the product prices
Lists what one unit of every purchasable product costs, keyed by the product name that quantity takes in the purchase operations, so a client can price a plan or a wallet service without reading the whole quota list. Nothing has to be called first, and the caller needs the permission to edit the portal settings, which portal administrators and the owner have. The call is read-only. Prices are given in the one currency resolved for this request from the portal region, which GET api/2.0/portal/payment/currencies reports; a product with no price in that currency comes back as 0 rather than being left out, so a zero means unpriced and not free. The list covers the products on offer, not the portal's own plan - the plan in force, with its limits and its usage, is GET api/2.0/portal/payment/quota.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Product name to the price of one unit in the currency of the request, 0 where the product has no price in it | getPortalPrices_200_response | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit 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
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getQuotaPaymentInformation
QuotaWrapper getQuotaPaymentInformation(refresh)
GET /api/2.0/portal/payment/quota
Get the current plan and limits
Returns the quota the portal is on right now - its paid plan or the free one - with everything a client needs to render itself: the price, the features that are switched on, the limits they grant (rooms, storage in bytes, users, administrators, AI) and how much of each is already used. Every signed-in member of the portal reads it, so it is not restricted to administrators; only guests are refused with 403. The call is read-only. The plan is served from the cache by default, which is what a start-up needs; refresh=true fetches it from the billing service instead, so use that right after a purchase and not routinely, because it is a remote call. The catalogue of the quotas that could be bought instead is GET api/2.0/portal/payment/quotas, and the money side of the same portal - customer, wallet and balance - starts at GET api/2.0/portal/payment/customerinfo.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| refresh | query | Boolean | Whether the answer is fetched from the billing service instead of the portal cache. The cached copy is what a start-up needs and costs nothing; asking for a fresh one makes a remote call, so use it right after a purchase or a top-up and not on every read. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The quota the portal is on, with its price, features, limits and current usage | QuotaWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is a guest of this portal | - | - |
| 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
getRestrictedAiModels
RestrictedModelsResponseWrapper getRestrictedAiModels()
GET /api/2.0/portal/payment/ai-model/restrictions
Get restricted AI models
Returns the AI chat models that are barred on this portal - the ones no user of it may pick for a conversation, whatever the price list offers. Only a DocSpace administrator may read it, and the call is read-only. When the installation has no billing service or AI is not enabled for the portal, the answer is an empty set instead of an error, which is indistinguishable from a portal that restricts nothing. An empty models therefore means every model in GET api/2.0/portal/payment/ai-prices may be used. The set names the barred models and not the allowed ones; replace it with PUT api/2.0/portal/payment/ai-model/restrictions.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The identifiers of the AI chat models barred on this portal, empty when none is | RestrictedModelsResponseWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not 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
RestrictedModelsResponseWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getSubscriptionBalanceInfo
SubscriptionBalanceInfoWrapper getSubscriptionBalanceInfo()
GET /api/2.0/portal/payment/subscription/balance
Get the subscription balance information
Reports in money how much of the portal's paid subscription period is still unused - the credit that POST api/2.0/portal/payment/subscription/movetowallet would carry over to the wallet if the subscription were ended now. The portal must have a billing customer and a plan in the paid state; a plan that is not paid answers 402, and a paid plan without a subscription row gives 404. Only the payer - the portal user whose e-mail is the billing customer's e-mail - may read it, and the call is read-only. The answer states the total cost of the current period with its currency, the start and the end of that period in UTC, the moment the unused part is measured up to, the days already elapsed, and the remaining balance both in the subscription currency and converted to the wallet currency. Every figure is computed for the instant of the request, so it changes between calls.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The unused balance of the current subscription period with its period boundaries and currencies | SubscriptionBalanceInfoWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The plan currently paid is a wallet product or has no product identifier | - | - |
| 402 | The plan of the portal is not in the paid state | - | - |
| 403 | The caller is not the payer of this portal, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer, or its paid plan has no subscription | - | - |
| 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
SubscriptionBalanceInfoWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getTenantWalletServiceSettings
TenantWalletServiceSettingsWrapper getTenantWalletServiceSettings()
GET /api/2.0/portal/payment/servicessettings
Get the wallet service settings
Returns which wallet services an administrator has switched on for this portal by hand, as opposed to the ones its plan pays for. Only a DocSpace administrator may read it, an installation without a billing service answers 403, no billing customer is needed, and the call is read-only. enabledServices holds the names of those services and is empty when none was switched on. This is the stored setting and not the state of the portal: a service the plan brings with it is active without appearing here, so the honest answer to what is running is GET api/2.0/portal/payment/activeservices. One entry is changed with POST api/2.0/portal/payment/servicestate.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The wallet services switched on by hand for this portal | TenantWalletServiceSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 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
TenantWalletServiceSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getTenantWalletSettings
TenantWalletSettingsResponseWrapper getTenantWalletSettings()
GET /api/2.0/portal/payment/topupsettings
Get the auto top-up settings
Returns the portal's automatic wallet top-up settings - whether it is on, the balance that triggers a charge, the balance it is topped up to, and the currency both are expressed in. Any DocSpace administrator may read them, and unlike the operation that changes them this one needs neither a billing customer nor a configured billing service, so it answers on a portal that has never paid for anything. It is read-only and changes nothing. A portal that has never configured top-up gets the defaults rather than an empty result: enabled is false, currency is null, and minBalance and upToBalance are 0. Those two zeros are outside the ranges POST api/2.0/portal/payment/topupsettings accepts - 5 to 1000 and 6 to 5000 - so the answer cannot be sent straight back to it; supply real values instead. lastModified is 0001-01-01T00:00:00 until the settings are stored for the first time. lowBalanceThreshold and lowBalanceNotified are maintained by the portal itself: they are reported here, but ignored when the settings are written.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The automatic top-up settings of the portal, or their defaults when it has never configured them | TenantWalletSettingsResponseWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not 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
TenantWalletSettingsResponseWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getWalletService
WalletServiceWrapper getWalletService(service)
GET /api/2.0/portal/payment/walletservice
Get a wallet service
Returns one wallet service by name, for a client that already knows which service it needs and does not want the whole catalogue. service is the name of the service - Storage, Backup, AITools, Admin, DocsCloud, DocsCloudDevPack or AISearch - and a name this installation does not sell answers 404. Nothing has to be called first, the caller needs the permission to edit the portal settings, and the call is read-only. The answer has the same shape as one item of GET api/2.0/portal/payment/walletservices - the price of a unit, the unit, the limits the service grants and its service name - except that the variants of a service are not grouped into innerServices here, because a single service is looked up directly. The price is in the currency resolved for the request.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| service | query | TenantWalletService | The service to look up, given by its catalogue name. A service this installation does not sell answers 404, and the whole catalogue is GET api/2.0/portal/payment/walletservices. | [required] [example: Storage] [enum: -18, -16, -15, -14, -13, -12, -11] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The wallet service with its price, unit and the limits it grants | WalletServiceWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit the portal settings | - | - |
| 404 | This installation does not sell a wallet service under that name | - | - |
| 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
getWalletServices
WalletServiceArrayWrapper getWalletServices()
GET /api/2.0/portal/payment/walletservices
Get wallet services
Lists every service the portal may pay for out of its wallet - extra administrators, disk storage, backup, AI tools, AI search and Docs Connect - with the price of a unit, the unit it is sold in and whether the portal has it switched on. Nothing has to be called first, the caller needs the permission to edit the portal settings, and the call is read-only. Services that are variants of one another are folded together: the visible one carries the rest in its innerServices, so a client renders one card per group. The AI services are left out entirely when AI is not enabled for the portal. This is the catalogue and not the state of the portal - what is actually running is GET api/2.0/portal/payment/activeservices, one service on its own is GET api/2.0/portal/payment/walletservice, and switching one on or off is POST api/2.0/portal/payment/servicestate.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The wallet services on offer, with their prices, units and grouped variants | WalletServiceArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit 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
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
moveSubscriptionToWallet
BooleanWrapper moveSubscriptionToWallet(QuantityRequestDto)
POST /api/2.0/portal/payment/subscription/movetowallet
Move the subscription to the wallet
Ends the portal's paid subscription and moves it onto the wallet: the unused balance of the running period is credited to the wallet, the wallet is topped up from the payment method on file if that credit does not cover the purchase, and the requested number of administrators is then bought as a wallet service. The portal needs a billing customer with a payment method set and a plan in the paid state, quantity has to name the administrators wallet product, and the number asked for may not be below the administrators the portal already has - read the credit that will be carried over from GET api/2.0/portal/payment/subscription/balance first. Only the payer may call it. The call is mutating, spends money and cannot be undone: the subscription is ended before the purchase is attempted, so a failure in the second half leaves the portal on the wallet with the money credited but the administrators unbought, and a repeat would then buy them a second time. It is limited to ten requests a minute per user by default. The result is true when the administrators were bought.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| QuantityRequestDto | body | QuantityRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true when the balance was moved to the wallet and the administrators were bought | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | quantity does not name the administrators wallet product, or the number asked for is below the administrators the portal already has | - | - |
| 402 | The plan of the portal is not paid, the balance could not be moved, or the wallet is still short of the price after the top-up | - | - |
| 403 | The caller is not the payer of this portal, the portal has no billing service configured, or the customer has no payment method set | - | - |
| 404 | This portal has no billing customer, its paid plan has no subscription, or the price of the administrators product is unknown | - | - |
| 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
sendPaymentRequest
sendPaymentRequest(SalesRequestsDto)
POST /api/2.0/portal/payment/request
Contact the sales team
Sends the portal's message to the ONLYOFFICE sales team - the contact-sales form behind a request for a quote, an invoice or a plan that cannot be bought online. email has to be a well-formed address and is where the answer will go, while userName and message say who is asking and what for; all three are required and none may be empty. Only a DocSpace administrator may call it. Nothing on the portal changes: no plan, no quota and no payment is touched, a message is mailed out and the request is written to the portal audit trail. There is no response body - status 200 means the message was handed to the mail service - and the call is not idempotent, so a repeat sends a second message. It is limited to ten requests a minute per user by default and answers 429 above that.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SalesRequestsDto | body | SalesRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The message has been handed to the mail service; the response carries no content | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | email is not a well-formed address, or one of the required fields is empty | - | - |
| 403 | The caller is not a DocSpace administrator | - | - |
| 429 | This user has made more than ten requests in a minute | ErrorApiResponse | Retry-After |
| 401 | Unauthorized | ErrorApiResponse | - |
| 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: application/json
- Accept: application/json
setRestrictedAiModels
RestrictedModelsResponseWrapper setRestrictedAiModels(SetRestrictedAiModelsRequestDto)
PUT /api/2.0/portal/payment/ai-model/restrictions
Set restricted AI models
Replaces the whole set of AI chat models barred on this portal: the body is the complete set that is to hold, so adding one restriction means sending the new model together with the ones already restricted, lifting one means leaving it out, and an empty set lifts them all. Read the current set from GET api/2.0/portal/payment/ai-model/restrictions and the model identifiers from GET api/2.0/portal/payment/ai-prices before calling. The installation needs a billing service and the AI gateway configured, the portal needs a billing customer, and the caller needs the permission to edit the portal settings as well as DocSpace administrator rights. The call is mutating and idempotent - sending the same set twice leaves the same state - and it is written to the portal audit trail. It takes effect on the next AI request, so a conversation already open on a model that has just been barred cannot go on with it. The stored set comes back in the answer.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SetRestrictedAiModelsRequestDto | body | SetRestrictedAiModelsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The set of barred AI chat models as it was stored | RestrictedModelsResponseWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit the portal settings or is not a DocSpace administrator, or the installation has no billing service or no AI gateway configured | - | - |
| 404 | This portal has no billing customer yet | - | - |
| 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
RestrictedModelsResponseWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setTenantWalletSettings
TenantWalletSettingsResponseWrapper setTenantWalletSettings(TenantWalletSettingsWrapper)
POST /api/2.0/portal/payment/topupsettings
Set the auto top-up settings
Switches the portal's automatic wallet top-up on or off and sets its thresholds: while it is on, the payment method on file is charged whenever the wallet balance falls below minBalance, enough to bring it up to upToBalance, in currency. The portal needs a billing customer whose wallet balance exists - a portal that has never had one answers 404, so top the wallet up once with POST api/2.0/portal/payment/deposit first - and only the payer may change the settings. The body replaces the stored settings as a whole and an omitted body resets them to the defaults; minBalance is accepted between 5 and 1000 and upToBalance between 6 and 5000, while lowBalanceThreshold and lowBalanceNotified are ignored on the way in and kept as the portal had them. The call is mutating and idempotent, it charges nothing by itself, it is written to the portal audit trail, and switching the top-up on also re-arms the low-balance warning. The settings as they were stored come back in the answer.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TenantWalletSettingsWrapper | body | TenantWalletSettingsWrapper | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The automatic top-up settings as they were stored | TenantWalletSettingsResponseWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not the payer of this portal, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer, or its wallet has no balance yet | - | - |
| 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
TenantWalletSettingsResponseWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
terminateCustomerMonthlyUsageReport
terminateCustomerMonthlyUsageReport()
DELETE /api/2.0/portal/payment/customer/usage/monthly/report
Terminate the monthly usage report
Stops the xlsx monthly usage report this user has running and drops its task, for a report that was started for the wrong period or is no longer wanted. The portal needs a billing customer and the caller has to be a DocSpace administrator. The stop is asked of the worker that builds the file rather than done here, so GET api/2.0/portal/payment/customer/usage/monthly/report can still answer for a moment afterwards. The call is safe to repeat and does nothing at all when this user has no such report running: there is no response body, and status 200 says the stop was requested, not that a report was really stopped. It leaves the operations and service usage reports alone, and a report that had already finished keeps its file in My documents.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The stop has been requested; the response carries no content | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer yet | - | - |
| 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
terminateCustomerOperationsReport
terminateCustomerOperationsReport()
DELETE /api/2.0/portal/payment/customer/operationsreport
Terminate the operations report
Stops the xlsx wallet operations report this user has running and drops its task, for a report that was started with the wrong filters or is no longer wanted. The portal needs a billing customer and the caller has to be a DocSpace administrator. The stop is asked of the worker that builds the file rather than done here, so GET api/2.0/portal/payment/customer/operationsreport can still answer for a moment afterwards. The call is safe to repeat and does nothing at all when this user has no report running: there is no response body, and status 200 says the stop was requested, not that a report was really stopped. A report that had already finished keeps its file in My documents - nothing is deleted from there.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The stop has been requested; the response carries no content | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer yet | - | - |
| 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
terminateCustomerServiceUsageReport
terminateCustomerServiceUsageReport()
DELETE /api/2.0/portal/payment/customer/usage/report
Terminate the service usage report
Stops the xlsx service usage report this user has running and drops its task, for a report that was started with the wrong filters or is no longer wanted. The portal needs a billing customer and the caller has to be a DocSpace administrator. The stop is asked of the worker that builds the file rather than done here, so GET api/2.0/portal/payment/customer/usage/report can still answer for a moment afterwards. The call is safe to repeat and does nothing at all when this user has no such report running: there is no response body, and status 200 says the stop was requested, not that a report was really stopped. It leaves the operations and monthly usage reports alone, and a report that had already finished keeps its file in My documents.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The stop has been requested; the response carries no content | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer yet | - | - |
| 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
topUpDeposit
BooleanWrapper topUpDeposit(TopUpDepositRequestDto)
POST /api/2.0/portal/payment/deposit
Top up the wallet
Charges the payment method on file and adds the amount to the portal's wallet, the balance every wallet service is paid from. The portal needs a billing customer with a payment method set - attach one with GET api/2.0/portal/payment/checkoutsetupurl - currency has to be one of the accounting currencies this installation supports, and amount is a whole number of currency units between 1 and 999999. Only the payer may call it. The call takes money and is not idempotent in any way: two identical requests charge twice, so a client must not retry it blindly after a timeout, and it is limited to ten requests a minute per user by default. A successful top-up pushes the new balance to the portal clients over their socket connection and re-arms the low-balance notification. The result is true when the payment provider accepted the charge; read the resulting balance back from GET api/2.0/portal/payment/customer/balance.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TopUpDepositRequestDto | body | TopUpDepositRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true when the payment provider accepted the charge and the wallet was credited | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | currency is not one of the supported accounting currencies, or amount is outside 1 to 999999 | - | - |
| 403 | The caller is not the payer of this portal, the portal has no billing service configured, or the customer has no payment method set | - | - |
| 404 | This portal has no billing customer yet | - | - |
| 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
updatePayment
BooleanWrapper updatePayment(QuantityRequestDto)
PUT /api/2.0/portal/payment/update
Change the subscription quantity
Changes how many units of the plan the portal is paying for - the number of administrators it covers - and lets the payment provider bill the difference against the payment method already on file. The portal must have a billing customer and a plan bought through PUT api/2.0/portal/payment/url, and while the portal is on a priced plan the product name in quantity has to be that same plan, which GET api/2.0/portal/payment/quota reports, because a subscription is changed here and not swapped. Only the payer - the portal user whose e-mail is the billing customer's e-mail - may call it. The call is mutating and charges money, and it is guarded against a double submission: once the new quantity is in effect, repeating the same request fails with 400 because that quantity is already set. The result is true when the provider accepted the change and false when it declined it without an error. Exactly one product per call is accepted, the operation is limited to ten requests a minute per user by default and answers 429 above that, and wallet services are not bought here - use PUT api/2.0/portal/payment/updatewallet for those.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| QuantityRequestDto | body | QuantityRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true when the provider accepted the new quantity, false when it declined it | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The product is not the plan currently paid, or the quantity is already the one in effect | - | - |
| 403 | The caller is not the payer of this portal, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer yet | - | - |
| 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
updateWalletPayment
BooleanWrapper updateWalletPayment(WalletQuantityRequestDto)
PUT /api/2.0/portal/payment/updatewallet
Change a wallet service quantity
Buys more units of a wallet service - extra administrators, disk storage, backup, AI tools, AI search or Docs Connect - or writes down the quantity that service will have after the next renewal, depending on productQuantityType. With Add (1) the units are bought at once and paid out of the portal wallet, so the wallet needs a sub-account in the accounting currency and enough money on it; with Set (0) nothing is charged now and the quantity only takes effect in the next period, where an empty or zero quantity cancels a change scheduled earlier. Renew and Sub are not accepted here. The portal needs a billing customer and the caller has to be a DocSpace administrator; a service that is an add-on to the plan also needs the plan itself to be paid, otherwise the answer is 402. Minimum quantities apply - disk storage starts at 100 units, the Docs Connect Dev Pack at 10, and the administrators may not be fewer than the portal already has - and in the Add form they are checked only while the portal does not hold that service yet. Asking for the Docs Connect plan in the Set form while Docs Connect Dev Pack is active schedules the reversion to it at the next period, while the upgrade in the other direction is not done here at all: use POST api/2.0/settings/docscloud/switchtodevpack. The result is true when the change was accepted; the call is mutating, spends money in its Add form and is limited to ten requests a minute per user by default. Price the same purchase without paying for it with PUT api/2.0/portal/payment/calculatewallet.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| WalletQuantityRequestDto | body | WalletQuantityRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true when the purchase or the scheduled change was accepted, false when the provider declined it | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The quantity type is not Set or Add, the product is not a wallet service, the quantity is below the minimum for it, or that service is already set | - | - |
| 402 | The plan of the portal is not paid and the requested service is an add-on to it | - | - |
| 403 | The caller is not a DocSpace administrator, or the portal has no billing service configured | - | - |
| 404 | This portal has no billing customer, or its wallet has no sub-account in the accounting currency | - | - |
| 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
PortalQuotaApi
getPortalQuota
TenantQuotaWrapper getPortalQuota()
GET /api/2.0/portal/quota
Get the portal quota
Returns the quota this portal runs on - the allowance its tariff grants: how many users and paid users it may have, how many rooms, the largest total and single-file size, the price of the quota and the feature flags that go with it. The caller needs the portal-settings right and gets 403 without it; the call is read-only and idempotent. Sizes are in bytes, and maxTotalSize comes back as 0 when the calling account's own role is user, rather than as the real allowance. This is what the portal is allowed, not what it consumes: the consumption is reported by GET api/2.0/portal/usedspace in gigabytes and by GET api/2.0/portal/userscount. The quotas the portal could move to are listed by GET api/2.0/portal/payment/quotas, and GET api/2.0/portal/quota/right picks the smallest of them that would still fit. A free or trial quota carries no price, and the billing state that goes with the quota - paid, in grace period or not paid - is read from GET api/2.0/portal/tariff.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The allowance the current tariff grants this portal, with sizes in bytes | TenantQuotaWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller has no portal-settings right | - | - |
| 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
getPortalTariff
TariffWrapper getPortalTariff(refresh)
GET /api/2.0/portal/tariff
Get the portal tariff
Returns the tariff this portal runs on: its state, the end of the current period and the quotas - the plan and its add-ons - it is made of. Nothing has to be called first, the call is read-only and idempotent, and it keeps answering while the portal's payment has lapsed, which is what a client needs in order to show a payment warning. How much of it is filled depends on the caller: every user gets state, which is Trial, Paid, Delay for the grace period after the due date, or NotPaid; a room or DocSpace administrator also gets dueDate and delayDueDate; and a caller with the portal-settings right additionally gets id, customerId, licenseDate, the openSource, enterprise and developer flags and quotas, each entry naming the quota, its quantity, its own due date and the quota it switches to next period. Dates are in the portal time zone. Pass refresh=true to re-read the tariff from the billing system instead of the portal cache - it is slower, so use it after a payment, not on every page. What the next period will cost is listed by GET api/2.0/portal/tariff/upcoming.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| refresh | query | Boolean | Whether the tariff is re-read from the billing system instead of the portal cache. The remote read is slower, so ask for it right after a payment and leave it off for ordinary page loads. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The tariff of this portal, filled as far as the rights of the caller allow | TariffWrapper | 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
getPortalUsedSpace
DoubleWrapper getPortalUsedSpace()
GET /api/2.0/portal/usedspace
Get the portal used space
Returns how much space the content of this portal occupies, in gigabytes rounded to two decimals, so a client can show the storage bar next to the allowance. The caller needs the portal-settings right and is refused without it; the call is read-only and idempotent. The number is added up from the storage counters the portal keeps per owner, which means content that belongs to no account - system data - is not part of it, and it is a plain number, not an object. The counters are maintained as files are written and removed, so the value is current but may lag a large operation that is still running. The allowance to compare it with is maxTotalSize from GET api/2.0/portal/quota, in bytes rather than gigabytes, and the smallest quota that would still fit the portal is suggested by GET api/2.0/portal/quota/right. This operation says nothing about which room or user the space belongs to - the per-user figures come from the People API.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The space the portal content occupies, in gigabytes rounded to two decimals | DoubleWrapper | 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
getRightQuota
TenantQuotaWrapper getRightQuota()
GET /api/2.0/portal/quota/right
Get the recommended quota
Recommends the cheapest quota this portal could run on and still fit: the lowest-priced quota that is not billed yearly, whose user allowance is above the number of active accounts and whose storage allowance is above the space already used. The caller needs the portal-settings right and gets 403 without it. The call is read-only, idempotent and buys nothing - it only picks one quota out of those the portal may switch to, comparing them with the figures that GET api/2.0/portal/userscount and GET api/2.0/portal/usedspace report. The answer is a single quota in the same shape as GET api/2.0/portal/quota, with sizes in bytes; when no quota is large enough the answer is an empty body with 200 and not an error, so handle the empty result as nothing to recommend. Yearly quotas are left out by design, so the recommendation is always a monthly one - the full list to choose from comes from GET api/2.0/portal/payment/quotas, and the purchase itself is started with PUT api/2.0/portal/payment/url.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The cheapest monthly quota that would still fit this portal, or an empty body when none does | TenantQuotaWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller has no portal-settings right | - | - |
| 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
getUpcomingPayments
UpcomingPaymentArrayWrapper getUpcomingPayments(refresh)
GET /api/2.0/portal/tariff/upcoming
Get upcoming payments
Lists what this portal will be charged next for the quotas of its current tariff - one entry per quota that is going to be billed, with the amount, the currency and the due date. The caller needs the portal-settings right and gets 403 without it; the call is read-only and idempotent and keeps answering while the portal's payment has lapsed. Only quotas that are really charged appear: an overdue quota is skipped, and so is a quota that has no price of its own, such as a trial or a free plan - which is why the list can come back empty on a portal that does have a tariff. When a switch to another quota is scheduled for the next period, the entry describes that next quota and its quantity, so id and name may differ from what GET api/2.0/portal/tariff reports for today. amount is the unit price multiplied by quantity, in the currency named by currency as an ISO 4217 code, dueDate is in the portal time zone, and wallet marks a service paid from the portal wallet instead of the subscription.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| refresh | query | Boolean | Whether the tariff is re-read from the billing system instead of the portal cache. The remote read is slower, so ask for it right after a payment and leave it off for ordinary page loads. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The charges the portal is going to be billed next, one entry per quota, empty when nothing is due | UpcomingPaymentArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller has no portal-settings right | - | - |
| 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
PortalSettingsApi
continuePortal
continuePortal()
PUT /api/2.0/portal/continue
Restore a portal
Brings a deactivated portal back to the active state, so its users can sign in again and its domain serves the portal as before. It is reached only with the reactivation link that POST api/2.0/portal/suspend mails to the portal owner: that link authorizes the call in place of an authentication token, and no ordinary token is accepted here. The call is mutating and idempotent - it sets the status to active, re-applies the portal's Content Security Policy and refreshes its base domain, and a portal that is already active is simply left active. Nothing is returned in the body; read the result from status in GET api/2.0/portal. Deactivating the portal again means asking for a fresh letter with POST api/2.0/portal/suspend, because each link is issued for one operation. This operation cannot bring back a removed portal: the deletion behind DELETE api/2.0/portal/delete is final, and a removed portal has to be restored from a backup instead.
Parameters
This endpoint does not need any parameter.
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 | - |
| 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
deletePortal
StringWrapper deletePortal()
DELETE /api/2.0/portal/delete
Delete a portal
Removes this portal for good: its rooms, files, accounts, settings and OAuth clients go with it and its domain stops serving the portal. It is reached only with the removal link that POST api/2.0/portal/delete mails to the portal owner - that link authorizes the call instead of an authentication token - and the owner is checked again here; on a server installation the last remaining space cannot be removed. The call is destructive and cannot be undone, and there is no restore operation, so take a backup with POST api/2.0/backup/startbackup first when the content still matters. It keeps working while the portal's payment has lapsed. Along the way the portal is dropped from the hosting cache, the owner is mailed a confirmation, the removal is written to the audit trail and, for a portal that was paying, the support team is notified as well. The answer is the absolute URL of the feedback form to send the departing owner to. To pause the portal instead of erasing it, use PUT api/2.0/portal/suspend.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The absolute URL of the feedback form to send the owner of the removed portal to | 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 | - |
| 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
getPortalInformation
TenantWrapper getPortalInformation()
GET /api/2.0/portal
Get portal information
Returns the portal the request was addressed to - the tenant behind the current domain - with its name, alias, owner, language, time zone, industry, trusted-domain rules, version and creation date. Nothing has to be called first, the call is read-only and idempotent, and it keeps answering while the portal's payment has lapsed. What comes back depends on the caller's rights: a caller with the portal-settings right gets the whole record, while every other user gets an object in which only tenantId is filled and no error is raised - so check tenantAlias for null before reading the rest. status says whether the portal is active, suspended or pending removal, and creationDateTime, statusChangeDate, lastModified and versionChanged are UTC. region names the data-center region a hosted portal is served from and stays empty on a server installation and when the portal cache is off, while hostedRegion is the region written on the record itself. The settings of the same portal are read with GET api/2.0/settings, its tariff with GET api/2.0/portal/tariff and its quota with GET api/2.0/portal/quota.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The portal record, or an object in which only tenantId is filled when the caller has no portal-settings right | TenantWrapper | 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
getPortalPath
StringWrapper getPortalPath(virtualPath)
GET /api/2.0/portal/path
Get a path to the portal
Turns a portal-relative path into the absolute URL a client can open, filling in the scheme, the current portal domain and the virtual root the portal is hosted on. Any signed-in user may call it, nothing has to be called first, and the call is read-only and idempotent - it neither checks that the path exists nor that the caller is allowed to open it. virtualPath is taken as it is: an omitted or empty value yields the portal root, a value starting with / is appended to that root, a value starting with ~/ is resolved against the virtual root, and a value that already starts with http://, https:// or mailto: is handed back unchanged. The answer is a bare JSON string. The domain in the result is the one the portal answers on right now, so a renamed portal starts returning the new domain without any change on the client. Use it to build links that have to survive a rename; the portal's own addresses and settings are read from GET api/2.0/settings instead.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| virtualPath | query | String | The path to resolve. It is taken as it is: an omitted or empty value yields the portal root, a value starting with / is appended to that root, a value starting with ~/ is resolved against the virtual root, and one that already begins with http://, https:// or mailto: is handed back unchanged. Nothing checks that the path exists or that the caller may open it. | [optional] [example: /portal/documents] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The absolute URL that the given portal-relative path resolves to | 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
sendDeleteInstructions
sendDeleteInstructions()
POST /api/2.0/portal/delete
Send removal instructions
Mails the portal owner the confirmation link that removes this portal; nothing about the portal changes until that link is used. The caller has to be the portal owner and hold the portal-settings right, and on a server installation the last remaining space cannot be removed - the call is refused when every other space has limited access. The letter goes to the owner's own address whoever asked for it, and it warns about the subscription that will stop renewing when the portal is on a paid plan. The operation keeps working while the portal's payment has lapsed, is mutating only in that it sends a message, and is rate-limited to five requests per fifteen minutes per user and path by default, answering 429 above that. Nothing is returned in the body. The link in the letter authorizes DELETE api/2.0/portal/delete, which deletes the portal with all of its rooms, files and accounts and cannot be undone. To pause the portal instead of deleting it, send the deactivation letter with POST api/2.0/portal/suspend.
Parameters
This endpoint does not need any parameter.
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 | - |
| 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
sendSuspendInstructions
sendSuspendInstructions()
POST /api/2.0/portal/suspend
Send suspension instructions
Mails the portal owner the two confirmation links that deactivate this portal and bring it back again, and records the request in the audit trail; the portal itself is not changed here. The caller has to be the portal owner and hold the portal-settings right, and on a server installation the last remaining space cannot be deactivated - the call is refused when every other space has limited access. The letter always goes to the owner's own address, and the operation keeps working while the portal's payment has lapsed. It is mutating only in that it sends a message, and it is rate-limited to five requests per fifteen minutes per user and path by default, answering 429 above that. Nothing is returned in the body, so a client cannot tell from the answer whether the mail was delivered. The first link in the letter authorizes PUT api/2.0/portal/suspend, which suspends the portal, and the second one authorizes PUT api/2.0/portal/continue, which makes it active again. To remove the portal instead of pausing it, use POST api/2.0/portal/delete.
Parameters
This endpoint does not need any parameter.
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 | - |
| 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
suspendPortal
suspendPortal()
PUT /api/2.0/portal/suspend
Deactivate a portal
Deactivates this portal: its status becomes suspended and its users can no longer work in it, while all of its rooms, files and accounts stay untouched. It is reached only with the deactivation link that POST api/2.0/portal/suspend mails to the portal owner - that link authorizes the call instead of an authentication token - and the owner is checked again here, so a link issued for another account is refused. On a server installation the last remaining space cannot be deactivated. The call is mutating and idempotent: it sets the status, records the deactivation in the audit trail and refreshes the portal's base domain, and repeating it leaves the portal suspended. Nothing is returned in the body; the new state is read from status in GET api/2.0/portal. Bring the portal back with PUT api/2.0/portal/continue, using the second link from the same letter. To remove the portal and its content for good, use DELETE api/2.0/portal/delete instead - that cannot be undone.
Parameters
This endpoint does not need any parameter.
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 | - |
| 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
PortalUsersApi
createInvitationLink
InvitationLinkWrapper createInvitationLink(InvitationLinkCreateRequestDto)
POST /api/2.0/portal/users/invitationlink
Create an invitation link
Creates the portal's invitation link for one role and returns it together with the URL to share. A portal keeps at most one link per role, so a call for a role that already has one is refused - read the existing link with GET api/2.0/portal/users/invitationlink/{employeeType} and change it with PUT api/2.0/portal/users/invitationlink instead. Inviting members has to be enabled for the portal (GET api/2.0/settings/invitationsettings), employeeType has to be DocSpaceAdmin, RoomAdmin or User, and expiration, when given, has to lie in the future and is read in the portal time zone. The caller needs the right to add users of that role, only the portal owner may create the DocSpace administrator link, and a link for a paying role additionally needs a free paid seat in the portal quota. The call is mutating and not idempotent. The answer carries the id needed to update or delete the link, the shortened url, maxUseCount and currentUseCount, expiration in the portal time zone - empty for a link that never expires - and isExpired.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| InvitationLinkCreateRequestDto | body | InvitationLinkCreateRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The invitation link as it was created, with the id to address it later and the url to share | InvitationLinkWrapper | 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
deleteInvitationLink
StringWrapper deleteInvitationLink(InvitationLinkDeleteRequestDto)
DELETE /api/2.0/portal/users/invitationlink
Delete an invitation link
Deletes the portal's invitation link with the given id, so the URL shared from it stops letting anyone in; accounts that already joined through it are not touched. Inviting members has to be enabled for the portal (GET api/2.0/settings/invitationsettings) and the link has to exist - a second call with the same id is answered as not found. The caller needs the right to add users of the link's role, and only the portal owner may delete the DocSpace administrator link. The call is destructive and cannot be undone: a link for the same role has to be created again with POST api/2.0/portal/users/invitationlink, and it gets a new id, a new URL and a currentUseCount that starts from zero. Nothing is returned in the body. To stop invitations without losing the links, switch inviting members off for the whole portal with PUT api/2.0/settings/invitationsettings - the links then stay stored but are refused until it is switched on again.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| InvitationLinkDeleteRequestDto | body | InvitationLinkDeleteRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The invitation link is deleted and its URL no longer lets anyone join the portal | 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
getInvitationLink
StringWrapper getInvitationLink(employeeType)
GET /api/2.0/portal/users/invite/{employeeType}
Get a legacy invitation link
Deprecated - use POST api/2.0/portal/users/invitationlink and the neighbouring operations under that path, which store the link and let it be read, changed and revoked. Builds a shortened URL that lets whoever opens it join this portal with the role given in the path, and returns it as a bare string; nothing is stored, so the link can afterwards be neither listed nor withdrawn. Inviting members has to be enabled for the portal - GET api/2.0/settings/invitationsettings reports that - otherwise the call is refused. The caller needs the right to add users of the requested role and only the portal owner may ask for a DocSpace administrator link; a caller without that right gets an empty string instead of an error, so treat an empty answer as a refusal. The call changes nothing on the portal and may be repeated, each time returning an equivalent link. The URL carries a confirmation key bound to the calling account and the portal alias; it has no use limit and stops being accepted once the portal's e-mail key lifetime has passed, seven days by default - neither of the two can be set per link, which is what the replacement operations add.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| employeeType | path | EmployeeType | The role whoever follows the link joins with. Only DocSpaceAdmin, RoomAdmin and User have a link; any other role is refused. The portal keeps at most one link per role, so this value alone identifies it. | [required] [example: 1] [enum: All, RoomAdmin, Guest, DocSpaceAdmin, User] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The invitation URL to hand to the invited person, or an empty string when the caller may not invite that role | 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
getInvitationLinkByEmployeeType
InvitationLinkWrapper getInvitationLinkByEmployeeType(employeeType)
GET /api/2.0/portal/users/invitationlink/{employeeType}
Get an invitation link by role
Returns the portal's invitation link for one role - the URL to share, how long it lasts and how often it has already been used. Inviting members has to be enabled for the portal (GET api/2.0/settings/invitationsettings) and employeeType has to be DocSpaceAdmin, RoomAdmin or User; the caller needs the right to add users of that role, only the portal owner may read the DocSpace administrator link, and a link for a paying role is shown only while the portal quota still has a free paid seat. The call is read-only and idempotent, but the url it returns is signed for the calling account, so two administrators are handed two different URLs for one and the same link. A role that has no link yet is answered with an empty body and 200 rather than a 404 - create the link with POST api/2.0/portal/users/invitationlink. expiration is in the portal time zone and empty for a link without a deadline, isExpired says whether that deadline has passed, and currentUseCount counts how many accounts have already joined through the link.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| employeeType | path | EmployeeType | The role whoever follows the link joins with. Only DocSpaceAdmin, RoomAdmin and User have a link; any other role is refused. The portal keeps at most one link per role, so this value alone identifies it. | [required] [example: 1] [enum: All, RoomAdmin, Guest, DocSpaceAdmin, User] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The invitation link of that role, or an empty body when the portal has no link for it | InvitationLinkWrapper | 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
getPortalUsersCount
Int64Wrapper getPortalUsersCount()
GET /api/2.0/portal/userscount
Get a number of portal users
Returns how many accounts this portal currently has in the active state, whatever their role, so a client can show the seat usage next to the allowance. Accounts that were invited but have not joined yet and accounts that were disabled or removed are not counted. The caller needs the portal-settings right and is refused without it; the call is read-only and idempotent, and the number moves as soon as an account joins, is disabled or is deleted. The answer is a plain number, not an object. Compare it with countUser and countPaidUser from GET api/2.0/portal/quota to see how much of the allowance is left, and with GET api/2.0/portal/quota/right for the smallest quota that would still hold everyone. When the accounts themselves are needed, and not only how many there are, list them with the People API instead - this operation cannot filter by role, group or status.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The number of accounts of this portal that are in the active state | Int64Wrapper | 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
getUserById
UserInfoWrapper getUserById(userID)
GET /api/2.0/portal/users/{userID}
Get a portal user
Returns one user of this portal, addressed by ID, in the shape the portal stores the account: display name, e-mail, contacts, role and status flags, and the dates of the profile. Nothing has to be called first, and the call is read-only and idempotent. Who may be read is decided per pair of accounts: a caller always reads their own profile, a DocSpace administrator reads anyone, a room administrator reads anyone except a guest they have no relation with, and a user or a guest reads nobody but themselves - a pair that is not allowed is refused. An ID that belongs to no account of this portal and an ID of a system account are both answered as not found, so a 404 does not tell the two apart. userID in the path has to be a GUID; the calling user's own profile is easier to fetch with GET api/2.0/people/@self. This operation hands back the internal user record - use GET api/2.0/people/{userid} for the same user in the People format, with the group, quota and access information a client usually needs.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| userID | path | UUID (uuid) | The portal account the operation acts on, by user ID as GET api/2.0/people reports it. An ID belonging to no account of this portal and an ID of an internal system account are both answered as not found. | [required] [example: 00000000-0000-0000-0000-000000000000] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The account of this portal, in the internal user format | UserInfoWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 404 | No account with this ID exists on the portal, or the ID belongs to a system 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
markGiftMessageAsRead
markGiftMessageAsRead()
POST /api/2.0/portal/present/mark
Mark a gift message as read
Marks the open-source gift message - the notice a server installation shows about its free edition - as read for the calling user, so the client stops displaying it. Any signed-in user may call it and nothing has to be called first. The flag is stored per user, so marking it read for one account leaves it unread for everybody else on the portal. The call is mutating but idempotent: repeating it changes nothing. It never fails on the caller's behalf - a storage error is written to the portal log and the operation still answers with a success, so the answer is no proof that the flag was saved. Nothing is returned in the body, and no operation reads the flag back or clears it again, which makes the change effectively permanent for that user. It touches only this one notice: portal-wide announcements and the letters the portal sends are unaffected, and other per-user settings are stored through the operations under api/2.0/settings.
Parameters
This endpoint does not need any parameter.
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 | - |
| 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
sendCongratulations
sendCongratulations(Userid, Key)
POST /api/2.0/portal/sendcongratulations
Send congratulations
Sends the welcome letter that follows the registration of a new portal to the account named by userid and switches on the second authentication factor the installation is configured to require after registration; on a hosted portal in custom mode the registration data is mailed to the sales address as well. Open to unauthenticated callers: in place of a token it needs key, the confirmation key of the sign-in link the portal issued for that account, and that key is accepted for one hour after it was created - a wrong, foreign or expired key answers 403 and sends nothing. Both parameters go in the query string. The call is meant to be made once, right after registration; it is not idempotent, and every call within that hour sends the letters again. When the installation asks for SMS or an authenticator app after registration, this call is what enables that method for the whole portal, unless the new account is an internal test address. Nothing is returned in the body and there is no operation that reports afterwards whether the letters were delivered.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| Userid | query | UUID (uuid) | The account the welcome letter is addressed to, by portal user ID. The key in key has to have been issued for this same account, so the pair is what authorises the call. | [required] [example: 00000000-0000-0000-0000-000000000000] |
| Key | query | String | The confirmation key from the sign-in link the portal issued for that account, which stands in for a token here. It is accepted for one hour after it was created; a wrong, foreign or expired key answers 403 and sends nothing. | [required] [example: birthday] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The welcome letters were sent and the configured second factor was switched on for the portal | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The confirmation key does not match the user or is older than one hour | - | - |
| 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
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
updateInvitationLink
InvitationLinkWrapper updateInvitationLink(InvitationLinkUpdateRequestDto)
PUT /api/2.0/portal/users/invitationlink
Update an invitation link
Changes the deadline and the use limit of an existing invitation link, addressed by its id. The role of a link cannot be changed - delete it and create a link for the other role instead. Inviting members has to be enabled for the portal (GET api/2.0/settings/invitationsettings), the link has to exist, and maxUseCount may not be lower than the number of uses the link already has, which GET api/2.0/portal/users/invitationlink/{employeeType} reports as currentUseCount. An expiration in the past is refused; the body is applied as a whole, so omitting expiration clears the deadline and omitting maxUseCount removes the use limit. The caller needs the right to add users of the link's role and only the portal owner may change the DocSpace administrator link. The call is mutating, and repeating it with the same body leaves the link as it is. The whole link comes back as it now stands, with url signed for the calling account - the URL therefore differs between administrators while the link behind it is the same.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| InvitationLinkUpdateRequestDto | body | InvitationLinkUpdateRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The invitation link as it now stands, with the deadline and the use limit that were applied | InvitationLinkWrapper | 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
SecurityAccessToDevToolsApi
setTenantDevToolsAccessSettings
TenantDevToolsAccessSettingsWrapper setTenantDevToolsAccessSettings(TenantDevToolsAccessSettingsDto)
POST /api/2.0/settings/devtoolsaccess
Set the Developer Tools access settings
Sets whether the portal restricts the User role from using the developer tools (API keys, OAuth apps, webhooks); RoomAdmin and DocSpaceAdmin are never affected by this setting. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission). This is a mutating, idempotent, portal-wide call: it applies to every User on the tenant immediately. It returns the saved setting; read the current value at any time from GET api/2.0/settings/devtoolsaccess.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TenantDevToolsAccessSettingsDto | body | TenantDevToolsAccessSettingsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Saved developer tools access restriction for the User role | TenantDevToolsAccessSettingsWrapper | 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
TenantDevToolsAccessSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
SecurityActiveConnectionsApi
getAllActiveConnections
ActiveConnectionsWrapper getAllActiveConnections()
GET /api/2.0/security/activeconnections
Get active connections
Lists the connections the calling user currently has open on this portal - one item per successful sign-in that is still active - so a client can show where the account is signed in and close what does not belong there. Any signed-in user may call it, nothing has to be called first, and the answer always covers the caller alone: the operation is read-only, idempotent and cannot show another user's connections. Items cover the last year and are ordered newest sign-in first, with the caller's own connection moved to the top and its browser, platform, IP address and location refreshed from the current request. loginEvent is the ID of that own connection and is 0 when the request was authenticated with a token in the Authorization header instead of the portal cookie; nothing is then marked as current, and a user with no stored connections gets a single item describing the current request. country and city are resolved from the IP address and stay empty when it cannot be located. Pass an item's id to PUT api/2.0/security/activeconnections/logout/{loginEventId} to end that one connection.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The caller's active connections, newest sign-in first, with loginEvent pointing at the connection the request itself was made with | ActiveConnectionsWrapper | 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
logOutActiveConnection
BooleanWrapper logOutActiveConnection(loginEventId)
PUT /api/2.0/security/activeconnections/logout/{loginEventId}
Log out one connection
Closes one active connection: the sign-in behind loginEventId is marked inactive, the token and cookie tied to it stop working, the client holding it is disconnected and a logout entry is written to the portal audit trail. Take loginEventId from the id of an item of GET api/2.0/security/activeconnections, which also reports in loginEvent which connection the caller is using, so a client can avoid closing its own. A user may close their own connections, while closing somebody else's requires a DocSpace administrator and any other caller is refused with 403. The call is mutating, destructive for that one session and idempotent, and it leaves every other connection of the user alone - PUT api/2.0/security/activeconnections/logoutallexceptthis is the way to close the rest in one go. Only true means the connection was open and has just been closed; false comes back when this portal has no such active connection, including one that was already closed, and after any other failure.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| loginEventId | path | Integer (int32) | The sign-in to act on, by login event ID. Take it from the id of an item of GET api/2.0/security/activeconnections, which also marks the connection the caller is using, so a client can avoid picking its own. | [required] [example: 12345] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true when the connection was open and has been closed, false when this portal has no such active connection or the attempt failed | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator and the connection belongs to another user | - | - |
| 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
logOutAllActiveConnectionsChangePassword
StringWrapper logOutAllActiveConnectionsChangePassword()
PUT /api/2.0/security/activeconnections/logoutallchangepassword
Log out and reset password
Closes every active connection of the calling user and returns the link that user has to open to set a new password - the answer to a suspicious sign-in seen in GET api/2.0/security/activeconnections. Any signed-in user may call it for their own account and nothing has to be called first; the same clean-up for somebody else is PUT api/2.0/security/activeconnections/logoutall/{userId}. The call is mutating and destructive for sessions - every token and cookie issued to the user before it stops working and the clients holding them are disconnected - and it is not idempotent: the request is written to the portal audit trail, which invalidates the link any earlier call returned, and the caller's own client is handed a fresh cookie in the response and stays signed in through a new connection. The password itself is not changed here, and the link is handed back to the caller rather than mailed to the user: the URL carries a time-limited PasswordChange key, which the confirmation page it opens - or PUT api/2.0/people/{userid}/password - needs to accept the new password. A failure is swallowed instead of reported, so an empty body with status 200 means nothing was done and the call has to be repeated.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The URL the user has to open to set a new password, or an empty result when the operation failed | 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 | - |
| 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
logOutAllActiveConnectionsForUser
logOutAllActiveConnectionsForUser(userId)
PUT /api/2.0/security/activeconnections/logoutall/{userId}
Log out a user everywhere
Closes every active connection of one portal user: the connections are marked inactive, every token and cookie issued to that user before the call stops working, the clients holding them are disconnected and a logout entry is written to the portal audit trail. Nothing has to be called first; userId is the portal user ID that GET api/2.0/people returns. A user may pass their own ID, while ending somebody else's connections requires a DocSpace administrator and any other caller is refused with 403. The call is mutating, destructive for those sessions and idempotent - a user with nothing open is not an error - and it returns no content, so the state afterwards is read from GET api/2.0/security/activeconnections. A caller who ends their own connections is handed a fresh cookie in the response and stays signed in through a new connection. Nothing else about the user changes: the account stays enabled and the password stays valid, and to keep the current connection alive instead use PUT api/2.0/security/activeconnections/logoutallexceptthis.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| userId | path | UUID (uuid) | The portal account the operation acts on, by user ID as GET api/2.0/people reports it. Acting on an account other than the caller's own generally needs administrator rights. | [required] [example: 00000000-0000-0000-0000-000000000000] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The connections of that user have been closed; the response carries no content | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator and the ID in the path is not their own | - | - |
| 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
logOutAllExceptThisConnection
StringWrapper logOutAllExceptThisConnection()
PUT /api/2.0/security/activeconnections/logoutallexceptthis
Log out other connections
Closes every active connection of the calling user except the one this request was made with, so the current client keeps working while every other browser and device is signed out. Any signed-in user may call it for their own account and nothing has to be called first. The connection to keep is the one behind the portal authentication cookie: a request authenticated with a token in the Authorization header has none, and then every connection of the user is closed, including the one that token belongs to - read loginEvent from GET api/2.0/security/activeconnections first to see which connection, if any, will survive. The call is mutating and destructive for the other sessions, and idempotent: the tokens behind them stop working, their clients are disconnected at once and a logout entry is written to the portal audit trail. It answers with the display name of the calling user, while an empty answer with status 200 means the attempt failed and nothing can be assumed about what was closed.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The display name of the calling user, or an empty result when the operation failed | 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 | - |
| 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
SecurityAuditTrailDataApi
createAuditTrailReport
DocumentBuilderTaskWrapper createAuditTrailReport(format)
POST /api/2.0/security/audit/events/report
Start audit trail report
Queues a report of the portal's audit trail and returns the state of the background job that builds it. The report covers the period reaching from now back by the audit trail lifetime that GET api/2.0/security/audit/settings/lifetime reports and is never filtered: the query parameters of GET api/2.0/security/audit/events/filter do not apply here. The caller needs the portal-settings right of a DocSpace administrator plus the audit option of the portal's pricing plan, otherwise the call is answered with 402. The file is not ready when the response arrives - poll GET api/2.0/security/audit/events/report until isCompleted is true, then take resultFileUrl, and treat a non-empty error as a failed build. The finished file is saved to the caller's My documents section, as an XLSX workbook by default or as CSV when format=Csv, in which case resultFileId stays empty and only the name and the URL identify it. One job runs per caller and kind: calling again while the previous one is still building returns that job instead of starting a second, and DELETE api/2.0/security/audit/events/report cancels it.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| format | query | AuditReportFormat | The format the report file is written in. The workbook format is the default and is the only one that leaves the finished file addressable by ID: a report asked for as CSV comes back with an empty resultFileId, so it can only be reached through resultFileName and resultFileUrl. | [optional] [example: Xlsx] [enum: 0, 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of the queued job that builds the audit trail report | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The portal's pricing plan has no audit option, or the login history and audit trail section is not enabled | - | - |
| 403 | The caller does not have the portal-settings right of a DocSpace administrator | - | - |
| 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
getAuditEventsByFilter
AuditEventArrayWrapper getAuditEventsByFilter(userId, moduleType, actionType, action, entryType, target, from, to, count, startIndex)
GET /api/2.0/security/audit/events/filter
Get filtered audit events
Returns the portal's audit events that match the filters in the query - by the user who acted, the module the action belongs to, the action and its type, the entity type and target, and the period - and is the operation behind the audit trail page. The caller needs the portal-settings right of a DocSpace administrator plus the audit option of the portal's pricing plan; when that option is missing the filters are silently ignored and the answer is the same twenty most recent events that GET api/2.0/security/audit/events/last returns, and when the login history and audit trail section is disabled altogether the call is answered with 402. Take the values accepted by action, actionType, moduleType and entryType from GET api/2.0/security/audit/types, and the tree they belong to from GET api/2.0/security/audit/mappers. A non-default action matches only that action and, combined with target, only its exact value; it also stops moduleType and actionType from narrowing the result, so combine target with entryType instead of action when filtering by target without pinning a single action. from and to are read as UTC instants while date comes back in the portal time zone, count defaults to 100 and cannot exceed it, and the filters are applied before the page window, so a full page means there may be more matching events beyond it. The operation is read-only.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| userId | query | UUID (uuid) | The user who performed the action, given by portal user ID. Leave it at the empty GUID to keep the events of every user. | [optional] [example: 00000000-0000-0000-0000-000000000001] |
| moduleType | query | LocationType | The module the recorded action belongs to, spelled as GET api/2.0/security/audit/types lists it under moduleTypes. GET api/2.0/security/audit/mappers shows which module records which action. The default value keeps every module. | [optional] [example: Files] [enum: 0, 1, 2, 3, 27, 29, 30, 31] |
| actionType | query | ActionType | The kind of change the action made, spelled as GET api/2.0/security/audit/types lists it under actionTypes. The default value keeps every kind. | [optional] [example: Create] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] |
| action | query | MessageAction | The exact action recorded, spelled as the messageAction of GET api/2.0/security/audit/mappers. Naming one narrows the answer to that single action and overrides moduleType and actionType, which stop narrowing anything once it is set. | [optional] [example: FileCreated] [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] |
| entryType | query | EntryType | The kind of object the action was performed on, spelled as GET api/2.0/security/audit/types lists it under entryTypes. Pair it with target to filter by object without pinning a single action. | [optional] [example: File] [enum: 0, 1, 2, 23, 24, 25, 26, 27] |
| target | query | String | The object the action was performed on, as the audit trail recorded it - a file name, a user account, a room title. It is matched in full and exactly as stored, so it narrows the answer only when action or entryType is set as well. | [optional] [example: document.docx] |
| from | query | Date (date-time) | The earliest moment an event may have been recorded at, read as a UTC instant. The date of the events that come back is in the portal time zone instead, so the two do not line up on a portal that is not on UTC. | [optional] [example: 2024-01-01T00:00:00Z] |
| to | query | Date (date-time) | The latest moment an event may have been recorded at, read as a UTC instant in the same way as from. | [optional] [example: 2024-01-31T23:59:59Z] |
| count | query | Integer (int32) | How many events one page may hold. The maximum is also the default, so a client that wants shorter pages has to ask for them; a full page means there may be further matches beyond it. | [optional] [example: 100] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many matching events to skip before the page begins, counting from the newest. Advance it by count to walk backwards through the trail. | [optional] [example: 0] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Audit events matching the filters, newest first, or the twenty most recent events when the portal has no audit option | AuditEventArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The login history and audit trail section is not enabled for this portal | - | - |
| 403 | The caller does not have the portal-settings right of a DocSpace administrator | - | - |
| 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
getAuditSettings
TenantAuditSettingsResponseWrapper getAuditSettings()
GET /api/2.0/security/audit/settings/lifetime
Get audit lifetime settings
Returns how long this portal keeps its two security logs: loginHistoryLifeTime for login events and auditTrailLifeTime for audit events, both counted in days, together with lastModified, the moment the pair was last saved. The caller needs the portal-settings right of a DocSpace administrator, and in a cloud installation the login history and audit trail section must be enabled for the portal, otherwise the call is answered with 402; the audit option of the pricing plan is not required to read the values. Both numbers lie between 1 and 180 days, and a portal that never changed them reports the default of 180. They define the window the rest of the audit operations work in: GET api/2.0/security/audit/events/last looks exactly this far back, and the reports started by POST api/2.0/security/audit/login/report and POST api/2.0/security/audit/events/report cover exactly this period. The operation is read-only; change the values with POST api/2.0/security/audit/settings/lifetime.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The login history and audit trail lifetimes of the portal, in days | TenantAuditSettingsResponseWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The login history and audit trail section is not enabled for this portal | - | - |
| 403 | The caller does not have the portal-settings right of 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
TenantAuditSettingsResponseWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getAuditTrailMappers
AuditTrailProductMapperArrayWrapper getAuditTrailMappers(productType, moduleType)
GET /api/2.0/security/audit/mappers
Get audit trail mappers
Returns the audit vocabulary as the tree it really is: every product, the modules inside it, and for each module the actions it can record together with the type of change and the entity each of them applies to. Pass productType to keep a single product and moduleType to keep a single module inside the products that remain; omit both to get the whole tree. The caller needs the portal-settings right of a DocSpace administrator; the audit option of the pricing plan is not required, and the call is read-only and safe to repeat. Each action carries messageAction, the name to send as the action filter of GET api/2.0/security/audit/events/filter, next to actionType and entity, the values its actionType and entryType filters accept - this is where a caller learns which action belongs to which module instead of guessing. A filter that matches nothing yields an empty list rather than an error. Use GET api/2.0/security/audit/types for the flat lists of the same names.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| productType | query | ProductType | The product to keep, spelled as GET api/2.0/security/audit/types lists it under productTypes. Omitting it keeps every product; a value no product matches yields an empty list rather than an error. | [optional] [example: Documents] [enum: 2, 3, 7, 8] |
| moduleType | query | LocationType | The module to keep inside the products that survive productType, spelled as GET api/2.0/security/audit/types lists it under moduleTypes. Omitting it keeps every module of those products. | [optional] [example: Files] [enum: 0, 1, 2, 3, 27, 29, 30, 31] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The products with their modules and the actions each module can record | AuditTrailProductMapperArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller does not have the portal-settings right of a DocSpace administrator | - | - |
| 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
AuditTrailProductMapperArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getAuditTrailReport
DocumentBuilderTaskWrapper getAuditTrailReport()
GET /api/2.0/security/audit/events/report
Get audit trail report status
Returns the state of the audit trail report the calling user has started, and is the operation to poll after POST api/2.0/security/audit/events/report. The caller needs the portal-settings right of a DocSpace administrator plus the audit option of the portal's pricing plan, otherwise the call is answered with 402. Jobs are kept per user and per report kind: this operation never shows another administrator's report, nor the login history report, which has its own status at GET api/2.0/security/audit/login/report. The answer is empty when no report of this kind is known for the caller; otherwise percentage grows towards 100, isCompleted turns true when the build has ended, error carries the failure message when it ended badly, and resultFileName and resultFileUrl point at the file saved to the caller's My documents section, while resultFileId is filled for an XLSX report only. The operation is read-only and safe to poll every few seconds; a finished job is dropped as soon as the next report of this kind is started.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of the caller's audit trail report, or an empty answer when none is known | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The portal's pricing plan has no audit option, or the login history and audit trail section is not enabled | - | - |
| 403 | The caller does not have the portal-settings right of 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: Not defined
- Accept: application/json
getAuditTrailTypes
AuditTrailTypesWrapper getAuditTrailTypes()
GET /api/2.0/security/audit/types
Get audit trail types
Returns the vocabularies the audit filters are built from: actions lists every action the portal can record, actionTypes the kinds of change they stand for, productTypes the products they belong to, moduleTypes the locations inside those products, and entryTypes the kinds of entity an action can be applied to. The caller needs the portal-settings right of a DocSpace administrator; the audit option of the pricing plan is not required, so the lists can be read on any portal. The operation is read-only, takes no parameters and depends on nothing else. Every value is the name to send in the matching query parameter of GET api/2.0/security/audit/events/filter or GET api/2.0/security/audit/login/filter, so read this operation once and reuse the answer instead of guessing spellings. The response is an untyped object holding those five arrays of names, and it changes only with the portal version. Use GET api/2.0/security/audit/mappers when the relations between products, modules and actions are needed rather than the flat lists.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The action, action type, product, module and entry type names accepted by the audit filters | AuditTrailTypesWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller does not have the portal-settings right of 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: Not defined
- Accept: application/json
getLastAuditEvents
AuditEventArrayWrapper getLastAuditEvents()
GET /api/2.0/security/audit/events/last
Get recent audit events
Returns the twenty most recent audit events of the portal - the creations, changes, deletions, sharing and settings updates its members made - as the short summary a settings page shows before anyone asks for the full trail. The caller needs the portal-settings right of a DocSpace administrator, and in a cloud installation the login history and audit trail section must be enabled for the portal, otherwise the call is answered with 402. The operation is read-only and takes no parameters: it looks back exactly as far as the audit trail lifetime that GET api/2.0/security/audit/settings/lifetime reports, returns at most twenty events ordered newest first, and cannot be filtered. date is given in the portal time zone, actionText is the readable sentence describing the event with every substituted value shortened to fifty characters here, and target names the entity the action was applied to. An empty list means nothing was recorded inside that period. Use GET api/2.0/security/audit/events/filter to filter by user, module, action or period.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The twenty most recent audit events of the portal, newest first | AuditEventArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The login history and audit trail section is not enabled for this portal | - | - |
| 403 | The caller does not have the portal-settings right of 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: Not defined
- Accept: application/json
setAuditSettings
TenantAuditSettingsResponseWrapper setAuditSettings(TenantAuditSettingsWrapper)
POST /api/2.0/security/audit/settings/lifetime
Set audit lifetime settings
Sets how long this portal keeps its login history and its audit trail, in days, and returns the pair as it was stored. The caller needs the portal-settings right of a DocSpace administrator plus the audit option of the portal's pricing plan, otherwise the call is answered with 402. Send both numbers inside settings: each has to be between 1 and 180 days, and a value outside that range is refused with 400 without either number being saved, so read the current pair from GET api/2.0/security/audit/settings/lifetime and resend the one that should stay as it is. The call replaces the stored settings rather than merging them, is idempotent, and takes effect at once: the period covered by GET api/2.0/security/audit/events/last and by both audit reports shrinks or grows with it, and events older than the new lifetime stop being reported. The change is itself recorded in the audit trail.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TenantAuditSettingsWrapper | body | TenantAuditSettingsWrapper | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The login history and audit trail lifetimes as they were stored | TenantAuditSettingsResponseWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | A lifetime is outside the allowed range of 1 to 180 days | - | - |
| 402 | The portal's pricing plan has no audit option, or the login history and audit trail section is not enabled | - | - |
| 403 | The caller does not have the portal-settings right of 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
TenantAuditSettingsResponseWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
terminateAuditTrailReport
terminateAuditTrailReport()
DELETE /api/2.0/security/audit/events/report
Terminate audit trail report
Cancels the audit trail report the calling user has running and drops it from the build queue. The caller needs the portal-settings right of a DocSpace administrator plus the audit option of the portal's pricing plan, otherwise the call is answered with 402. Cancellation is handed to the same background service that builds the report, so a successful answer means the request was accepted rather than that the job has already stopped: poll GET api/2.0/security/audit/events/report to watch it disappear. The operation returns no content and touches only the caller's own audit trail report - the login history report is cancelled by DELETE api/2.0/security/audit/login/report, and no report of another user can be reached from here. It is idempotent: cancelling when nothing is running is not an error. A job stopped before it finished writing leaves nothing in My documents, and a report cancelled by mistake has to be built again with POST api/2.0/security/audit/events/report.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The cancellation of the caller's audit trail report has been accepted | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The portal's pricing plan has no audit option, or the login history and audit trail section is not enabled | - | - |
| 403 | The caller does not have the portal-settings right of 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
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
SecurityBannersVisibilityApi
setTenantBannerSettings
TenantBannerSettingsWrapper setTenantBannerSettings(TenantBannerSettingsDto)
POST /api/2.0/settings/banner
Set the banners visibility
Sets whether the portal's promotional banners are hidden for every user. Available only on an Enterprise license; every other plan is refused regardless of the caller's role. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission). The flag only takes effect on a Standalone (self-hosted) installation; on SaaS, banners are always shown no matter what is saved here. This is a mutating, idempotent, portal-wide call: it applies to every user on the tenant immediately. It returns the saved setting; read the current value at any time from GET api/2.0/settings/banner.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TenantBannerSettingsDto | body | TenantBannerSettingsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Saved promotional banners visibility setting | TenantBannerSettingsWrapper | 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
SecurityCSPApi
configureCsp
CspWrapper configureCsp(CspRequestsDto)
POST /api/2.0/security/csp
Configure CSP settings
Replaces the list of external domains the portal's Content Security Policy trusts and returns the policy header the portal serves to browsers from that moment on. The list in domains replaces the stored one, so an omitted or empty list falls back to the portal's built-in policy, and every entry that is sent becomes an allowed source for scripts, styles, images, fonts, frames, media and connections at once. An entry may be a host, a host with a scheme, or a wildcard host such as *.example.com; it has to form a valid absolute address and may contain ASCII characters only, and an entry that does not is refused with 400 before anything is saved. The caller needs the portal-settings right of a DocSpace administrator, and the request is also refused with 403 when the header built from the list grows past the size configured for the installation, 15 KB by default. The change applies to the whole portal at once and is idempotent. Read the current state with GET api/2.0/security/csp.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CspRequestsDto | body | CspRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The stored domains and the policy header the portal now serves | CspWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | An entry of domains is not a valid address or holds non-ASCII characters | - | - |
| 403 | The caller does not have the portal-settings right of a DocSpace administrator, or the built policy header exceeds the size allowed for the installation | - | - |
| 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
getCspSettings
CspWrapper getCspSettings()
GET /api/2.0/security/csp
Get CSP settings
Returns the Content Security Policy this portal serves: domains, the external hosts an administrator has allowed, and header, the whole policy value built from them together with the portal's own defaults and the integrations it has switched on. The operation is anonymous and reachable cross-origin - no token is needed - because the login and editor front-ends read it before anyone has signed in. It is read-only for the caller, but it does repair the portal's cached policy when the cache has lost it, so a call can rebuild the header instead of only reading it. The answer honours If-Modified-Since: send back the Last-Modified value of an earlier answer and an unchanged policy comes back as an empty not-modified response rather than a body. domains is an empty list on a portal nobody has configured, while header is filled from the defaults even then. Change the allowed domains with POST api/2.0/security/csp, which does need a DocSpace administrator.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The allowed domains and the full policy header the portal serves | CspWrapper | 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
SecurityFirebaseApi
docRegisterPusnNotificationDevice
FireBaseUserWrapper docRegisterPusnNotificationDevice(FirebaseRequestsDto)
POST /api/2.0/settings/push/docregisterdevice
Register a push device
Registers one mobile device of the calling user for the push notifications of the Documents application, by storing the Firebase token that device was issued together with the initial isSubscribed state. The token is handed out by Firebase to the mobile client, so obtain it there before calling: nothing here checks it, and it is kept as an opaque string of up to 255 characters. Every signed-in member registers its own devices, whatever its role - owner, administrator, user or guest - and a registration is bound to the caller and the current portal, so another member's devices cannot be touched. The call is safe to repeat, but it is not an update: a token already registered comes back as it stands and isSubscribed from the request is ignored, so switch an existing registration on or off with PUT api/2.0/settings/push/docsubscribe instead. What comes back is the stored registration, with application always doc and isSubscribed as stored. Only a subscribed device is sent the room activity messages, such as an invitation to a room, a role change, an archived room or a new document in a room, and only while the installation itself is configured with Firebase credentials.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| FirebaseRequestsDto | body | FirebaseRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The stored device registration of the calling user, with the Firebase token, the doc application and the subscription state as they are kept | FireBaseUserWrapper | 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
subscribeDocumentsPushNotification
FireBaseUserWrapper subscribeDocumentsPushNotification(FirebaseRequestsDto)
PUT /api/2.0/settings/push/docsubscribe
Set push subscription
Switches the push notifications of the Documents application on or off for one already registered device of the calling user: send that device's Firebase token together with isSubscribed true to let the messages through or false to stop them. The device has to be registered first with POST api/2.0/settings/push/docregisterdevice, and only the subscription state is written - the token is matched, never changed. Every signed-in member manages its own devices, whatever its role - owner, administrator, user or guest - and a token that belongs to another member or to another portal is not matched at all, so nothing of theirs can be switched. Repeating the call with the same pair leaves the registration as it is. What comes back is the updated registration, while an empty response means no registration of the caller carries that token and nothing was stored - register the device and call again. A device switched off keeps its token stored but is left out of the delivery, and the other devices of the same member are unaffected. Which kinds of notification the account receives at all is a separate setting, read with GET api/2.0/settings/notification/{type}.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| FirebaseRequestsDto | body | FirebaseRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The device registration as it stands after the change, or an empty response when no registration of the calling user carries the token that was sent | FireBaseUserWrapper | 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
SecurityLoginHistoryApi
createLoginHistoryReport
DocumentBuilderTaskWrapper createLoginHistoryReport(format)
POST /api/2.0/security/audit/login/report
Start login history report
Queues a report of the portal's login history and returns the state of the background job that builds it. The report covers the period reaching from now back by the login history lifetime that GET api/2.0/security/audit/settings/lifetime reports and is never filtered: the query parameters of GET api/2.0/security/audit/login/filter do not apply here. The caller needs the portal-settings right of a DocSpace administrator plus the audit option of the portal's pricing plan, otherwise the call is answered with 402. The file is not ready when the response arrives - poll GET api/2.0/security/audit/login/report until isCompleted is true, then take resultFileUrl, and treat a non-empty error as a failed build. The finished file is saved to the caller's My documents section, as an XLSX workbook by default or as CSV when format=Csv, in which case resultFileId stays empty and only the name and the URL identify it. One job runs per caller and kind: calling again while the previous one is still building returns that job instead of starting a second, and DELETE api/2.0/security/audit/login/report cancels it.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| format | query | AuditReportFormat | The format the report file is written in. The workbook format is the default and is the only one that leaves the finished file addressable by ID: a report asked for as CSV comes back with an empty resultFileId, so it can only be reached through resultFileName and resultFileUrl. | [optional] [example: Xlsx] [enum: 0, 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of the queued job that builds the login history report | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The portal's pricing plan has no audit option, or the login history and audit trail section is not enabled | - | - |
| 403 | The caller does not have the portal-settings right of a DocSpace administrator | - | - |
| 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
getLastLoginEvents
LoginEventArrayWrapper getLastLoginEvents()
GET /api/2.0/security/audit/login/last
Get recent login events
Returns the twenty most recent login events of the whole portal - successful sign-ins, sign-outs and failed attempts alike - as the short summary a settings page shows before anyone asks for the full history. The caller needs the portal-settings right of a DocSpace administrator, and in a cloud installation the login history and audit trail section must be enabled for the portal, otherwise the call is answered with 402. The operation is read-only and takes no parameters: the number of events is fixed at twenty, nothing can be filtered, and events are ordered newest first. date is given in the portal time zone, actionText is the readable sentence describing the event with every substituted value shortened to fifty characters here, and country and city are resolved from the IP address and stay empty when it cannot be located. An empty list means the portal has recorded no login events yet. Use GET api/2.0/security/audit/login/filter to filter by user, action or period and to page through the whole history.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The twenty most recent login events of the portal, newest first | LoginEventArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The login history and audit trail section is not enabled for this portal | - | - |
| 403 | The caller does not have the portal-settings right of 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: Not defined
- Accept: application/json
getLoginEventsByFilter
LoginEventArrayWrapper getLoginEventsByFilter(userId, action, from, to, count, startIndex)
GET /api/2.0/security/audit/login/filter
Get filtered login events
Returns the portal's login events that match the filters in the query - by user, by login action and by period - and is the operation behind the login history page. The caller needs the portal-settings right of a DocSpace administrator plus the audit option of the portal's pricing plan; when that option is missing the filters are silently ignored and the answer is the same twenty most recent events that GET api/2.0/security/audit/login/last returns, and when the login history and audit trail section is disabled altogether the call is answered with 402. Omit a filter to match everything. from and to are read as UTC instants while date comes back in the portal time zone, count defaults to 100 and cannot exceed it, startIndex skips events from the newest end, and the page window is applied to the log before the filters, so a page can hold fewer items than count while older matches still exist. The operation is read-only; take the values accepted by action from GET api/2.0/security/audit/types.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| userId | query | UUID (uuid) | The user whose sign-in attempts are kept, given by portal user ID. Leave it at the empty GUID to keep the events of every user. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| action | query | MessageAction | The sign-in action recorded, spelled as GET api/2.0/security/audit/types lists it under actions - a successful login, a failed one, a logout. The default value keeps every action. | [optional] [example: FileCreated] [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] |
| from | query | Date (date-time) | The earliest moment an event may have been recorded at, read as a UTC instant. The date of the events that come back is in the portal time zone instead, so the two do not line up on a portal that is not on UTC. | [optional] [example: 2024-01-15T10:30:00Z] |
| to | query | Date (date-time) | The latest moment an event may have been recorded at, read as a UTC instant in the same way as from. | [optional] [example: 2024-01-15T10:30:00Z] |
| count | query | Integer (int32) | How many events one page may hold. The maximum is also the default, so a client that wants shorter pages has to ask for them. | [optional] [example: 1] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many events to skip before the page begins, counting from the newest. It is applied to the log before the filters, so a page can hold fewer events than count while older matches still exist. | [optional] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Login events matching the filters, newest first, or the twenty most recent events when the portal has no audit option | LoginEventArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The login history and audit trail section is not enabled for this portal | - | - |
| 403 | The caller does not have the portal-settings right of a DocSpace administrator | - | - |
| 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
getLoginHistoryReport
DocumentBuilderTaskWrapper getLoginHistoryReport()
GET /api/2.0/security/audit/login/report
Get login history report status
Returns the state of the login history report the calling user has started, and is the operation to poll after POST api/2.0/security/audit/login/report. The caller needs the portal-settings right of a DocSpace administrator plus the audit option of the portal's pricing plan, otherwise the call is answered with 402. Jobs are kept per user and per report kind: this operation never shows another administrator's report, nor the audit trail report, which has its own status at GET api/2.0/security/audit/events/report. The answer is empty when no report of this kind is known for the caller; otherwise percentage grows towards 100, isCompleted turns true when the build has ended, error carries the failure message when it ended badly, and resultFileName and resultFileUrl point at the file saved to the caller's My documents section, while resultFileId is filled for an XLSX report only. The operation is read-only and safe to poll every few seconds; a finished job is dropped as soon as the next report of this kind is started.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of the caller's login history report, or an empty answer when none is known | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The portal's pricing plan has no audit option, or the login history and audit trail section is not enabled | - | - |
| 403 | The caller does not have the portal-settings right of 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: Not defined
- Accept: application/json
terminateLoginHistoryReport
terminateLoginHistoryReport()
DELETE /api/2.0/security/audit/login/report
Terminate login history report
Cancels the login history report the calling user has running and drops it from the build queue. The caller needs the portal-settings right of a DocSpace administrator plus the audit option of the portal's pricing plan, otherwise the call is answered with 402. Cancellation is handed to the same background service that builds the report, so a successful answer means the request was accepted rather than that the job has already stopped: poll GET api/2.0/security/audit/login/report to watch it disappear. The operation returns no content and touches only the caller's own login history report - the audit trail report is cancelled by DELETE api/2.0/security/audit/events/report, and no report of another user can be reached from here. It is idempotent: cancelling when nothing is running is not an error. A job stopped before it finished writing leaves nothing in My documents, and a report cancelled by mistake has to be built again with POST api/2.0/security/audit/login/report.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The cancellation of the caller's login history report has been accepted | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The portal's pricing plan has no audit option, or the login history and audit trail section is not enabled | - | - |
| 403 | The caller does not have the portal-settings right of 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
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
SecurityOAuth2Api
generateJwtToken
StringWrapper generateJwtToken()
GET /api/2.0/security/oauth2/token
Generate JWT token
Issues a short-lived JWT that identifies the calling user to the identity service, the component that stores the OAuth2 applications of this installation and their consents. Any signed-in user may call it, nothing has to be prepared first, and the token always describes the caller - it cannot be issued on behalf of somebody else. The token is signed with the installation's own key and carries the user ID, name and e-mail, the portal ID and address, whether the caller is an administrator or a guest, and whether the portal's developer tools setting leaves OAuth2 applications open to ordinary users. It expires five minutes after it was issued and is meant to be presented to the identity service in the x-signature header, not to this API: requests to the portal are authorized with the token that POST api/2.0/authentication returns, and this JWT is not accepted in its place. The call is read-only and gives the token back as a plain string; ask for a fresh one per exchange instead of storing it.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The signed JWT identifying the caller, valid for five minutes | 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 | - |
| 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
SecuritySMTPSettingsApi
getSmtpOperationStatus
SmtpOperationStatusRequestsWrapper getSmtpOperationStatus()
GET /api/2.0/smtpsettings/smtp/test/status
Get SMTP test status
Returns the state of the test message that GET api/2.0/smtpsettings/smtp/test queued for this portal, and is the operation to poll while that test runs. A test has to be queued first; the caller needs the portal-settings right of a DocSpace administrator, and the SMTP settings section has to be enabled for the portal, otherwise the call is answered with 402. The call changes no settings, but it is not free of consequence: the first answer that reports completed true also discards the finished job, so a later call no longer knows about it - take error from that answer and keep it. An empty answer means the portal has no test on record, either because none was queued or because its result has already been read. While the job runs, percents climbs to 100 and status names the step reached, such as Connect to host or Send test message; error is empty until something fails and stays empty when the relay accepted the message. id identifies the queued job, of which a portal only ever has one.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of the test message of the portal, or an empty answer when no test is on record | SmtpOperationStatusRequestsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The SMTP settings section is not enabled for this portal | - | - |
| 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
SmtpOperationStatusRequestsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getSmtpSettings
SmtpSettingsWrapper getSmtpSettings()
GET /api/2.0/smtpsettings/smtp
Get SMTP settings
Returns the SMTP relay this portal sends its own mail through - host, port, sender identity and authentication flags - as it is stored for the portal. Nothing has to be called first; the caller needs the portal-settings right of a DocSpace administrator, and the SMTP settings section has to be enabled for the portal, otherwise the call is answered with 402. The call is read-only and safe to repeat. isDefaultSettings is true when the portal has no settings of its own and runs on the mail configuration of the installation: a standalone installation then shows those server-wide values, while a cloud portal is answered with an empty settings object instead, so an empty host together with isDefaultSettings true means nothing was ever saved here. credentialsUserPassword always comes back empty - the stored password cannot be read back, and a client that saves the settings again has to ask the user for it once more. port is the port that was saved, and settings saved without one are stored with 25. To find out whether the returned relay actually accepts mail, queue a test with GET api/2.0/smtpsettings/smtp/test.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The SMTP settings stored for the portal, with an empty password and isDefaultSettings telling whether the configuration of the installation is in use | SmtpSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The SMTP settings section is not enabled for this portal | - | - |
| 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
resetSmtpSettings
SmtpSettingsWrapper resetSmtpSettings()
DELETE /api/2.0/smtpsettings/smtp
Reset SMTP settings
Deletes the SMTP settings of this portal and puts it back on the mail configuration of the installation, so the portal stops using the relay saved by POST api/2.0/smtpsettings/smtp. Nothing has to be called first; the caller needs the portal-settings right of a DocSpace administrator, and the SMTP settings section has to be enabled for the portal, otherwise the call is answered with 402. The call is destructive and cannot be undone - the host, the sender identity and the credentials are gone and have to be entered again - but it is idempotent, and on a portal that has no settings of its own it changes nothing. Portal mail itself keeps working as long as the installation has a relay of its own configured. The answer holds the settings that are in force after the reset, always with isDefaultSettings true: the server-wide values in a standalone installation, an empty settings object in a cloud portal, and an empty credentialsUserPassword in both. Read them back at any time with GET api/2.0/smtpsettings/smtp.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The settings in force after the reset - the configuration of the installation, or an empty settings object in a cloud portal | SmtpSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The SMTP settings section is not enabled for this portal | - | - |
| 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
saveSmtpSettings
SmtpSettingsWrapper saveSmtpSettings(SmtpSettingsDto)
POST /api/2.0/smtpsettings/smtp
Save SMTP settings
Stores the SMTP relay that this portal will hand all of its own mail to, replacing whatever was saved before and taking the portal off the mail configuration of the installation. Nothing has to be called first; the caller needs the portal-settings right of a DocSpace administrator, and the SMTP settings section has to be enabled for the portal, otherwise the call is answered with 402. The call is mutating and idempotent - the same body saved twice leaves the same settings - and it applies to the next message the portal sends. The settings are stored unverified, no connection to host is attempted, so queue GET api/2.0/smtpsettings/smtp/test afterwards to find out whether they work. host and senderAddress must not be empty, senderDisplayName has to be present, and enableAuth true also requires credentialsUserName and credentialsUserPassword; a request that misses any of them is rejected and nothing is saved. port falls back to 25 when it is omitted, and useNtlm is accepted but not stored, so the saved settings always authenticate with a plain user name and password. The answer repeats the stored settings with the password emptied. Use DELETE api/2.0/smtpsettings/smtp to return to the configuration of the installation.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SmtpSettingsDto | body | SmtpSettingsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The SMTP settings now stored for the portal, with an empty password | SmtpSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The SMTP settings section is not enabled for this portal | - | - |
| 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
testSmtpSettings
SmtpOperationStatusRequestsWrapper testSmtpSettings()
GET /api/2.0/smtpsettings/smtp/test
Test SMTP settings
Queues a background job that sends a test message through the SMTP settings currently stored for the portal to the email address of the calling user, and returns the state of that job. Save the settings with POST api/2.0/smtpsettings/smtp first: the job always takes the stored settings and nothing can be passed to it here. The caller needs the portal-settings right of a DocSpace administrator, and the SMTP settings section has to be enabled for the portal, otherwise the call is answered with 402. The call is mutating, it sends mail, and it is rate-limited to five requests per fifteen minutes per user and path by default, answering 429 above that; while a test is still running the same job is returned instead of a second one being started. The message has not been sent when the answer arrives: poll GET api/2.0/smtpsettings/smtp/test/status until completed is true, then read error - empty means the relay accepted the message, otherwise it carries the reason. percents climbs to 100 and status names the step reached, such as Connect to host or Send test message. An unreachable relay is reported in error after a 30-second connection timeout, not as a failed request.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of the queued test message, to be polled until completed is true | SmtpOperationStatusRequestsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The SMTP settings section is not enabled for this portal | - | - |
| 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
SmtpOperationStatusRequestsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
SettingsAccessToDevToolsApi
getTenantAccessDevToolsSettings
TenantDevToolsAccessSettingsWrapper getTenantAccessDevToolsSettings()
GET /api/2.0/settings/devtoolsaccess
Get the Developer Tools access settings
Returns whether the portal currently restricts the User role from using the developer tools (API keys, OAuth apps, webhooks). Requires an authenticated session; every role can read the restriction, even though it only limits what a User may do, not what a RoomAdmin or DocSpaceAdmin may do. This is a read-only, idempotent call. Change the restriction with POST api/2.0/security/devtoolsaccess, which requires the EditPortalSettings permission.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Whether the User role is currently restricted from using the developer tools | TenantDevToolsAccessSettingsWrapper | 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
TenantDevToolsAccessSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
SettingsAuthorizationApi
getAuthServices
AuthServiceRequestsArrayWrapper getAuthServices()
GET /api/2.0/settings/authservice
Get the authorization services
Returns the catalogue of third-party storage and authorization providers DocSpace can integrate with (for example Amazon S3, Dropbox, Google, or Telegram), including whichever keys were last saved for each one that currently has any configured. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission). This is a read-only, idempotent call, and the list is not paginated; entries are ordered by the provider's configured display order. Only providers that expose at least one manageable key are included, so a provider with nothing to configure is omitted entirely. Save or change a provider's keys with POST api/2.0/settings/authservice.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Third-party providers with a manageable key, and their last-saved key values | AuthServiceRequestsArrayWrapper | 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
AuthServiceRequestsArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
saveAuthKeys
BooleanWrapper saveAuthKeys(AuthServiceRequestsDto)
POST /api/2.0/settings/authservice
Save the authorization keys
Saves the authorization keys for one third-party storage or authorization provider, identified by name, or clears them when every submitted key is left empty. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission); a provider that does not allow its keys to be changed from the API rejects the call outright. A provider that is only available on a paid plan additionally requires the portal's tariff to include third-party storage, or Standalone licensing, before the call is accepted. Keys that fail the provider's own validation are cleared and the call is rejected rather than left partially applied. This is a mutating, idempotent call: resaving identical keys succeeds and reports no change. It returns whether the keys actually changed, not the keys themselves; connecting Telegram or an external database through this call also triggers the matching real-time connection update.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| AuthServiceRequestsDto | body | AuthServiceRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Whether the provider's keys actually changed | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The submitted keys failed the provider's own validation | - | - |
| 402 | The provider is a paid option not covered by the portal's current pricing plan | - | - |
| 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
testExternalDatabaseConnection
ConnectionTestResultWrapper testExternalDatabaseConnection(ExternalDatabaseSettings)
POST /api/2.0/settings/authservice/externaldb/test
Test external database connection
Probes connectivity to an external database using the settings supplied in the request, without saving them or affecting the portal's own configuration. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission). SQLite is only accepted as a target on a Standalone (self-hosted) installation; requesting it on SaaS is reported as a failed connection rather than an error. This is a read-only call, safe to retry. A failed connection is not an HTTP error: the response always comes back as a normal success with success=false and an error message describing what went wrong.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| ExternalDatabaseSettings | body | ExternalDatabaseSettings | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Connection test result: a success flag and, on failure, an error message | ConnectionTestResultWrapper | 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
SettingsBannersVisibilityApi
getTenantBannerSettings
TenantBannerSettingsWrapper getTenantBannerSettings()
GET /api/2.0/settings/banner
Get the banners visibility
Returns whether the portal's promotional banners are currently hidden from every user's interface. Requires an authenticated session; every role can read it, since the flag affects what they see regardless of their own permissions. This is a read-only, idempotent call. The flag only takes effect on a Standalone (self-hosted) installation; on SaaS, banners are always shown no matter what is saved here. Change the setting with POST api/2.0/settings/banner, which additionally requires an Enterprise license.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Whether the portal's promotional banners are currently hidden | TenantBannerSettingsWrapper | 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
SettingsCommonSettingsApi
closeAdminHelper
closeAdminHelper()
PUT /api/2.0/settings/closeadminhelper
Close the admin helper
Dismisses the administrator helper tip for the caller, so it is not shown again on this account. Available only to a DocSpace administrator, which includes the portal Owner, on a Standalone (self-hosted) installation running outside white-label custom mode; every other caller is refused. This is a mutating, idempotent call scoped to the calling account only; it never affects other administrators. It returns no data on success.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The admin helper tip was dismissed for the caller | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 405 | The caller is not a DocSpace administrator, or the portal is on SaaS, custom mode, or not Standalone | - | - |
| 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
completeWizard
WizardSettingsWrapper completeWizard(WizardRequestsDto)
PUT /api/2.0/settings/wizard/complete
Complete the Wizard settings
Finishes the initial portal setup wizard: sets the owner's password and locale, applies the supplied license if one is required, and marks the wizard as completed so it is not shown again. This call is not for a normal logged-in session: it requires a confirmation link bearing the Wizard claim, of the kind issued when a new portal is created, and the link is consumed as part of authenticating the request; the caller must also hold the EditPortalSettings permission. An empty password or a malformed email address is rejected without completing the wizard, and so is a missing, invalid, or expired license, or a license whose user quota does not cover the portal. This call is meant to run once per portal; running it again is accepted but has no further effect once the wizard is already completed. It returns the resulting wizard settings, including the completed flag.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| WizardRequestsDto | body | WizardRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Resulting wizard settings, including the completed flag | WizardSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The email address is malformed, or the password is empty | - | - |
| 402 | The supplied license is missing, invalid, expired, or its user quota does not cover the portal | - | - |
| 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
configureDeepLink
TenantDeepLinkSettingsWrapper configureDeepLink(DeepLinkConfigurationRequestsDto)
POST /api/2.0/settings/deeplink
Configure the deep link settings
Sets how the portal responds when a client opens a DocSpace link on a mobile device: always in the browser, always in the native app, or asking the user to choose each time. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission). The handling mode must be one of the documented enum values; anything else is rejected without being saved. This is a mutating, idempotent call: sending the same mode again leaves the setting unchanged. It returns the saved deep link settings, including the timestamp of the last change; read the current value at any time, including anonymously, from GET api/2.0/settings/deeplink.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DeepLinkConfigurationRequestsDto | body | DeepLinkConfigurationRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Saved deep link handling settings | TenantDeepLinkSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The handling mode is not one of the supported deep link handling values | - | - |
| 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
deletePortalColorTheme
CustomColorThemesSettingsWrapper deletePortalColorTheme(id)
DELETE /api/2.0/settings/colortheme
Delete a color theme
Removes a custom color theme from the portal by its ID. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission). An ID belonging to one of the built-in default themes is not removable; the call succeeds but leaves the theme list unchanged. If the deleted theme was the currently selected one, the theme with the lowest remaining ID is selected automatically. This is a mutating, idempotent call: deleting an ID that is already gone succeeds without error and again leaves nothing changed. It returns the full updated theme configuration, including the (possibly new) selected theme.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | query | Integer (int32) | The theme to remove, by theme ID. An ID belonging to a built-in theme leaves the list untouched, and so does one that is already gone - neither is reported as an error. Removing the theme currently in use moves the portal to the remaining theme with the lowest ID. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Updated color theme configuration: saved themes, selected theme, and plan limit | CustomColorThemesSettingsWrapper | 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
CustomColorThemesSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getDeepLinkSettings
TenantDeepLinkSettingsWrapper getDeepLinkSettings()
GET /api/2.0/settings/deeplink
Get the deep link settings
Returns how the portal currently responds when a client opens a DocSpace link on a mobile device: always in the browser, always in the native app, or asking the user to choose. No permission is required; anonymous callers can read it too. This is a read-only, idempotent call. The response supports conditional requests: send the standard If-Modified-Since header with the previous lastModified value, and an unchanged response comes back empty instead of resending the settings. Change the mode with POST api/2.0/settings/deeplink, which requires the EditPortalSettings permission.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Current deep link handling settings | TenantDeepLinkSettingsWrapper | 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
getPaymentSettings
PaymentSettingsWrapper getPaymentSettings()
GET /api/2.0/settings/payment
Get the payment settings
Returns the portal's payment-related configuration: the sales contact email, the URL to buy or extend a subscription, whether the portal is Standalone, the current license's trial status and expiration date, and the maximum quota quantity that can be purchased at once. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission). This is a read-only, idempotent call. It remains reachable even while the portal's own subscription payment is overdue, since this is how the caller finds the link to resolve it.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Payment-related settings: sales contact, buy URL, Standalone flag, license, and quota cap | PaymentSettingsWrapper | 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
getPortalColorTheme
CustomColorThemesSettingsWrapper getPortalColorTheme()
GET /api/2.0/settings/colortheme
Get a color theme
Returns the portal's color theme configuration: every saved custom theme, which one is currently selected, and how many custom themes the plan still allows. No permission is required; anonymous callers can read it too. This is a read-only, idempotent call. The response supports conditional requests: send the standard If-Modified-Since header with the previous lastModified value, and an unchanged response comes back empty instead of resending the same settings. A limit of 0 means the plan does not cap the number of custom themes.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Current color theme configuration: saved themes, selected theme, and plan limit | CustomColorThemesSettingsWrapper | 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
CustomColorThemesSettingsWrapper
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getPortalHostname
StringWrapper getPortalHostname()
GET /api/2.0/settings/machine
Get the portal hostname
Returns the hostname the current request arrived on, exactly as sent in the HTTP Host header, so a client mid-setup can learn the address the portal is actually reachable at. This call is not for a normal logged-in session: it requires a confirmation link bearing the Wizard claim, of the kind generated during initial portal setup, and the link is consumed as part of authenticating the request. This is a read-only, idempotent call. The value reflects whatever the caller connected through, including a reverse proxy's public name, and is not necessarily the tenant's configured alias or mapped domain.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Hostname the current request arrived on | 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 | - |
| 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
getPortalLogo
StringWrapper getPortalLogo()
GET /api/2.0/settings/logo
Get a portal logo
Returns the absolute URL of the portal's current logo image, already resolved against the active white-label branding. Requires an authenticated session; every role, including Guest, can read it. This is a read-only, idempotent call. The response supports conditional requests: send the standard If-Modified-Since header with the previous lastModified value, and an unchanged response comes back empty instead of resending the same URL. The URL points at whatever image is currently configured, including the default DocSpace logo when no custom branding has been set.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Absolute URL of the portal's current logo image | 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 | - |
| 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
getPortalSettings
SettingsWrapper getPortalSettings(withpassword)
GET /api/2.0/settings
Get the portal settings
Returns the current portal's general configuration: branding, culture, feature flags, and DocSpace/Standalone mode, everything the client needs to render its shell before or after login. No permission is required, but the response shape depends on the caller's identity. An anonymous caller receives only the public subset (culture, branding, DocSpace/Standalone flags, deep link data, setup-wizard and join-by-domain hints); once authenticated, the response also includes tenant-specific fields such as the owner ID, time zone, invitation limit, AI/banner/dev-tools flags, and, for a DocSpace administrator, the tenant wallet's low-balance flag. This is a read-only, idempotent call. Pass withPassword=true to also receive the parameters (salt, iteration count, hash size) used to hash the password client-side before it is sent to the authentication endpoints; these are only added for an anonymous caller or when explicitly requested, never as part of the default authenticated response.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| withpassword | query | Boolean | Whether the answer also carries the salt, iteration count and hash size a client needs to hash a password before sending it to the authentication operations. They are included for an anonymous caller anyway; for a signed-in one they are left out unless this is set. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Current portal settings, tailored to the caller's authentication state | SettingsWrapper | 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
getSocketSettings
SocketSettingsWrapper getSocketSettings()
GET /api/2.0/settings/socket
Get the socket settings
Returns the base URL of the portal's real-time notification hub (Socket.IO), which the client connects to for live updates such as file changes, presence, or quota alerts. Requires an authenticated session; every role can read it. This is a read-only, idempotent call. The value comes from server-side configuration and cannot be changed through this API; an empty url means the portal has no notification hub configured and the client should not attempt to connect.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Base URL of the portal's real-time notification hub | SocketSettingsWrapper | 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
getSupportedCultures
STRINGArrayWrapper getSupportedCultures()
GET /api/2.0/settings/cultures
Get supported languages
Returns the two- or four-letter language codes of every culture currently enabled on the portal (for example en-US), used to populate a language picker before or after login. No permission is required; anonymous callers can read it too. This is a read-only, idempotent call, and the list is not paginated. The response supports conditional requests: an unchanged result is signaled instead of resending the same list. The set of enabled cultures is a portal-wide configuration value, not a per-user preference.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Language codes of every culture currently enabled on the portal | STRINGArrayWrapper | 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
getTenantAiAccessSettings
TenantAiAccessSettingsWrapper getTenantAiAccessSettings()
GET /api/2.0/settings/ai-access
Get the AI access settings
Returns whether AI functionality (chat, agents, vectorization) is currently available on the portal at all; AI is enabled by default. Requires an authenticated session; every role can read it. This is a read-only, idempotent call. When the setting is disabled, every AI-specific endpoint and folder is unavailable regardless of the caller's own permissions; this call only reports the portal-wide switch, not any per-user entitlement.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Whether AI functionality is currently enabled for the portal | TenantAiAccessSettingsWrapper | 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
getTenantUserInvitationSettings
TenantUserInvitationSettingsWrapper getTenantUserInvitationSettings()
GET /api/2.0/settings/invitationsettings
Get the user invitation settings
Returns whether the portal currently allows inviting new members and new guests at all. No permission is required; anonymous callers can read it too, since the invitation flow itself may run before the caller has signed in. This is a read-only, idempotent call. The response supports conditional requests: send the standard If-Modified-Since header with the previous lastModified value, and an unchanged response comes back empty instead of resending the same settings.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Whether inviting new members and new guests is currently allowed | TenantUserInvitationSettingsWrapper | 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
TenantUserInvitationSettingsWrapper
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getTimeZones
TimezonesRequestsArrayWrapper getTimeZones()
GET /api/2.0/settings/timezones
Get time zones
Returns every time zone known to the host machine, each with its IANA identifier and a human-readable display name, ordered from the most negative to the most positive UTC offset. This call is not for a normal logged-in session: it requires a confirmation link bearing the Wizard or Administrators claim, of the kind generated during initial portal setup or issued by an administrator, and the link is consumed as part of authenticating the request. This is a read-only, idempotent call, and the list is not paginated. Use the returned id values wherever the portal expects a time zone identifier; an unrecognized value is rejected there, not here.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Every time zone known to the host, with its IANA ID and display name | TimezonesRequestsArrayWrapper | 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
saveDefaultFolder
StudioDefaultPageSettingsWrapper saveDefaultFolder(DefaultProductRequestDto)
PUT /api/2.0/settings/defaultfolder
Set the default folder
Sets which folder the current user's account opens into by default, such as My Documents, the rooms list, or favorites. Requires an authenticated session; every role may set its own default, and the change never affects any other user. Only folder types the client actually offers as a landing page are accepted; picking My Documents (USER) as a Guest is rejected too, since guests have no personal storage. This is a mutating, idempotent call. It returns the saved setting.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DefaultProductRequestDto | body | DefaultProductRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Saved default folder setting for the current user | StudioDefaultPageSettingsWrapper | 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
StudioDefaultPageSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
saveDnsSettings
StringWrapper saveDnsSettings(DnsSettingsRequestsDto)
PUT /api/2.0/settings/dns
Save the DNS settings
Maps a custom domain name onto the current tenant, or clears the mapping, so the portal becomes reachable under the caller's own DNS name instead of only its default alias. Available only on a Standalone (self-hosted) installation; on SaaS the call is always refused. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission). Disable the mapping by passing enable=false, in which case the domain name in the request is ignored. A domain that collides with the portal's reserved base domain, or otherwise fails validation, is rejected without changing the current mapping. This is a mutating, idempotent call. On success the previous domain also stops answering, and any CSP configuration referencing it is updated to the new one.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DnsSettingsRequestsDto | body | DnsSettingsRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Confirmation that the DNS mapping was updated | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The domain name is invalid, or collides with the portal's reserved base domain | - | - |
| 402 | This option is not available under the portal's current pricing plan | - | - |
| 405 | The portal is not a Standalone installation, so a custom domain cannot be mapped | - | - |
| 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
saveMailDomainSettings
StringWrapper saveMailDomainSettings(MailDomainSettingsRequestsDto)
POST /api/2.0/settings/maildomainsettings
Save the mail domain settings
Overwrites the portal's trusted mail domain configuration, which controls which email domains are treated as already verified when a user is invited or self-registers. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission). When the requested mode is a custom domain list, every domain is normalized to lowercase and checked against the expected hostname format; a domain that fails the check, or an empty custom list, causes the whole call to be rejected without saving anything. For the other modes the domain list in the request is ignored. The inviteUsersAsVisitors flag controls whether users who join through a trusted domain are added as full members or as visitors, and takes effect on the next join rather than retroactively. This is a mutating, idempotent call: repeating it with the same body leaves the portal in the same state. On success it returns a confirmation message, not the saved settings themselves; read them back from GET api/2.0/settings.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| MailDomainSettingsRequestsDto | body | MailDomainSettingsRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Confirmation message that the trusted mail domain settings were saved | 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
savePortalColorTheme
CustomColorThemesSettingsWrapper savePortalColorTheme(CustomColorThemesSettingsRequestsDto)
PUT /api/2.0/settings/colortheme
Save a color theme
Adds or updates a custom color theme, or changes which theme is selected, for the whole portal. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission). Pass theme to create or edit one: an existing theme is matched and updated by its ID, a new one is appended, and an ID that collides with a built-in default theme is treated as a request to create a new custom theme instead of overwriting the default. Once the plan's custom-theme limit is reached, a new theme is silently not added rather than rejected with an error, so check the returned themes count against limit before assuming it was saved. Pass selected to switch the active theme; an ID that does not match any existing theme is ignored. This is a mutating call, not strictly idempotent once the limit has been reached. It returns the full updated theme configuration.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CustomColorThemesSettingsRequestsDto | body | CustomColorThemesSettingsRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Updated color theme configuration: saved themes, selected theme, and plan limit | CustomColorThemesSettingsWrapper | 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
CustomColorThemesSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setTenantAiAccessSettings
TenantAiAccessSettingsWrapper setTenantAiAccessSettings(TenantAiAccessSettingsDto)
POST /api/2.0/settings/ai-access
Set the AI access settings
Turns AI functionality (chat, agents, vectorization) on or off for the whole portal; AI is enabled by default. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission); every other caller is refused. Disabling it immediately hides the AI Agents folder from root folder listings, makes AI status checks report disabled, and makes AI chat endpoints unreachable for every user on the tenant, not only the caller. This is a mutating, idempotent, portal-wide call, and the change is pushed to already-connected clients over the real-time notification hub rather than waiting for their next request. It returns the saved setting.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TenantAiAccessSettingsDto | body | TenantAiAccessSettingsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Saved AI access setting for the portal | TenantAiAccessSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, so the AI access setting cannot be changed | - | - |
| 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
updateEmailActivationSettings
EmailActivationSettingsWrapper updateEmailActivationSettings(EmailActivationSettings)
PUT /api/2.0/settings/emailactivation
Update the email activation settings
Updates the current user's own preference for whether the email confirmation prompt is displayed on their account. Requires an authenticated session; every role may change its own setting, and the change never affects any other user. This is a mutating, idempotent call. It returns the settings exactly as submitted, without validating them against the account's actual email confirmation state, so show can be set to true even after the address is already confirmed.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| EmailActivationSettings | body | EmailActivationSettings | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Email activation settings exactly as submitted | EmailActivationSettingsWrapper | 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
EmailActivationSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
updateInvitationSettings
TenantUserInvitationSettingsWrapper updateInvitationSettings(TenantUserInvitationSettingsRequestDto)
PUT /api/2.0/settings/invitationsettings
Update the user invitation settings
Sets whether the portal allows inviting new members and new guests. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission). Disabling member or guest invitations only blocks creating new invitations going forward; it does not revoke links already issued or remove members already invited. This is a mutating, idempotent, portal-wide call. It returns the saved setting; read the current value at any time, including anonymously, from GET api/2.0/settings/invitationsettings.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TenantUserInvitationSettingsRequestDto | body | TenantUserInvitationSettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Saved user invitation settings | TenantUserInvitationSettingsWrapper | 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
TenantUserInvitationSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
SettingsCookiesApi
getCookieSettings
CookieSettingsWrapper getCookieSettings()
GET /api/2.0/settings/cookiesettings
Get the cookie lifetime settings
Returns how long an authentication session of this portal stays valid: lifeTime in minutes together with the enabled flag that says whether that limit is applied at all. The caller needs the portal-settings right of a DocSpace administrator - the portal owner and a DocSpace administrator qualify, any other member is refused - and the call is read-only. The pair describes the whole portal rather than the calling user, and it is never empty: a portal nobody has configured answers lifeTime 1440, one day, with enabled false. Read the two fields together, because the number alone does not say how long a session lasts - while enabled is false the stored number is ignored and an issued session is honoured for a year, and lifeTime 0 with enabled true means a session that never expires on its own. On an installation whose configuration hides the cookie section the built-in default pair comes back instead of the stored one. GET api/2.0/settings carries the same flag as cookieSettingsEnabled without the number; change the pair with PUT api/2.0/settings/cookiesettings.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The authentication session lifetime of the portal in minutes together with the flag that says whether that limit is applied | CookieSettingsWrapper | 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
updateCookieSettings
StringWrapper updateCookieSettings(CookieSettingsRequestsDto)
PUT /api/2.0/settings/cookiesettings
Update the cookie lifetime settings
Stores how long an authentication session of this portal stays valid: lifeTime in minutes together with the enabled flag that switches the limit on. The caller needs the portal-settings right of a DocSpace administrator - the portal owner and a DocSpace administrator qualify, any other member is refused - and on an installation whose configuration hides the cookie section nothing is stored and the call is answered with 402. A lifeTime above 9999 minutes is not rejected but clamped to 9999, while 0 or less clears the number instead, which with enabled true leaves sessions that never expire on their own. Any positive lifeTime raises the session version of the portal: every session issued before the call stops being accepted, and with enabled true the connections behind them are dropped as well. The caller is signed in again inside the same call and gets a fresh session cookie in the response, so a client that keeps sending the token it held before this call is the one locked out. The change is recorded in the audit trail. What comes back is a localized confirmation message; read the stored pair with GET api/2.0/settings/cookiesettings.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CookieSettingsRequestsDto | body | CookieSettingsRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | A localized message confirming that the session lifetime has been saved | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The installation hides the cookie lifetime section, or the portal's payment has lapsed | - | - |
| 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
SettingsDocsCloudApi
calculateDevPack
PaymentCalculationWrapper calculateDevPack(DocsCloudDevPackRequestDto)
POST /api/2.0/settings/docscloud/calculatedevpack
Calculate the Docs Connect Dev Pack switch cost
Prices the upgrade of the paid Docs Connect subscription of the current portal to Docs Connect Dev Pack for the requested number of users, without changing the subscription or charging anything. It applies the same preconditions as the switch itself: the portal must hold an active Docs Connect subscription, must not already hold a Docs Connect Dev Pack one, and its tariff must not be delayed or unpaid; the quotas and the state of the current tariff are listed by GET api/2.0/portal/tariff. The caller must be a DocSpace administrator of a portal registered with the billing service. The call is read-only and idempotent, so it can be repeated for different quantities before any switch is made. It returns the amount that switching would cost, the three-letter ISO 4217 currency of that amount, the quantity the amount was calculated for, and the identifier of the billing operation; an empty result means the billing service could not price the switch, which should then not be attempted. The switch itself is performed by POST api/2.0/settings/docscloud/switchtodevpack with the same quantity and takes no identifier from this response; to price a change in the number of users of a subscription the portal already has, use PUT api/2.0/portal/payment/calculatewallet instead.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DocsCloudDevPackRequestDto | body | DocsCloudDevPackRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The cost of switching to Docs Connect Dev Pack for the requested quantity, or an empty result if the billing service could not price it | PaymentCalculationWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The quantity is below the allowed minimum, the portal has no active Docs Connect subscription, or it already has a Docs Connect Dev Pack subscription | - | - |
| 402 | The portal tariff is delayed or not paid, so the switch cannot be priced | - | - |
| 403 | The caller is not a DocSpace administrator, or the billing service is not configured | - | - |
| 404 | The portal is not registered as a billing customer, or the Docs Connect and Docs Connect Dev Pack wallet products are not configured on this installation | - | - |
| 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
createTenantQuotaReport
DocumentBuilderTaskWrapper createTenantQuotaReport()
POST /api/2.0/settings/docscloud/tenant/quota/report
Start the Docs Connect quota report
Queues a background job that renders the current Docs Connect user quota of the portal into an xlsx file and saves that file in the My documents folder of the calling user; the report lists the editor and the viewer users with the type and the expiration date of each, and summarizes the internal, external and remaining users against the license limits. The file is not ready when the response arrives: poll GET api/2.0/settings/docscloud/tenant/quota/report until isCompleted is true, then take the file from resultFileId or resultFileUrl, and use DELETE api/2.0/settings/docscloud/tenant/quota/report to cancel a job that is still running. The caller must be a portal administrator allowed to edit the portal settings. The portal should have an activated Docs Connect tenant: this call does not check that, and without a tenant the job itself fails and reports the reason in the error of the status response. One report per caller runs at a time: while a report of this user is still being built, the call describes that running job and no second generation is started, so a repeated call is safe. What comes back is the initial state of the job, with percentage 0 and a created status, not the report; the report is a point-in-time snapshot and carries the generation date in its file name. To read the same data as JSON, without building a file, use GET api/2.0/settings/docscloud/tenant/quota.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The initial state of the queued report generation job, with zero progress and an uncompleted status | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not allowed to edit 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
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getTenant
DocsCloudTenantWrapper getTenant(refresh)
GET /api/2.0/settings/docscloud/tenant
Get the Docs Connect tenant
Returns the Docs Connect tenant of the current portal: the Docs Connect server assigned to the portal, with its address, the date the tenant subscription ends and the payment the tenant was created for. A tenant exists only after a Docs Connect subscription has been granted, by POST api/2.0/settings/docscloud/trial or by a Docs Connect purchase, and only on an installation where the Docs Connect service is configured. The caller must be a portal administrator allowed to edit the portal settings. The call is read-only and idempotent, and it is served from a cache that keeps the tenant for an hour and the absence of a tenant for a minute, so pass refresh=true right after a subscription change to read the current state from Docs Connect instead. In the result, address is the absolute URL of the assigned server, isActive tells whether endDate is still in the future, and the dates are in UTC. An empty result means the portal has no Docs Connect tenant yet, which is the normal state before a subscription and not an error, so this is the operation to call to find out whether Docs Connect is activated at all. The license and server details, the editing settings, the user quota and the usage statistics are not part of it: they live in GET api/2.0/settings/docscloud/tenant/info, .../tenant/config, .../tenant/quota and .../tenant/usage, each of which fails with 400 while the portal has no activated tenant.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| refresh | query | Boolean | Pass true to skip the cached copy and request the tenant from Docs Connect again, replacing the cached one; with the default false the answer may be up to an hour old, or up to a minute old while the portal has no tenant. | [optional] [default to false] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The Docs Connect tenant of the portal, or an empty result if no Docs Connect tenant is assigned to it | DocsCloudTenantWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not allowed to edit 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
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getTenantConfig
DocsCloudConfigWrapper getTenantConfig(refresh)
GET /api/2.0/settings/docscloud/tenant/config
Get the Docs Connect tenant configuration
Returns the configuration of the Docs Connect tenant of the current portal: its name, the security secret and header name, the file size limit and anonymous access switch of the server, the WOPI switch and the IP filter rules. The portal must have an activated Docs Connect tenant, granted by POST api/2.0/settings/docscloud/trial or by a Docs Connect purchase: an empty result from GET api/2.0/settings/docscloud/tenant means there is none and this call fails with 400. The caller must be a portal administrator allowed to edit the portal settings, on an installation where the Docs Connect service is configured. The call is read-only, idempotent and cached for an hour, so pass refresh=true to read the current state from Docs Connect; the same values are changed by PUT api/2.0/settings/docscloud/tenant/config, which drops the cached copy itself, so no refresh is needed after an update. In the result, security.secret is a credential, so the response should be treated as sensitive; server.fileSizeLimit is in bytes and an update cannot raise it above 209715200 (200 MB); and an empty or absent ipFilter.rules means no address restriction is configured. The license and server version, the address of the assigned server, the per-user quota and the usage counters are not part of it: they live in .../tenant/info, .../tenant, .../tenant/quota and .../tenant/usage.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| refresh | query | Boolean | Pass true to skip the cached copy and request the configuration from Docs Connect again, replacing the cached one; with the default false the answer may be up to an hour old. | [optional] [default to false] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The configuration of the Docs Connect tenant of the portal, with its security, server, WOPI and IP filter settings | DocsCloudConfigWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The portal has no activated Docs Connect tenant, so there is no configuration to return | - | - |
| 403 | The caller is not allowed to edit 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
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getTenantInfo
DocsCloudTenantInfoWrapper getTenantInfo(refresh)
GET /api/2.0/settings/docscloud/tenant/info
Get the Docs Connect tenant information
Returns the Docs Connect license of the current portal, the Docs Connect server serving it, the user limits of that license and the editor and viewer usage counted against them for the current period. The portal must have an activated Docs Connect tenant, granted by POST api/2.0/settings/docscloud/trial or by a Docs Connect purchase: an empty result from GET api/2.0/settings/docscloud/tenant means there is none and this call fails with 400. The caller must be a portal administrator allowed to edit the portal settings, on an installation where the Docs Connect service is configured. The call is read-only, idempotent and cached for a minute, so pass refresh=true right after a subscription change to read the current state from Docs Connect. In the result, license.valid is when the license expires and license.trial is reported as false once the portal holds a paid Docs Connect or Docs Connect Dev Pack subscription, even when the license itself still says trial; usersLimit caps the editors and the viewers allowed, stats counts the active, internal, external and remaining users of each of those two kinds over the last stats.periodDay days, and the dates are in UTC. The editing settings, the per-user quota lists and the address of the assigned server live in .../tenant/config, .../tenant/quota and .../tenant, while .../tenant/usage gives one active-user total instead of this per-role breakdown.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| refresh | query | Boolean | Pass true to skip the cached copy and request the license, server and usage information from Docs Connect again, replacing the cached one; with the default false the answer may be up to a minute old. | [optional] [default to false] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The Docs Connect license and server information of the portal, with the user limits of the license and the usage statistics for the current period | DocsCloudTenantInfoWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The portal has no activated Docs Connect tenant, so there is no license information to return | - | - |
| 403 | The caller is not allowed to edit 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
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getTenantQuota
DocsCloudQuotaWrapper getTenantQuota(refresh)
GET /api/2.0/settings/docscloud/tenant/quota
Get the Docs Connect tenant quota
Returns the Docs Connect user quota of the current portal: the users who currently count as Docs Connect editors and the users who count as viewers, each with the identifier Docs Connect knows them by and the date their quota entry expires. The portal must have an activated Docs Connect tenant, granted by POST api/2.0/settings/docscloud/trial or by a Docs Connect purchase: an empty result from GET api/2.0/settings/docscloud/tenant means there is none and this call fails with 400. The caller must be a portal administrator allowed to edit the portal settings, on an installation where the Docs Connect service is configured. The call is read-only, idempotent and cached for a minute, so pass refresh=true to read the current state from Docs Connect. In the result, users holds the editor entries and usersView the viewer entries, both unordered; userId is the DocSpace user ID for a portal member and an identifier of Docs Connect's own for anyone else; expire is the date and time the entry expires, as a UTC string; and empty lists mean no user has been counted yet. It lists the users themselves, not the counters: the license limits with the per-role totals are in GET api/2.0/settings/docscloud/tenant/info, a single active-user total is in .../tenant/usage, and the same lists as a downloadable xlsx file are produced by POST api/2.0/settings/docscloud/tenant/quota/report.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| refresh | query | Boolean | Pass true to skip the cached copy and request the user quota from Docs Connect again, replacing the cached one; with the default false the answer may be up to a minute old. | [optional] [default to false] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The editor and viewer users of the Docs Connect tenant of the portal, with the expiration date of each entry | DocsCloudQuotaWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The portal has no activated Docs Connect tenant, so there is no user quota to return | - | - |
| 403 | The caller is not allowed to edit 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
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getTenantQuotaReport
DocumentBuilderTaskWrapper getTenantQuotaReport()
GET /api/2.0/settings/docscloud/tenant/quota/report
Get the Docs Connect quota report status
Returns the state of the Docs Connect user quota report that the current user started with POST api/2.0/settings/docscloud/tenant/quota/report, so that the caller can follow the generation and pick up the resulting file. It reports the caller's own job only: a report started by another administrator is not visible here, and an empty result means this user has no job, because none was started, because it was terminated, or because a finished one has already been cleared (a job state is kept for a day, and starting a new report drops the previous finished one); that is a normal state and not an error. The caller must be a portal administrator allowed to edit the portal settings. The call is read-only and idempotent, and it is meant to be polled while the job runs. In the result, percentage goes from 0 to 100 and isCompleted becomes true both on success and on failure, so check error: it is empty when the report was built and carries the failure message otherwise; resultFileId, resultFileName and resultFileUrl are filled in only once the file exists, and that file also stays in the My documents folder of the caller. Use the POST operation on this path to start a report and the DELETE one to cancel it.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state of the Docs Connect quota report job of the caller, or an empty result if there is no such job | DocumentBuilderTaskWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not allowed to edit 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
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getTenantUsage
DocsCloudUsageWrapper getTenantUsage(refresh)
GET /api/2.0/settings/docscloud/tenant/usage
Get the Docs Connect tenant usage
Returns the Docs Connect usage of the current portal: the number of users who have been active in Docs Connect in the current period, and the moment that period is counted from. The portal must have an activated Docs Connect tenant, granted by POST api/2.0/settings/docscloud/trial or by a Docs Connect purchase: an empty result from GET api/2.0/settings/docscloud/tenant means there is none and this call fails with 400. The caller must be a portal administrator allowed to edit the portal settings, on an installation where the Docs Connect service is configured. The call is read-only, idempotent and cached for a minute, so pass refresh=true to read the current state from Docs Connect. In the result, activeCount counts the users seen since since, which is in UTC, and it is one total for the whole tenant, with no split by role and no limit to compare it against. For the editor and viewer breakdown with the license limits use GET api/2.0/settings/docscloud/tenant/info, and for the users counted one by one GET api/2.0/settings/docscloud/tenant/quota.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| refresh | query | Boolean | Pass true to skip the cached copy and request the usage statistics from Docs Connect again, replacing the cached one; with the default false the answer may be up to a minute old. | [optional] [default to false] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The number of active Docs Connect users of the portal and the date the count starts from | DocsCloudUsageWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The portal has no activated Docs Connect tenant, so there is no usage information to return | - | - |
| 403 | The caller is not allowed to edit 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
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
startDocsCloudTrial
BooleanWrapper startDocsCloudTrial()
POST /api/2.0/settings/docscloud/trial
Start the Docs Connect trial
Activates the free Docs Connect trial subscription for the current portal, and, once a Docs Connect server is assigned to the portal, allows the address of that server in the Content Security Policy settings. The portal tariff must be in the trial or paid state (not delayed and not unpaid), and the portal must not already hold a Docs Connect trial, Docs Connect or Docs Connect Dev Pack subscription: the quotas of the current tariff are listed by GET api/2.0/portal/tariff. The caller must be a portal administrator allowed to edit the portal settings, on an installation where the billing service is configured. The operation changes the portal subscription and is not idempotent: repeating it after a successful activation fails with 400. It returns true when the trial has been granted, and false when the billing service declines it (for example, when this portal has already used its trial), in which case nothing is changed. It never buys a paid plan: an existing paid Docs Connect subscription is moved to Docs Connect Dev Pack by POST api/2.0/settings/docscloud/switchtodevpack instead.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Boolean value: true if the trial subscription is activated, false if the billing service declines it | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The portal already has a Docs Connect trial, Docs Connect or Docs Connect Dev Pack subscription | - | - |
| 402 | The portal tariff is delayed or not paid, so the trial cannot be started | - | - |
| 403 | The caller is not allowed to edit the portal settings, or the billing service is not configured | - | - |
| 404 | The Docs Connect trial quota is not available on this installation | - | - |
| 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
switchToDevPack
BooleanWrapper switchToDevPack(DocsCloudDevPackRequestDto)
POST /api/2.0/settings/docscloud/switchtodevpack
Switch Docs Connect to Docs Connect Dev Pack
Upgrades the paid Docs Connect subscription of the current portal to Docs Connect Dev Pack for the requested number of users, charging the price difference to the portal wallet and moving the Docs Connect license to the new product. The portal must hold an active Docs Connect subscription, must not already hold a Docs Connect Dev Pack one, and its tariff must not be delayed or unpaid: the quotas and the state of the current tariff are listed by GET api/2.0/portal/tariff, and the amount that will be charged is returned by POST api/2.0/settings/docscloud/calculatedevpack for the same quantity. The caller must be a DocSpace administrator of a portal registered with the billing service. The switch is synchronous, mutating and not idempotent: repeating it after a successful call fails with 400, and concurrent calls for one portal are serialized so that the wallet is charged only once. It returns true when the subscription has been switched, and false when the billing service declines or fails to perform the switch, in which case nothing is charged and the portal stays on Docs Connect. Only the Docs Connect to Docs Connect Dev Pack direction is supported: to change the number of users of a subscription the portal already has, or to schedule a reversion from Docs Connect Dev Pack back to Docs Connect at the next billing period, use PUT api/2.0/portal/payment/updatewallet instead.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DocsCloudDevPackRequestDto | body | DocsCloudDevPackRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Boolean value: true if the subscription is switched to Docs Connect Dev Pack, false if the billing service declines it | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The quantity is below the allowed minimum, the portal has no active Docs Connect subscription, or it already has a Docs Connect Dev Pack subscription | - | - |
| 402 | The portal tariff is delayed or not paid, so the subscription cannot be switched | - | - |
| 403 | The caller is not a DocSpace administrator, or the billing service is not configured | - | - |
| 404 | The portal is not registered as a billing customer, or the Docs Connect and Docs Connect Dev Pack wallet products are not configured on this installation | - | - |
| 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
terminateTenantQuotaReport
terminateTenantQuotaReport()
DELETE /api/2.0/settings/docscloud/tenant/quota/report
Terminate the Docs Connect quota report
Cancels the Docs Connect user quota report that the current user started with POST api/2.0/settings/docscloud/tenant/quota/report and removes its job, so that a new report can be started right away. There is no precondition: the call is accepted even when this user has no report job at all, and it affects the caller's own job only, never one started by another administrator. The caller must be a portal administrator allowed to edit the portal settings. The cancellation is asynchronous and idempotent: 200 means the request has been queued for the report worker, not that the job has already stopped, so poll GET api/2.0/settings/docscloud/tenant/quota/report until it returns an empty result. Nothing is returned in the body. A report file that has already been saved in the My documents folder of the caller is left there and has to be deleted through the file operations if it is no longer wanted.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The termination request has been queued for the report worker; the response has no body | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not allowed to edit 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
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
updateTenantConfig
DocsCloudConfigWrapper updateTenantConfig(DocsCloudConfig)
PUT /api/2.0/settings/docscloud/tenant/config
Update the Docs Connect tenant configuration
Replaces the configuration of the Docs Connect tenant of the current portal: its name, the security secret and header name, the file size limit and anonymous access switch of the server, the WOPI switch and the IP filter rules; it returns the configuration as Docs Connect stored it. The portal must have an activated Docs Connect tenant, granted by POST api/2.0/settings/docscloud/trial or by a Docs Connect purchase: an empty result from GET api/2.0/settings/docscloud/tenant means there is none and this call fails with 400. Read the current values with GET api/2.0/settings/docscloud/tenant/config first and send back whole sections: the sections left out of the request are not sent to Docs Connect at all, while a section that is present is sent with all of its fields, so a field left unset inside it goes out as 0, false or empty. The caller must be a portal administrator allowed to edit the portal settings, on an installation where the Docs Connect service is configured. The call is mutating, synchronous and idempotent, it is recorded in the portal audit trail, and it drops the cached configuration itself, so the next read returns the new values without refresh=true. The tenantName, security.secret, security.header and every ipFilter.rules address are capped at 255 characters and server.fileSizeLimit at 209715200 bytes (200 MB); a value outside those bounds is rejected with 400 before anything reaches Docs Connect. It changes these settings only, never the subscription, the user quota or the license.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| DocsCloudConfig | body | DocsCloudConfig | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The configuration of the Docs Connect tenant as Docs Connect stored it after the update | DocsCloudConfigWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | A text field is longer than 255 characters, the file size limit is outside 0-209715200 bytes, or the portal has no activated Docs Connect tenant | - | - |
| 403 | The caller is not allowed to edit 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
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
SettingsEncryptionApi
getStorageEncryptionProgress
DoubleNullableWrapper getStorageEncryptionProgress()
GET /api/2.0/settings/encryption/progress
Get the storage encryption progress
Returns how far the running encryption or decryption of the installation storage has got, as a percentage from 0 to 100. It reports the run started by POST api/2.0/settings/encryption/start, whose direction, encryption or decryption, is told by GET api/2.0/settings/encryption/settings. An empty response means no run is in flight and no recent result is remembered: the value of a finished run is kept for one minute after it completes and then dropped, so poll often enough not to miss the end of the operation. A value of -1 means the build does not offer storage encryption at all, and on an installation that is not a server one the call is refused rather than answered. Unlike the other encryption operations, this one asks for no portal-settings permission: any authenticated member of the portal may read the progress, which is intentional, because the portals are unavailable while the run is on and their users need to see when it ends. Nothing is written and the call is safe to repeat.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Encryption or decryption progress as a percentage, or empty when no run is in flight | DoubleNullableWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 405 | Storage encryption is not available on this installation | - | - |
| 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
getStorageEncryptionSettings
EncryptionSettingsWrapper getStorageEncryptionSettings()
GET /api/2.0/settings/encryption/settings
Get the storage encryption settings
Returns the encryption state of the installation storage: the status, which is one of decrypted, encryption started, encrypted or decryption started, and the flag saying whether users are mailed when an encryption run begins. The password is deliberately blanked out, so the field always comes back empty even on an encrypted installation. The caller is expected to have the permission to edit portal settings, which in practice means the portal owner or a DocSpace admin, on a server installation with an unrestricted access space; on any other installation, and whenever the check fails, the operation answers with an empty body instead of an error. An empty answer is therefore not proof that encryption is off, only that the settings cannot be read in this context. Nothing is written and the call is safe to repeat. Use GET api/2.0/settings/encryption/progress to follow a run that is in flight, and POST api/2.0/settings/encryption/start to encrypt or decrypt the storage.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The encryption status and the notify-users flag, with the password blanked out; empty where encryption settings cannot be read | EncryptionSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit portal settings | - | - |
| 405 | Storage encryption is not available on this installation | - | - |
| 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
startStorageEncryption
BooleanWrapper startStorageEncryption(StorageEncryptionRequestsDto)
POST /api/2.0/settings/encryption/start
Start the storage encryption
Queues encryption of everything the installation keeps in its local storage, or decryption of it when the data is already encrypted: the saved encryption state decides the direction, so the same call encrypts a decrypted installation and decrypts an encrypted one. It covers the whole server, not one portal, and only a server installation with the feature switched on can run it, with neither the portal storage nor the CDN pointing at a third-party provider: reset those first with DELETE api/2.0/settings/storage and DELETE api/2.0/settings/storage/cdn. No backup may be running, and the backup schedules of all portals are dropped as part of starting. The caller needs the permission to edit portal settings, that is the portal owner or a DocSpace admin, and an unrestricted access space. This is a long, disruptive operation: every portal is put into the encryption state and stays unavailable until it ends, so do not repeat the call while it runs, and follow it with GET api/2.0/settings/encryption/progress instead. The password is generated on the server and never returned by the API. Pass notifyUsers=true to mail every user before the portals go down. The response is true once the job is queued, and false where encryption is switched off, nothing being started then.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| StorageEncryptionRequestsDto | body | StorageEncryptionRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | True when the encryption job has been queued; false in a build where storage encryption is switched off | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The portal pricing plan does not include storage encryption | - | - |
| 403 | The caller may not edit portal settings, or this installation does not allow storage encryption | - | - |
| 405 | Storage encryption is not available on this installation | - | - |
| 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
SettingsGreetingSettingsApi
getGreetingSettings
StringWrapper getGreetingSettings()
GET /api/2.0/settings/greetingsettings
Get greeting settings
Returns the greeting title of the current portal - the caption shown as the welcome heading on the sign-in page, kept as the portal name. Any authenticated user may call it and no administrative right is needed; the call is read-only. The title comes back as a bare string and is never empty: when the portal has no title of its own, the built-in default caption is returned instead, localized to the caller's language. Because of that fallback this operation cannot tell a saved title from the default one - call GET api/2.0/settings/greetingsettings/isdefault when that distinction matters. The same string is part of the portal settings answer as the greetingSettings field of GET api/2.0/settings, so a client that already reads the settings needs no separate call. The value is a caption only: it is neither the portal address nor the white-label logo text of the header, which is returned by GET api/2.0/settings/whitelabel/logotext.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The greeting title of the portal, or the localized default caption when the portal has no title of its own | 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 | - |
| 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
getIsDefaultGreetingSettings
BooleanWrapper getIsDefaultGreetingSettings()
GET /api/2.0/settings/greetingsettings/isdefault
Check the default greeting settings
Reports whether the current portal still shows the built-in greeting caption instead of a title of its own. The check is read-only and open to any authenticated user, with no administrative right required. It answers true while no title is stored for the portal - the state after POST api/2.0/settings/greetingsettings/restore on an installation that configures no portal name, and also after saving an empty title - and false as soon as a non-empty title has been saved. Use it together with GET api/2.0/settings/greetingsettings: that operation substitutes the localized default caption for a missing title, so only these two calls together separate a default greeting from a custom one that happens to repeat the default wording. The answer covers the greeting title alone; whether the white-label logos and logo text are still the default ones is reported by GET api/2.0/settings/whitelabel/logos/isdefault and GET api/2.0/settings/whitelabel/logotext/isdefault.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Boolean value: true if the portal has no greeting title of its own and the built-in default caption is shown | 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
restoreGreetingSettings
StringWrapper restoreGreetingSettings()
POST /api/2.0/settings/greetingsettings/restore
Restore the greeting settings
Drops the custom greeting title of the current portal and puts back the title configured for the installation, which is an empty value unless the installation defines a portal name of its own. The caller needs the portal-settings right of a DocSpace administrator, otherwise the call is refused. The change is immediate for every user of the portal and a second call changes nothing, so a retry after a failed attempt is safe. The answer is the greeting in force afterwards: the configured title when there is one, and the localized default caption when the stored title ends up empty - in that case GET api/2.0/settings/greetingsettings/isdefault starts answering true. Only the caption is touched: the portal logos and the white-label logo text keep their values and are reset separately by PUT api/2.0/settings/whitelabel/logos/restore and PUT api/2.0/settings/whitelabel/logotext/restore. To set a title instead of the default one use POST api/2.0/settings/greetingsettings.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The greeting title in force after the restore, or the localized default caption when the installation configures none | 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 | - |
| 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
saveGreetingSettings
StringWrapper saveGreetingSettings(GreetingSettingsRequestsDto)
POST /api/2.0/settings/greetingsettings
Save the greeting settings
Replaces the greeting title of the current portal with the title from the request, storing it as the portal name. The caller needs the portal-settings right of a DocSpace administrator, otherwise the call is refused. The new caption takes effect at once for every user of the portal and the change is written to the audit trail; repeating the call with the same title leaves the portal in the same state. A missing title or one longer than 255 characters is rejected as an invalid request before the handler runs. On a cloud portal with a free or trial plan the title is also matched against the character rule configured for the installation and a title that breaks it is refused, while a paid cloud plan and a server installation apply no character check. An empty title clears the greeting: the portal falls back to the built-in default caption and GET api/2.0/settings/greetingsettings/isdefault starts answering true. What comes back is a localized confirmation message, not the stored title - read the title with GET api/2.0/settings/greetingsettings.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| GreetingSettingsRequestsDto | body | GreetingSettingsRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | A localized message confirming that the greeting title has been saved | 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
SettingsIPRestrictionsApi
getIpRestrictions
IPRestrictionArrayWrapper getIpRestrictions()
GET /api/2.0/settings/iprestrictions
Get IP restrictions
Returns the IP restriction list of the current portal - the addresses allowed to reach it, each with its id and the forAdmin flag that narrows the entry to DocSpace administrators. The caller needs the portal-settings right of a DocSpace administrator, otherwise the call is refused. The call is read-only and honours If-None-Match: send back the ETag of an earlier answer and an unchanged list comes back as an empty not-modified response rather than a body. The list has no defined order and is empty on a portal where nobody has configured restrictions - and an empty list blocks nobody, whatever the enforcement flag says. Whether the restrictions are enforced at all is not part of this answer: read that flag with GET api/2.0/settings/iprestrictions/settings. The entries listed here apply to every user of the portal except its owner. Replace the whole list with PUT api/2.0/settings/iprestrictions; single entries cannot be added or deleted, and that update takes plain addresses rather than the IDs returned here.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The IP addresses allowed to reach the portal, each with its ID and administrators-only flag; an empty list when the portal has no restrictions | IPRestrictionArrayWrapper | 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
readIpRestrictionsSettings
IPRestrictionsSettingsWrapper readIpRestrictionsSettings()
GET /api/2.0/settings/iprestrictions/settings
Get IP restriction settings
Reports whether the IP restrictions of the current portal are enforced, as the enable flag together with the lastModified stamp of the setting. The caller needs the portal-settings right of a DocSpace administrator, otherwise the call is refused. The call is read-only and honours If-Modified-Since: send back the Last-Modified value of an earlier answer and an unchanged setting comes back as an empty not-modified response rather than a body. The flag is false on a portal nobody has configured. A true flag on its own blocks nothing: enforcement also needs at least one stored address, which this answer does not carry - read the addresses with GET api/2.0/settings/iprestrictions - and it is skipped entirely on an installation whose configuration hides the IP security section. Even when enforced, the portal owner and the installation's own networks are let through. Change the flag with PUT api/2.0/settings/iprestrictions/settings, which replaces the address list in the same call, so resend the addresses in force when all that changes is the flag.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The enforcement flag of the IP restrictions and the date the setting was last modified | IPRestrictionsSettingsWrapper | 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
saveIpRestrictions
IpRestrictionsWrapper saveIpRestrictions(IpRestrictionsDto)
PUT /api/2.0/settings/iprestrictions
Save IP restrictions
Replaces the whole IP restriction list of the current portal with the addresses from the request and stores the enforcement flag in the same call. The caller needs the portal-settings right of a DocSpace administrator, otherwise the call is refused. Every entry must be a single IPv4 or IPv6 address: from-to ranges and CIDR blocks are matched by the portal but cannot be stored here and are rejected as an invalid request, as is enable: true with an empty list. An omitted enable follows the list - on when addresses are sent, off when the list is empty. The replacement is written in one transaction, applies to new requests without a restart and is recorded in the audit trail; entries not repeated in the body are deleted, and sending the same body twice leaves the portal as it is. Enforcement spares the portal owner and the installation's own networks only, so a list without the caller's own address locks the remaining administrators out. The answer echoes the request rather than the stored rows - no entry IDs, and enable exactly as sent, empty when it was omitted - so read the result with GET api/2.0/settings/iprestrictions.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| IpRestrictionsDto | body | IpRestrictionsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The saved addresses and enforcement flag echoed back exactly as sent, without the IDs of the stored entries | IpRestrictionsWrapper | 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
updateIpRestrictionsSettings
IpRestrictionsWrapper updateIpRestrictionsSettings(IpRestrictionsDto)
PUT /api/2.0/settings/iprestrictions/settings
Update IP restriction settings
Stores the enforcement flag of the IP restrictions of the current portal together with the whole address list, replacing the addresses saved before; this operation and PUT api/2.0/settings/iprestrictions are two routes to the same handler and behave identically. The caller needs the portal-settings right of a DocSpace administrator, otherwise the call is refused. Every entry must be a single IPv4 or IPv6 address: from-to ranges and CIDR blocks are matched by the portal but cannot be stored here and are rejected as an invalid request, as is enable: true with an empty list. An omitted enable follows the list - on when addresses are sent, off when the list is empty - so the flag cannot be moved without resending the addresses that stay in force. The new state applies to new requests without a restart, is recorded in the audit trail, and sending the same body twice changes nothing further. Enforcement spares the portal owner and the installation's own networks only, so a list without the caller's own address locks the remaining administrators out. The answer echoes the request, so read the stored entries and their IDs with GET api/2.0/settings/iprestrictions.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| IpRestrictionsDto | body | IpRestrictionsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The stored enforcement flag and addresses echoed back exactly as sent, without the IDs of the stored entries | IpRestrictionsWrapper | 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
SettingsLicenseApi
acceptLicense
StringWrapper acceptLicense()
POST /api/2.0/settings/license/accept
Activate a license
Activates the license staged by POST api/2.0/settings/license on this self-hosted Enterprise installation: it records that the license was accepted, promotes the staged file to the active one and rewrites the portal-wide quota and tariff from it. Upload a file first: with nothing staged and no license on disk there is nothing to activate. The caller only has to be signed in, and the activation is recorded in the audit trail. Repeating the call is safe: the acceptance stamp is written only once and the same license is simply applied again. Read the outcome from the body rather than the status code - an empty string means the license is now active, and any other string is a message explaining why it is not: no license key was found, the key is not correct, the installed edition does not match the license type, or the license is expired or too small for the current user count. The acceptance stamp survives a failed activation, so a corrected file needs nothing extra. An installation with no license path configured answers that its pricing plan does not support the option and changes nothing. The operation stays reachable while the portal is unpaid.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | An empty string when the license is now active, or a localized sentence explaining why it was not activated | 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 | - |
| 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
getIsLicenseRequired
BooleanWrapper getIsLicenseRequired()
GET /api/2.0/settings/license/required
Check if a license is required
Reports whether this installation still has to be given a license file before it can be used, which is the question the setup wizard asks before offering its license upload step. No authentication is needed, so it can be called on a portal nobody has signed in to yet, and the call is read-only. The answer is true only for a self-hosted Enterprise build whose license file is not on disk yet; an open-source or SaaS portal, a portal configured to let anyone in without an account, an installation whose configuration hides the pricing section, and one that takes its setup from cloud-image metadata all answer false. A false answer therefore does not mean the portal is licensed - it also covers every build that needs no license at all. Nothing here describes a license already in place, neither its due date nor whether the editing service still accepts it, and the answer turns to false only once a staged file has been activated by POST api/2.0/settings/license/accept, not when it is uploaded. The operation stays reachable while the portal is unpaid.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true when this Enterprise installation still needs a license file, false when one is already active or the build needs none | BooleanWrapper | 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
refreshLicense
BooleanWrapper refreshLicense()
GET /api/2.0/settings/license/refresh
Refresh the license
Re-reads the license file of this self-hosted Enterprise installation and rewrites the portal-wide quota and tariff from it, so a file replaced on disk or a renewal issued by the vendor takes effect without a restart. A license staged by POST api/2.0/settings/license is promoted to the active one here as well, but the usual first-time order is upload and then POST api/2.0/settings/license/accept; this operation is for later refreshes. The caller only has to be signed in - no administrator right is checked. Despite the GET, the call rewrites stored data, and it is idempotent: repeating it applies the same license again. The editing service is asked to confirm the license as part of the check, and the license it reports must match the file. The answer is true when the license was applied and false on an installation with no license path configured at all, such as a SaaS or open-source portal, where nothing is read and nothing changes. A missing or unreadable file, a mismatched customer or edition, and an editing service that rejects the license all fail the call instead of answering false. The operation stays reachable while the portal is unpaid.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true when the license file was re-read and the portal quota and tariff rewritten from it, false on an installation that has no license path configured | 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
uploadLicense
StringWrapper uploadLicense(Files)
POST /api/2.0/settings/license
Upload a license
Takes the license file of this self-hosted Enterprise installation as multipart/form-data and stages it for activation; only the first entry of Files is read and the rest are ignored. The file is validated but not put in force here - follow with POST api/2.0/settings/license/accept to activate it, and until then the portal keeps the license it already had. The caller must be a DocSpace administrator, or hold a wizard or administrator confirmation link while the setup wizard is still unfinished; after the wizard is complete such a link alone is refused. An earlier staged file is overwritten, so the upload can be repeated safely. The answer is a localized sentence, not a structured result: Uploaded successfully on its own, or the same words plus the date since when support and updates are not covered, because a file already past its due date is still accepted. A request carrying no file, and a license whose start date has not arrived yet, are rejected as invalid; a file that cannot be read as a license, carries no customer id or signature, or was issued for the other edition fails the call. Whether the editing service accepts it is only checked at activation.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| Files | form | List (binary) | The license file, sent as multipart/form-data. Only the first entry is read and the rest are ignored, and a request carrying none is refused with 400. A file that cannot be read as a license, that carries no customer id or signature, or that was issued for the other edition fails the call; one whose start date has not arrived yet is refused, while one already past its due date is still accepted. Staging only stores the file - POST api/2.0/settings/license/accept puts it in force - and a file staged earlier is overwritten. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | A localized confirmation that the file was staged, carrying the date support and updates ended when the license is already overdue | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The request carried no license file, or the license does not start until a later date | - | - |
| 403 | The caller is not a DocSpace administrator, or a confirmation link was used after the setup wizard had already been completed | - | - |
| 405 | The installation has no license path configured, so it cannot be given a license 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
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: multipart/form-data
- Accept: application/json
SettingsLoginSettingsApi
getLoginSettings
LoginSettingsWrapper getLoginSettings()
GET /api/2.0/settings/security/loginsettings
Get login settings
Returns the brute-force protection of the sign-in form for the current portal: how many failed attempts are tolerated, how long the window they are counted in lasts, and how long an offender stays blocked. The caller needs the portal-settings right of a DocSpace administrator; members without it are refused, and anonymous callers are not admitted. The operation is read-only and honours If-Modified-Since: send back the Last-Modified value of an earlier answer and unchanged settings come back as an empty not-modified response rather than a body. checkPeriod and blockTime are counted in seconds. A portal nobody has configured tolerates 5 failed attempts inside a window of 60 seconds and blocks for 60 seconds, and reports isDefault true; the flag turns false as soon as any of the three values differs from that. The answer describes the portal-wide policy only: it does not say which accounts or addresses are blocked at the moment, while a lockout that has already happened is recorded in the login history and can be read with GET api/2.0/security/audit/login/filter. Change the numbers with PUT api/2.0/settings/security/loginsettings, or put them back with DELETE api/2.0/settings/security/loginsettings.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The brute-force protection settings of the portal: the tolerated attempts, the counting window and the block in seconds, and whether they match the shipped defaults | LoginSettingsWrapper | 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
setDefaultLoginSettings
LoginSettingsWrapper setDefaultLoginSettings()
DELETE /api/2.0/settings/security/loginsettings
Reset login settings
Puts the brute-force protection of the sign-in form back to what the portal shipped with: 5 tolerated failed attempts, a counting window of 60 seconds and a block of 60 seconds. The caller needs the portal-settings right of a DocSpace administrator, otherwise the call is refused. The operation takes no parameters and overwrites whatever was configured before without asking, so read the current numbers with GET api/2.0/settings/security/loginsettings first if they are worth keeping. Only the setting is reset: sign-ins already blocked stay blocked until the block they were given runs out, and the attempt counters running for other users are left alone. The reset is portal-wide, applies to attempts made from now on, is recorded in the audit trail, and calling it twice changes nothing further. The restored numbers also decide when the sign-in form starts asking for a captcha, which it does one attempt before the block. The answer is the restored settings, with isDefault true. Store numbers of your own with PUT api/2.0/settings/security/loginsettings.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The brute-force protection settings restored to the shipped defaults | LoginSettingsWrapper | 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
updateLoginSettings
LoginSettingsWrapper updateLoginSettings(LoginSettingsRequestDto)
PUT /api/2.0/settings/security/loginsettings
Update login settings
Replaces the brute-force protection of the sign-in form for the whole portal: attemptCount failed attempts inside a rolling window of checkPeriod seconds, after which the offender is blocked for blockTime seconds. All three values are replaced together and each has to be between 1 and 9999, so read the current ones with GET api/2.0/settings/security/loginsettings before changing only one of them; a value outside the range is rejected as an invalid request. The caller needs the portal-settings right of a DocSpace administrator, otherwise the call is refused. Failed attempts are counted per user name and client address, so one member's lockout leaves the rest of the portal signing in normally, and a blocked pair is refused even once the password is finally correct. The new numbers apply to attempts made from now on and leave counters and blocks already running as they are. The change is recorded in the audit trail, and the answer is the stored settings with the flag that says whether they still match the shipped defaults.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| LoginSettingsRequestDto | body | LoginSettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The brute-force protection settings as they were stored, with the flag that says whether they match the shipped defaults | LoginSettingsWrapper | 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
SettingsMessagesApi
enableAdminMessageSettings
StringWrapper enableAdminMessageSettings(TurnOnAdminMessageSettingsRequestDto)
POST /api/2.0/settings/messagesettings
Enable or disable administrator messages
Switches on or off the contact form the sign-in page offers a visitor who cannot get into the portal, and which delivers their message to the portal administrators. The caller needs the portal-settings right of a DocSpace administrator - the portal owner and a DocSpace administrator qualify, any other member is refused. Send the new state as turnOn: true publishes the form, false hides it. The change covers the whole portal, applies to the next sign-in page without a restart, is recorded in the audit trail, and repeating the call with the same value leaves the portal as it is. What comes back is a localized confirmation message rather than the stored flag - read the flag as enableAdmMess from GET api/2.0/settings, which needs no token. That flag is also forced on while the portal's payment has lapsed, so it can report true on a portal where the form was switched off here. The form itself posts to POST api/2.0/settings/sendadmmail and this setting gates nothing else: the notifications administrators receive as portal members are subscribed separately with POST api/2.0/settings/notification.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TurnOnAdminMessageSettingsRequestDto | body | TurnOnAdminMessageSettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | A localized message confirming that the administrator message setting has been saved | 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
sendAdminMail
StringWrapper sendAdminMail(AdminMessageSettingsRequestsDto)
POST /api/2.0/settings/sendadmmail
Send a message to the administrator
Sends a message from someone who cannot get into the portal to its administrators - the contact form the sign-in page offers unauthenticated visitors. No token is needed. The form has to be published first with POST api/2.0/settings/messagesettings unless the portal's payment has lapsed, otherwise nothing is sent; enableAdmMess in GET api/2.0/settings reports whether the call is worth making. email is the address the administrators answer to and has to be a real address, and message is reduced to plain text first, so a body carrying nothing but markup counts as empty - either fault is refused with 400. When the caller is not signed in and this installation has a CAPTCHA configured, recaptchaResponse has to carry a solved challenge of the recaptchaType that GET api/2.0/settings publishes together with the site key, and a missing or stale answer refuses the call. culture picks the language of the letter. Delivery is queued and reaches the administrators subscribed to administrator notifications, so a confirmed call means accepted rather than read, and the answer is a localized confirmation. Attempts are rate limited per address and per operation, and further ones are refused with 429.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| AdminMessageSettingsRequestsDto | body | AdminMessageSettingsRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | A localized message confirming that the message has been queued for the portal administrators | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The email address is malformed, or the message is empty once its markup is stripped | - | - |
| 429 | Too many contact attempts came from the same address within the rate-limit window | 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: application/json
- Accept: application/json
sendJoinInviteMail
StringWrapper sendJoinInviteMail(AdminMessageBaseSettingsRequestsDto)
POST /api/2.0/settings/sendjoininvite
Send an invitation email
Sends an invitation email with a join link to the address in the request - the self-registration the sign-in page's register link performs. No token is needed. The portal has to publish a trusted-domain policy first, saved with POST api/2.0/settings/maildomainsettings: without one there is nothing to join and every caller alike is answered with 405 - the same condition GET api/2.0/settings reports as enabledJoin. email has to be a real address written in ASCII rather than an internationalized one, must not already belong to a portal member, and, when the policy names domains rather than accepting all of them, has to end with one of them - each of those faults is refused with 400. culture picks the language of the letter. The invitation is not an account: the invitee becomes a member only after following the link, and the role it grants, user or room administrator, follows the trusted-domain settings and drops to user once the portal's paid places are taken. Where the installation caps invitations, an accepted call spends one of those counted by invitationLimit, and only about a dozen calls from one address in two minutes are accepted. What comes back is a localized confirmation.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| AdminMessageBaseSettingsRequestsDto | body | AdminMessageBaseSettingsRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | A localized message confirming that the invitation with the join link has been sent | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The email address is malformed or internationalized, lies outside the trusted domains, or already belongs to a member of the portal | - | - |
| 403 | The portal is not accepting requests while it is being restored, transferred or encrypted | - | - |
| 405 | The portal publishes no trusted-domain policy, so it has nothing to join | - | - |
| 429 | Too many invitation requests came from the same network address | 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: application/json
- Accept: application/json
SettingsNotificationsApi
getNotificationChannels
NotificationChannelStatusWrapper getNotificationChannels()
GET /api/2.0/settings/notification/channels
Get notification channels
Lists the ways this installation can deliver a notification, each as the internal name of the channel together with isEnabled: email.sender for letters and telegram.sender for Telegram messages. The list describes the installation and the portal rather than the calling user, so every member gets the same answer, and the call is read-only. Any signed-in member may ask for it, whatever its role, and no permission is demanded. A channel appears only when the notification service of the running installation is configured with a sender of that name, so the list can be shorter than the two names above, and an empty list means that configuration names no channel this build implements. email.sender is reported as enabled whenever it is listed, while telegram.sender is reported as enabled only while the portal has a Telegram bot name and token stored, which is what POST api/2.0/settings/authservice writes. An enabled channel says nothing about the caller: a member also has to connect their own Telegram account, for which GET api/2.0/settings/telegram/link hands out the link and GET api/2.0/settings/telegram/check reports the outcome. Which kinds of notification a member receives is a separate setting, read with GET api/2.0/settings/notification/{type}.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The notification channels this installation can deliver through, each with the flag that says whether it is enabled | NotificationChannelStatusWrapper | 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
NotificationChannelStatusWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getNotificationSettings
NotificationSettingsWrapper getNotificationSettings(type)
GET /api/2.0/settings/notification/{type}
Check notification availability
Reports whether one kind of notification is switched on for the calling user, taking the kind as the integer type in the route: 0 the new-item badges the Files responses carry, 1 the room activity letters, 2 the daily feed digest, 3 the periodic tips letters. The answer describes the caller's own account only - there is no way to read another member's settings - and the call is read-only and safe to repeat. Every signed-in member reads its own settings: the portal owner, a DocSpace administrator, a room administrator, a user and a guest are all accepted, and no permission is demanded. Badges come back switched on for an account that has not changed them, while the kinds 1, 2 and 3 come back switched off until they are switched on with POST api/2.0/settings/notification. What comes back is the kind that was asked for together with isEnabled. A type outside 0-3 is not recognised and the call fails instead of falling back to a default. The rooms silenced one by one are listed by GET api/2.0/settings/notification/rooms, and the delivery channels of the installation by GET api/2.0/settings/notification/channels.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| type | path | NotificationType | The kind of notification being asked about. A value outside the defined set fails the call rather than falling back to a default. | [required] [example: 0] [enum: 0, 1, 2, 3] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The notification kind that was asked for together with the flag that says whether it is switched on for the calling user | NotificationSettingsWrapper | 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
getRoomsNotificationSettings
RoomsNotificationSettingsWrapper getRoomsNotificationSettings()
GET /api/2.0/settings/notification/rooms
Get muted rooms
Returns the rooms the calling user has silenced, as the disabledRooms list of their identifiers. The list describes the caller's own account only, the call is read-only, and an empty list means nothing is silenced. Every signed-in member reads its own list, whatever its role - owner, administrator, user or guest - and no permission is demanded. The identifiers come back the way POST api/2.0/settings/notification/rooms stored them, in the order they were added and without paging; they are kept as opaque values, so both the numeric identifier of a portal room and the string identifier of a room on a connected third-party account appear here, and an identifier stays in the list after the room itself is deleted. While a room is on this list its activity is left out of the hourly room digest and of the daily feed, the letters that room would send at once are not sent, and its new-item counters are hidden from the Files responses. Silencing a room changes nothing for its other members. The kinds of notification this list is applied to are switched with POST api/2.0/settings/notification.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The identifiers of the rooms the calling user has silenced | RoomsNotificationSettingsWrapper | 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
RoomsNotificationSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
setNotificationSettings
NotificationSettingsWrapper setNotificationSettings(NotificationSettingsRequestsDto)
POST /api/2.0/settings/notification
Set notification status
Switches one kind of notification on or off for the calling user: send the kind as type - 0 the new-item badges, 1 the room activity letters, 2 the daily feed digest, 3 the periodic tips letters - together with isEnabled. The change touches the caller's own account only, and repeating the call with the same pair leaves the account as it is. Every signed-in member configures its own settings: the portal owner, a DocSpace administrator, a room administrator, a user and a guest are all accepted, and no permission is demanded. With 0 switched off the Files responses report new as 0 and mark files as muted; with 1 switched off both the hourly room digest and the letters a room sends at once, such as an editor mention, stop; with 2 switched off the daily digest stops; with 3 switched off the tips letters stop. What comes back is an echo of the request rather than a re-read of the stored state, and a type outside 0-3 is echoed as well while nothing is stored, so confirm the result with GET api/2.0/settings/notification/{type}. To silence a single room instead of a whole kind use POST api/2.0/settings/notification/rooms.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| NotificationSettingsRequestsDto | body | NotificationSettingsRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The notification kind and state as they were sent in the request | NotificationSettingsWrapper | 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
setRoomsNotificationStatus
RoomsNotificationSettingsWrapper setRoomsNotificationStatus(RoomsNotificationsSettingsRequestDto)
POST /api/2.0/settings/notification/rooms
Mute or unmute a room
Adds one room to the calling user's silenced list or takes it off again: mute true silences the room, false lets its notifications through. One call carries one room, so several rooms take several calls, and repeating a call with the same pair changes nothing. The room is named by roomsId and kept as an opaque value: the numeric identifier of a portal room and the string identifier of a room on a connected third-party account are both accepted, and neither the room's existence nor the caller's access to it is checked, so a mistyped identifier is stored as sent. Every signed-in member manages its own list, whatever its role, and the list of another member cannot be touched. While a room is silenced its activity is left out of the hourly room digest and of the daily feed, the letters it would send at once are not sent, and its new-item counters are hidden. The Files responses stop offering the mute action on a room once badges, room activity and the daily feed are all switched off, while this call keeps working. What comes back is the whole updated list, the same shape GET api/2.0/settings/notification/rooms returns.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| RoomsNotificationsSettingsRequestDto | body | RoomsNotificationsSettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The identifiers of the rooms the calling user has silenced, as the list stands after the change | RoomsNotificationSettingsWrapper | 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
RoomsNotificationSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
SettingsOwnerApi
sendOwnerChangeInstructions
OwnerChangeInstructionsWrapper sendOwnerChangeInstructions(OwnerIdSettingsRequestDto)
POST /api/2.0/settings/owner
Start the portal owner change
Starts handing this portal over to another of its members: the confirmation letter goes to the current owner's address, and nothing changes until the link in it is used. The owner's own email address has to be confirmed first, otherwise the call is answered with 400; GET api/2.0/people/@self reports it as activationStatus. The caller needs the portal-settings right of a DocSpace administrator, so a room administrator, an ordinary member or a guest is refused with 403, as is naming a guest in ownerId. Only the portal owner can actually start a transfer: an administrator who is not the owner, or a named user who is inactive or unknown here, gets 200 with status 0 and a localized refusal instead of an error, so read status and not the HTTP code. A started transfer answers status 1 and a message carrying the owner's address inside an HTML mailto: anchor rather than as plain text. Ownership itself does not move here; every call issues a fresh link usable for a limited period, seven days by default, and the attempt is recorded in the audit trail. Complete the transfer with PUT api/2.0/settings/owner; changing what a member may do is PUT api/2.0/people/type/{type}.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| OwnerIdSettingsRequestDto | body | OwnerIdSettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The outcome of the request: status 1 with the address the instructions were sent to, or status 0 with a localized refusal when the transfer cannot be started | OwnerChangeInstructionsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The portal owner's own email address has not been confirmed yet, so no instructions can be sent | - | - |
| 403 | The caller does not hold the portal-settings right of a DocSpace administrator, or the user named as the new owner is a guest | - | - |
| 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
OwnerChangeInstructionsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
updatePortalOwner
updatePortalOwner(OwnerIdSettingsRequestDto)
PUT /api/2.0/settings/owner
Confirm the portal owner change
Completes the portal owner change that POST api/2.0/settings/owner started, making the user named in ownerId the owner of this portal. Authorization comes from the confirmation link in that letter, not from an ordinary session: pass the link's type, key, uid and encemail parameters in the confirm request header, and check with POST api/2.0/authentication/confirm that it is still usable, because it expires after a limited period, seven days by default. A caller without such a link is refused whatever role it holds, and so is a link whose address is no longer the owner's, which is what replaying a used link looks like. The named user has to be an active member of the portal and must not be a guest. The call is mutating: a named user who is not a DocSpace administrator yet is promoted to one first, and a promotion needing a paid seat the portal lacks is refused before ownership moves. The previous owner keeps their account and role but loses the owner's rights, and the change reaches the audit trail. The answer carries no payload: read the new ownerId from GET api/2.0/settings, which needs no token. Only the new owner can start another transfer.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| OwnerIdSettingsRequestDto | body | OwnerIdSettingsRequestDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The portal owner has been changed to the user named in the request | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The user named as the new owner cannot be found in this portal, is a guest, or is not active | - | - |
| 409 | The new owner could not be given DocSpace administrator rights, so the transfer was not applied | - | - |
| 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: application/json
- Accept: application/json
SettingsQuotaApi
getUserQuotaSettings
TenantUserQuotaSettingsWrapper getUserQuotaSettings()
GET /api/2.0/settings/userquotasettings
Get the user quota settings
Returns the portal's per-user default storage quota: whether it is enabled and, if so, its size in bytes. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission); every other authenticated role, and an anonymous caller, is refused. This is a read-only, idempotent call. When enableQuota is false, the size value is not enforced and users get unlimited personal storage regardless of what it holds. The response supports conditional requests: send the standard If-Modified-Since header with the previous lastModified value, and an unchanged response comes back empty instead of resending the settings.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Current per-user default storage quota settings | TenantUserQuotaSettingsWrapper | 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
TenantUserQuotaSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
saveAiAgentQuotaSettings
TenantAiAgentQuotaSettingsWrapper saveAiAgentQuotaSettings(QuotaSettingsRequestsDto)
POST /api/2.0/settings/aiagentquotasettings
Save the AI Agent quota settings
Sets the portal's default storage quota for AI agents, applied as the starting limit for newly created agents. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission), and on a paid SaaS tenant the portal's plan must include the statistics feature, or the call is rejected as not covered by the plan. The requested size cannot exceed the portal's own total storage quota, nor, on a Standalone install with a portal-wide quota enabled, that quota's size. Disable enforcement by passing enableQuota=false; the size is then ignored for new agents. This is a mutating, idempotent call: sending the same body again leaves the quota unchanged. It returns the saved settings, not any agent's current usage.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| QuotaSettingsRequestsDto | body | QuotaSettingsRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Saved default AI agent storage quota settings | TenantAiAgentQuotaSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The portal's pricing plan does not include the statistics feature required for AI agent quotas | - | - |
| 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
TenantAiAgentQuotaSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
saveRoomQuotaSettings
TenantRoomQuotaSettingsWrapper saveRoomQuotaSettings(QuotaSettingsRequestsDto)
POST /api/2.0/settings/roomquotasettings
Save the room quota settings
Sets the portal's default per-room storage quota, applied to newly created rooms as their starting limit. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission), and on a paid SaaS tenant the portal's plan must include the statistics feature, or the call is rejected as not covered by the plan. The requested size cannot exceed the portal's own total storage quota, nor, on a Standalone install with a portal-wide quota enabled, that quota's size. Disable enforcement by passing enableQuota=false; the size is then ignored for new rooms. This is a mutating, idempotent call: sending the same body again leaves the quota unchanged. It returns the saved settings, not the individual rooms' current usage.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| QuotaSettingsRequestsDto | body | QuotaSettingsRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Saved default per-room storage quota settings | TenantRoomQuotaSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The portal's pricing plan does not include the statistics feature required for room quotas | - | - |
| 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
TenantRoomQuotaSettingsWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: application/json
- Accept: application/json
setTenantQuotaSettings
TenantQuotaSettingsWrapper setTenantQuotaSettings(TenantQuotaSettingsRequestsDto)
PUT /api/2.0/settings/tenantquotasettings
Save the tenant quota settings
Sets or removes the storage quota for a given tenant. Available only on a Standalone (self-hosted) installation; on SaaS the call is always refused. Requires a DocSpace administrator, and the portal's plan must include the statistics feature or the call is rejected as not covered by the plan. Pass a non-negative quota in bytes to enable the limit for the tenant identified by tenantId, or a negative value to remove any limit. This is a mutating, idempotent call: sending the same body again leaves the quota unchanged. It returns the saved quota settings for that tenant, not its current usage.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TenantQuotaSettingsRequestsDto | body | TenantQuotaSettingsRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Saved tenant storage quota settings | TenantQuotaSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The portal's pricing plan does not include the statistics feature required for tenant quotas | - | - |
| 405 | The caller is not a DocSpace administrator, or the portal is not a Standalone installation | - | - |
| 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
SettingsRebrandingApi
deleteAdditionalWhiteLabelSettings
AdditionalWhiteLabelSettingsResponseWrapper deleteAdditionalWhiteLabelSettings()
DELETE /api/2.0/settings/rebranding/additional
Delete the additional white label settings
Discards the resource flags stored for the installation and brings back the built-in set, so the sample documents, the Help Center link, the Feedback and Support link, the user forum, the video guides and the license agreements are offered as they are out of the box. Requires a DocSpace administrator and a server installation with unrestricted space access; on a SaaS portal the call is refused. Unlike POST api/2.0/settings/rebranding/additional it does not need a plan that includes branding, so an installation whose subscription no longer covers it can still be reset. The call is destructive for the stored flags, which have to be set again to come back, and it is idempotent. Instead of a flag it answers the set that is now in effect, so no follow-up read is needed. The reset is installation-wide and reaches every portal, and it leaves the visibility of the About page alone. The company details are reset separately by DELETE api/2.0/settings/rebranding/company.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The built-in resource flags that are now in effect | AdditionalWhiteLabelSettingsResponseWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the installation does not allow branding to be edited | - | - |
| 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
AdditionalWhiteLabelSettingsResponseWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
deleteCompanyWhiteLabelSettings
CompanyWhiteLabelSettingsResponseWrapper deleteCompanyWhiteLabelSettings()
DELETE /api/2.0/settings/rebranding/company
Delete the company white label settings
Discards the company details stored for the installation and brings back the built-in ONLYOFFICE name, site, email, address and phone, so the About page and the notification letters print the original vendor again. Requires a DocSpace administrator and a server installation with unrestricted space access; on a SaaS portal the call is refused. Unlike POST api/2.0/settings/rebranding/company it does not need a plan that includes branding, so an installation whose subscription no longer covers it can still be reset. The call is destructive: the previous details are not kept anywhere and have to be entered again to come back. It is idempotent, and instead of a flag it answers the details that are now in effect, so no follow-up read is needed. The reset is installation-wide and reaches every portal. The help and support links are reset separately by DELETE api/2.0/settings/rebranding/additional, and the logos and the wordmark of a single portal by the restore operations under api/2.0/settings/whitelabel.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The built-in company details that are now in effect | CompanyWhiteLabelSettingsResponseWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the installation does not allow branding to be edited | - | - |
| 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
CompanyWhiteLabelSettingsResponseWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getAdditionalWhiteLabelSettings
AdditionalWhiteLabelSettingsDtoWrapper getAdditionalWhiteLabelSettings()
GET /api/2.0/settings/rebranding/additional
Get the additional white label settings
Returns which of the ONLYOFFICE help and community resources the interface may offer - the sample documents, the Help Center link, the Feedback and Support link, the user forum, the video guides and the license agreements - so a client can hide the entries that are switched off. Any authenticated user may call it; no administrator permission is required, and a portal whose payment has lapsed is served as well. The call is read-only and idempotent. Each flag is true when the entry may be shown and false when it must be hidden, and isDefault tells whether the whole set is still the built-in one. The flags are installation-wide, so every portal of a server installation reports the same ones. They say nothing about the caller's own permissions, and the addresses behind the entries are not part of the answer. Change the flags with POST api/2.0/settings/rebranding/additional and reset them with DELETE api/2.0/settings/rebranding/additional.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The help and community resources the interface may offer, with the default flag | AdditionalWhiteLabelSettingsDtoWrapper | 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
AdditionalWhiteLabelSettingsDtoWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getCompanyWhiteLabelSettings
CompanyWhiteLabelSettingsDtoWrapper getCompanyWhiteLabelSettings()
GET /api/2.0/settings/rebranding/company
Get the company white label settings
Returns the company details that the About page and the notification letters print as the vendor, in the form the settings interface edits them. Any authenticated user may call it; no administrator permission is required, and a portal whose payment has lapsed is served as well. The call is read-only and idempotent. Alongside the stored fields the answer carries isLicensor, which tells whether these details belong to the vendor of the product itself, and isDefault, which tells whether they are still the built-in ONLYOFFICE ones. The values are installation-wide, so every portal of a server installation reports the same ones. The response is revalidatable: it carries Last-Modified, and sending that value back in If-Modified-Since yields an empty body while the details have not changed, which makes polling cheap. For the About page, where the built-in vendor has to be shown next to a reseller, use GET api/2.0/settings/companywhitelabel instead. Change the details with POST api/2.0/settings/rebranding/company.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The company details in effect, with the licensor and default flags | CompanyWhiteLabelSettingsDtoWrapper | 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
CompanyWhiteLabelSettingsDtoWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getEnableWhitelabel
BooleanWrapper getEnableWhitelabel()
GET /api/2.0/settings/enablewhitelabel
Check the white label availability
Reports whether branding may be configured for the current portal at all, which is the check to make before offering the rebranding interface or calling any of the save operations under api/2.0/settings/whitelabel. Requires a DocSpace administrator. The call is read-only and idempotent. The answer is true only when both conditions hold: the branding section is not switched off in the installation configuration, and the portal's current plan includes customization. It comes back as false on a plan without branding, which is exactly the case in which POST api/2.0/settings/whitelabel/logos/save, POST api/2.0/settings/whitelabel/logos/savefromfiles and POST api/2.0/settings/whitelabel/logotext/save are refused as payment required. The restore operations do not depend on this flag and stay available, so a portal that loses branding can still be reset to the built-in logos and wordmark. The flag says nothing about the installation-wide default branding, which additionally needs a server installation with unrestricted space access, and nothing about the company details and help links under api/2.0/settings/rebranding.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true when branding is enabled in this installation and included in the portal's plan | 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
getIsDefaultWhiteLabelLogoText
IsDefaultWhiteLabelLogosWrapper getIsDefaultWhiteLabelLogoText(IsDark, IsDefault)
GET /api/2.0/settings/whitelabel/logotext/isdefault
Check the default logo text
Reports whether the current portal still uses the built-in wordmark or one that was stored for it, which is what an interface needs to decide whether a Restore action applies to the text. Requires a DocSpace administrator. The call is read-only and idempotent. The answer has the same shape as one entry of GET api/2.0/settings/whitelabel/logos/isdefault, with name fixed to logotext and default set to true while no text has been stored and to false once one has. Because GET api/2.0/settings/whitelabel/logotext falls back to ONLYOFFICE when nothing is stored, this operation is the only way to tell a portal that deliberately kept the built-in wordmark from one that saved the very same text. Pass isDefault=true to inspect the installation-wide default branding instead of this portal's. The flag turns back to true after PUT api/2.0/settings/whitelabel/logotext/restore, and to false after POST api/2.0/settings/whitelabel/logotext/save. Saving the built-in wordmark itself counts as clearing the setting, so the flag stays true in that case as well.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| IsDark | query | Boolean | Which theme the answer is filled in for: true fills the dark image only, false the light one only. Omitting it fills both, leaving the dark one empty for the slots that have no separate dark image. | [optional] [example: true] |
| IsDefault | query | Boolean | Whether the installation-wide default branding is addressed instead of this portal own. Writing the default branding is only allowed on a self-hosted installation; elsewhere it is refused with 403. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | A single logotext entry telling whether the portal still uses the built-in wordmark | IsDefaultWhiteLabelLogosWrapper | 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
IsDefaultWhiteLabelLogosWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getIsDefaultWhiteLabelLogos
IsDefaultWhiteLabelLogosArrayWrapper getIsDefaultWhiteLabelLogos(IsDark, IsDefault)
GET /api/2.0/settings/whitelabel/logos/isdefault
Check the default white label logos
Reports, slot by slot, whether the current portal still shows the built-in image or a logo that was uploaded for it, which is what an interface needs to decide where a Restore action makes sense. Requires a DocSpace administrator; the URLs themselves are public and come from GET api/2.0/settings/whitelabel/logos, which needs no authentication. The call is read-only and idempotent. Every logo slot is returned, including the notification logo that the public list leaves out, so the result has one entry more than that list. An entry gives the stable slot name in name and default set to true while the slot has never been written, and to false once an image has been stored for it, whether for the light or for the dark theme. A slot goes back to true after PUT api/2.0/settings/whitelabel/logos/restore. Pass isDefault=true to inspect the installation-wide default branding instead of this portal's. The logo text is reported separately by GET api/2.0/settings/whitelabel/logotext/isdefault.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| IsDark | query | Boolean | Which theme the answer is filled in for: true fills the dark image only, false the light one only. Omitting it fills both, leaving the dark one empty for the slots that have no separate dark image. | [optional] [example: true] |
| IsDefault | query | Boolean | Whether the installation-wide default branding is addressed instead of this portal own. Writing the default branding is only allowed on a self-hosted installation; elsewhere it is refused with 403. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | One entry per logo slot, telling whether the slot still holds the built-in image | IsDefaultWhiteLabelLogosArrayWrapper | 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
IsDefaultWhiteLabelLogosArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getLicensorData
CompanyWhiteLabelSettingsArrayWrapper getLicensorData()
GET /api/2.0/settings/companywhitelabel
Get the licensor data
Returns the licensor details - company name, site, support email, postal address and phone - that the About page and the notification letters print as the vendor of the installation. Any authenticated user may call it, as these details are shown in the interface to everyone; no administrator permission is required. The call is read-only and idempotent. The list holds the details currently in effect as its first item; when they have been replaced by a reseller and the replacement is not itself marked as the licensor, the built-in ONLYOFFICE details are appended as a second item, so a caller can print both the reseller and the original vendor. A single-item list therefore means that the current details are the only ones to show. The values are installation-wide rather than per-portal, so every portal of a server installation reports the same ones. The same data in the form the settings interface edits is served by GET api/2.0/settings/rebranding/company, and it is written by POST api/2.0/settings/rebranding/company.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The licensor details in effect, followed by the built-in ONLYOFFICE ones when they have been replaced | CompanyWhiteLabelSettingsArrayWrapper | 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
CompanyWhiteLabelSettingsArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getWhiteLabelLogoText
StringWrapper getWhiteLabelLogoText(IsDark, IsDefault)
GET /api/2.0/settings/whitelabel/logotext
Get the white label logo text
Returns the wordmark the current portal prints next to or instead of a logo image, as a bare string rather than an object. Requires a DocSpace administrator, because this is the settings view of the value; the branding a login page needs is served by GET api/2.0/settings/whitelabel/logos, which needs no authentication. The call is read-only and idempotent. When nothing has been stored for the portal, the built-in ONLYOFFICE is returned, so the answer is never empty and cannot be used to tell a custom text from the default one - GET api/2.0/settings/whitelabel/logotext/isdefault answers that question. Pass isDefault=true to read the installation-wide default wordmark instead of this portal's; without it the portal's own value is returned even when the installation carries a different default. Change the text with POST api/2.0/settings/whitelabel/logotext/save and clear it with PUT api/2.0/settings/whitelabel/logotext/restore. The value is stored as it was typed, at most 40 characters long, and is not translated for the caller's language, so the same wordmark is returned for every user of the portal.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| IsDark | query | Boolean | Which theme the answer is filled in for: true fills the dark image only, false the light one only. Omitting it fills both, leaving the dark one empty for the slots that have no separate dark image. | [optional] [example: true] |
| IsDefault | query | Boolean | Whether the installation-wide default branding is addressed instead of this portal own. Writing the default branding is only allowed on a self-hosted installation; elsewhere it is refused with 403. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The wordmark stored for the portal, or the built-in ONLYOFFICE when none is set | 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
getWhiteLabelLogos
WhiteLabelItemArrayWrapper getWhiteLabelLogos(IsDark, IsDefault)
GET /api/2.0/settings/whitelabel/logos
Get the white label logos
Lists the branding logo slots of the current portal together with the image URLs to render, which is what a login page, an editor or a mail template needs before any user is known. No authentication is required, and the portal is resolved from the address the request is made to. The call is read-only and idempotent. Each item carries the slot as a number in type, its stable name in name, the size the image is fitted to in size (width and height in pixels), and the URLs in path. When isDark is passed, only the matching theme is filled in, light for false and dark for true; when it is omitted both are filled in and dark comes back empty for the slots that have no separate dark image. The notification slot is not part of this list, as it is derived from the login-page logo and used only in letters. Pass isDefault=true to read the installation-wide default logos instead of this portal's. To learn which slots are still untouched use GET api/2.0/settings/whitelabel/logos/isdefault.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| IsDark | query | Boolean | Which theme the answer is filled in for: true fills the dark image only, false the light one only. Omitting it fills both, leaving the dark one empty for the slots that have no separate dark image. | [optional] [example: true] |
| IsDefault | query | Boolean | Whether the installation-wide default branding is addressed instead of this portal own. Writing the default branding is only allowed on a self-hosted installation; elsewhere it is refused with 403. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The logo slots of the portal, each with its target size and the URLs of the light and dark images | WhiteLabelItemArrayWrapper | 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
restoreWhiteLabelLogoText
BooleanWrapper restoreWhiteLabelLogoText(IsDark, IsDefault)
PUT /api/2.0/settings/whitelabel/logotext/restore
Restore the white label logo text
Clears the wordmark stored for the current portal, so the built-in ONLYOFFICE is printed again next to or instead of the logo images. Requires a DocSpace administrator. Unlike POST api/2.0/settings/whitelabel/logotext/save it does not need a plan that includes branding, so a portal whose subscription no longer covers branding can still be reset. The call is destructive for the stored text, which is not kept anywhere and has to be typed again to come back, and it is idempotent: true comes back both when a text was cleared and when there was none. Logo images are left untouched and have their own PUT api/2.0/settings/whitelabel/logos/restore. Pass isDefault=true to reset the installation-wide default wordmark instead of this portal's, which only a server installation allows. After the call GET api/2.0/settings/whitelabel/logotext reports ONLYOFFICE and GET api/2.0/settings/whitelabel/logotext/isdefault reports default as true. The wordmark is the only setting this operation touches, so the company details and the help links of the installation are left as they are.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| IsDark | query | Boolean | Which theme the answer is filled in for: true fills the dark image only, false the light one only. Omitting it fills both, leaving the dark one empty for the slots that have no separate dark image. | [optional] [example: true] |
| IsDefault | query | Boolean | Whether the installation-wide default branding is addressed instead of this portal own. Writing the default branding is only allowed on a self-hosted installation; elsewhere it is refused with 403. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true once the portal prints the built-in wordmark again | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the installation does not allow default branding to be edited | - | - |
| 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
restoreWhiteLabelLogos
BooleanWrapper restoreWhiteLabelLogos(IsDark, IsDefault)
PUT /api/2.0/settings/whitelabel/logos/restore
Restore the white label logos
Drops every logo uploaded for the current portal and brings back the built-in images, so the portal looks unbranded again on the login page, in the left menu, in the editors and in letters. Requires a DocSpace administrator. Unlike the two save operations it does not need a plan that includes branding, so a portal whose subscription no longer covers it can still be reset. The call is destructive: the stored image files are deleted and cannot be recovered from the portal, only re-uploaded with POST api/2.0/settings/whitelabel/logos/save. It is idempotent and answers true both when logos were removed and when there was nothing to remove. All slots are reset together; there is no way to restore a single one. For this portal the picture kept for the older mail templates is reset along with the logos, while the logo text is left as it is and has its own PUT api/2.0/settings/whitelabel/logotext/restore. Pass isDefault=true to reset the installation-wide default branding instead, which only a server installation allows. Confirm the result with GET api/2.0/settings/whitelabel/logos/isdefault.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| IsDark | query | Boolean | Which theme the answer is filled in for: true fills the dark image only, false the light one only. Omitting it fills both, leaving the dark one empty for the slots that have no separate dark image. | [optional] [example: true] |
| IsDefault | query | Boolean | Whether the installation-wide default branding is addressed instead of this portal own. Writing the default branding is only allowed on a self-hosted installation; elsewhere it is refused with 403. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true once the portal shows the built-in logos again | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the installation does not allow default branding to be edited | - | - |
| 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
saveAdditionalWhiteLabelSettings
BooleanWrapper saveAdditionalWhiteLabelSettings(AdditionalWhiteLabelSettingsWrapper)
POST /api/2.0/settings/rebranding/additional
Save the additional white label settings
Stores which of the ONLYOFFICE help and community resources the interface offers: the sample documents, the Help Center link, the Feedback and Support link, the user forum, the video guides and the license agreements. The whole set is replaced by the settings object of the request, so send every flag, not only the changed ones - a flag left out is stored as off. A request without that object is rejected as an invalid request. Requires a DocSpace administrator, a server installation with unrestricted space access and a plan that includes branding, which GET api/2.0/settings/enablewhitelabel reports; on a SaaS portal the call is refused. The flags are installation-wide, so the change reaches every portal of that installation. The call is mutating and idempotent, and answers true. Only the visibility of these entries is controlled here, not the addresses behind them. Read the result back with GET api/2.0/settings/rebranding/additional and undo it with DELETE api/2.0/settings/rebranding/additional.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| AdditionalWhiteLabelSettingsWrapper | body | AdditionalWhiteLabelSettingsWrapper | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true once the resource flags have been stored for the installation | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The request carries no settings object | - | - |
| 403 | The caller is not a DocSpace administrator, or the installation does not allow branding to be edited | - | - |
| 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
saveCompanyWhiteLabelSettings
BooleanWrapper saveCompanyWhiteLabelSettings(CompanyWhiteLabelSettingsWrapper)
POST /api/2.0/settings/rebranding/company
Save the company white label settings
Stores the company details - name, site, support email, postal address and phone - that the About page and the notification letters print as the vendor. The whole set is replaced by the settings object of the request, so send every field, not only the changed ones; a request without that object, or with an email or a site that is not a valid value, is rejected as an invalid request. Requires a DocSpace administrator, a server installation with unrestricted space access and a plan that includes branding, which GET api/2.0/settings/enablewhitelabel reports; on a SaaS portal the call is refused. The values are installation-wide, so the change reaches every portal of that installation. Two fields are not taken from the request: the licensor flag is always stored as false, and hiding the About page is silently kept off unless the plan allows it. The call is mutating and idempotent, and answers true. Read the result back with GET api/2.0/settings/rebranding/company and undo it with DELETE api/2.0/settings/rebranding/company.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CompanyWhiteLabelSettingsWrapper | body | CompanyWhiteLabelSettingsWrapper | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true once the company details have been stored for the installation | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The request carries no settings object, or the email or the site is not a valid value | - | - |
| 403 | The caller is not a DocSpace administrator, or the installation does not allow branding to be edited | - | - |
| 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
saveWhiteLabelLogoText
BooleanWrapper saveWhiteLabelLogoText(IsDark, IsDefault, WhiteLabelRequestsDto)
POST /api/2.0/settings/whitelabel/logotext/save
Save the white label logo text
Sets the wordmark that the portal prints next to or instead of a logo image, on the login page, in the editors and in notification letters. Only logoText from the request body is used here, and it is limited to 40 characters; a longer value is rejected as an invalid request. Sending an empty or blank text, or exactly the built-in ONLYOFFICE, clears the setting instead of storing it, which has the same effect as PUT api/2.0/settings/whitelabel/logotext/restore. Requires a DocSpace administrator and a plan that includes branding, which GET api/2.0/settings/enablewhitelabel reports; otherwise the call is refused as payment required. The call is mutating and idempotent: the previous text is overwritten and true comes back. Logo images are not touched - they are saved by POST api/2.0/settings/whitelabel/logos/save - and the text is not rendered into them. Pass isDefault=true to write the installation-wide default wordmark instead of this portal's, which only a server installation allows. Read the stored value back with GET api/2.0/settings/whitelabel/logotext.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| IsDark | query | Boolean | Which theme the answer is filled in for: true fills the dark image only, false the light one only. Omitting it fills both, leaving the dark one empty for the slots that have no separate dark image. | [optional] [example: true] |
| IsDefault | query | Boolean | Whether the installation-wide default branding is addressed instead of this portal own. Writing the default branding is only allowed on a self-hosted installation; elsewhere it is refused with 403. | [optional] [example: true] |
| WhiteLabelRequestsDto | body | WhiteLabelRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true once the logo text has been stored for the portal | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the installation does not allow default branding to be edited | - | - |
| 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
saveWhiteLabelSettings
BooleanWrapper saveWhiteLabelSettings(IsDark, IsDefault, WhiteLabelRequestsDto)
POST /api/2.0/settings/whitelabel/logos/save
Save the white label logos
Replaces the branding images of the current portal with the ones sent in the request, so that the logos on the login page, in the left menu, in the editors and in letters come from this portal. Every entry of logo names a logo slot in its key - the numeric type published by GET api/2.0/settings/whitelabel/logos - and carries the light-theme and the dark-theme image in light and dark. An image is either a data:image/png;base64,... payload (png, jpg and svg are accepted) or the name of a file already uploaded to the temporary store; a slot left out of the request keeps its image. The dark image is stored only for the slots that have a dark variant, that is 1, 2, 6, 7 and 8, and is ignored for the favicon and the editor logos; saving slot 2 also rebuilds the notification logo 8 from it. Requires a DocSpace administrator and a plan that includes branding, which GET api/2.0/settings/enablewhitelabel reports; otherwise the call is refused as payment required. It answers true and is undone by PUT api/2.0/settings/whitelabel/logos/restore. With isDefault=true it writes the installation-wide default branding instead, which only a server installation allows. Uploaded files go to POST api/2.0/settings/whitelabel/logos/savefromfiles.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| IsDark | query | Boolean | Which theme the answer is filled in for: true fills the dark image only, false the light one only. Omitting it fills both, leaving the dark one empty for the slots that have no separate dark image. | [optional] [example: true] |
| IsDefault | query | Boolean | Whether the installation-wide default branding is addressed instead of this portal own. Writing the default branding is only allowed on a self-hosted installation; elsewhere it is refused with 403. | [optional] [example: true] |
| WhiteLabelRequestsDto | body | WhiteLabelRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true once the submitted logos have been stored for the portal | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the installation does not allow default branding to be edited | - | - |
| 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
saveWhiteLabelSettingsFromFiles
BooleanWrapper saveWhiteLabelSettingsFromFiles(IsDark, IsDefault)
POST /api/2.0/settings/whitelabel/logos/savefromfiles
Save the logos from files
Replaces the branding images of the current portal with the files sent as multipart/form-data, which is the way to upload image files directly instead of embedding them as base64 in POST api/2.0/settings/whitelabel/logos/save. The form field names are not used: each file is routed by its own name, which has to start with the numeric logo slot published by GET api/2.0/settings/whitelabel/logos and end with the image extension, as in 2.png; a name that also contains dark, as in 2.dark.png, is stored as the dark-theme image of that slot. Slots that get no file keep the image they have, and a dark file is ignored for the favicon and the editor logos, which have no dark variant. A request that carries no file at all is rejected. Requires a DocSpace administrator and a plan that includes branding, which GET api/2.0/settings/enablewhitelabel reports; otherwise the call is refused as payment required. It answers true, overwrites in place and is undone by PUT api/2.0/settings/whitelabel/logos/restore. With isDefault=true it writes the installation-wide default branding, which only a server installation allows.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| IsDark | query | Boolean | Which theme the answer is filled in for: true fills the dark image only, false the light one only. Omitting it fills both, leaving the dark one empty for the slots that have no separate dark image. | [optional] [example: true] |
| IsDefault | query | Boolean | Whether the installation-wide default branding is addressed instead of this portal own. Writing the default branding is only allowed on a self-hosted installation; elsewhere it is refused with 403. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true once the uploaded files have been stored as the portal logos | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not a DocSpace administrator, or the installation does not allow default branding to be edited | - | - |
| 409 | The request carried no file to store as a logo | - | - |
| 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
SettingsSSOApi
getDefaultSsoSettingsV2
SsoSettingsV2Wrapper getDefaultSsoSettingsV2()
GET /api/2.0/settings/ssov2/default
Get the default SSO settings
Returns the built-in SSO configuration a portal starts from: empty identity provider and service provider sections with the stock SAML settings already filled in (HTTP-POST binding, transient name ID format, RSA-SHA1 signing, AES-128 encryption), the default attribute mapping of givenName, sn and mail, the Single Sign-on login label, new accounts typed as user, and SSO switched off. Use it as the template for a new configuration: fill in the identity provider entity ID, sign-in URL and certificates, then send the result to POST api/2.0/settings/ssov2. The values are the same for every portal and do not depend on what is currently saved, nothing is written, and the call is safe to repeat. The caller needs the permission to edit portal settings, which in practice means the portal owner or a DocSpace admin, and the portal plan has to include Single Sign-On. This operation changes nothing by itself: to actually discard the configuration in use, call DELETE api/2.0/settings/ssov2, and to read what is configured now, call GET api/2.0/settings/ssov2.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The built-in SSO configuration a portal starts from | SsoSettingsV2Wrapper | 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
getSsoSettingsV2
SsoSettingsV2Wrapper getSsoSettingsV2()
GET /api/2.0/settings/ssov2
Get the SSO settings
Returns the SAML Single Sign-On configuration of the current portal: the identity provider endpoints and certificates, the service provider certificates, the attribute mapping, the login button label and the user type new SSO accounts get. Anonymous callers are accepted, but an unauthenticated one receives only hideAuthPage, which tells the sign-in page whether the built-in login form has to be hidden; every other field stays empty, so read the full configuration with an authenticated request. An authenticated caller needs the permission to edit portal settings, which in practice means the portal owner or a DocSpace admin, and the portal plan has to include Single Sign-On, otherwise the call is refused. The operation only reads and is safe to repeat. When the login label was never set, the response carries the built-in Single Sign-on instead of an empty string, and enableSso is null until the settings are saved for the first time. Use GET api/2.0/settings/ssov2/default for a blank configuration to start from, and GET api/2.0/settings/ssov2/constants for the values the SAML fields accept.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The current portal SSO settings; an anonymous caller gets only the hidden-login-form flag | SsoSettingsV2Wrapper | 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
getSsoSettingsV2Constants
SsoSettingsV2ConstantsWrapper getSsoSettingsV2Constants()
GET /api/2.0/settings/ssov2/constants
Get the SSO settings constants
Returns every literal value the SAML fields of the SSO configuration accept, grouped by the field it belongs to: name ID formats, request bindings, signing and encryption algorithms, and what a service provider or identity provider certificate can be used for. The values are the SAML URNs and algorithm URIs themselves, so they can be written into the configuration exactly as they come back; picking one from the matching group is the point, because POST api/2.0/settings/ssov2 stores these fields as they are given and a misspelled value therefore surfaces only later, as a failing sign-in. The list is a fixed part of the product: it is the same for every portal, does not depend on the saved settings and does not change between calls within a release, so it can be cached. The operation only reads, is safe to repeat and needs nothing beyond an authenticated caller. Use it together with GET api/2.0/settings/ssov2/default, which already has the usual values set.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Every value the SAML fields accept: name ID formats, bindings, signing and encryption algorithms, and the service provider and identity provider certificate uses | SsoSettingsV2ConstantsWrapper | 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
resetSsoSettingsV2
SsoSettingsV2Wrapper resetSsoSettingsV2()
DELETE /api/2.0/settings/ssov2
Reset the SSO settings
Discards the SAML Single Sign-On configuration of the current portal, stores the built-in default one in its place and returns what was stored, which is the same content as GET api/2.0/settings/ssov2/default. This is destructive and cannot be undone through the API: the identity provider addresses, both certificate sets, the attribute mapping and the login label are gone and SSO is left switched off, so keep a copy of GET api/2.0/settings/ssov2 first if the configuration may be needed again. Every account that signed in through SSO is unlinked and becomes an ordinary account that keeps its data but authenticates with portal credentials from then on, and its external contacts are converted the same way. Repeating the call is harmless, as the second one stores the same defaults again. The caller needs the permission to edit portal settings, which in practice means the portal owner or a DocSpace admin, and the portal plan has to include Single Sign-On, otherwise the call is refused. To switch SSO off while keeping the configuration, send it back to POST api/2.0/settings/ssov2 with SSO disabled instead. The reset is recorded in the audit trail.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The default SSO configuration that is now in effect | SsoSettingsV2Wrapper | 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
saveSsoSettingsV2
SsoSettingsV2Wrapper saveSsoSettingsV2(SsoSettingsRequestsDto)
POST /api/2.0/settings/ssov2
Save the SSO settings
Replaces the whole SAML Single Sign-On configuration of the current portal with the one passed as a JSON object in serializeSettings, and returns the configuration as it was stored. The payload is a complete configuration rather than a patch: fields left out are stored empty, so send back a changed copy of GET api/2.0/settings/ssov2, or start from GET api/2.0/settings/ssov2/default. The identity provider entity ID and sign-in URL are required, the sign-in and sign-out URLs have to be absolute http or https addresses, and the attribute mapping has to name the fields for first name, last name and email; otherwise nothing is saved. The caller has to be allowed to edit portal settings (portal owner or DocSpace admin), and the portal plan has to include Single Sign-On. Some values are normalised on the way in: a usersType other than 1 (room admin), 3 (DocSpace admin) or 4 (user) becomes 4, an empty login label becomes Single Sign-on, and a longer one is cut to 100 characters. Saving with SSO switched off unlinks every existing SSO account and turns it into an ordinary one; switching SSO back on later does not restore those links. The change is recorded in the audit trail.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SsoSettingsRequestsDto | body | SsoSettingsRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The SSO settings as they were stored, with the login label and the user type normalised | SsoSettingsV2Wrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The serialized settings are empty or do not contain an SSO configuration object | - | - |
| 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
SettingsSecurityApi
getEnabledModules
EnabledModuleArrayWrapper getEnabledModules()
GET /api/2.0/settings/security/modules
Get enabled modules
Lists the portal modules the calling user can currently open, each as an id holding the module's product class name and a title holding its display name, both HTML-encoded. Any signed-in member may call this; anonymous callers are not admitted. The operation is read-only and takes no parameters, and the list is specific to the caller: modules hidden for this portal, and modules whose access rules exclude the caller, are left out, and sub-modules nested under another module are never listed. Entries follow the portal's own module order rather than an alphabetical one. An empty list means the installation registers no such modules at all - the case on DocSpace, where the classic modules do not exist - and is not a failure. The identifiers here are display-oriented class names, not the GUIDs the access-settings operations work with, so do not feed them to GET api/2.0/settings/security/{id}, which expects a module GUID.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The portal modules the calling user can open, each with its product class name and its display name, in the portal's own module order | EnabledModuleArrayWrapper | 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
getIsProductAdministrator
ProductAdministratorWrapper getIsProductAdministrator(productid, userid)
GET /api/2.0/settings/security/administrator
Check product administrator
Reports whether one user administers one portal module, as the identifiers asked about plus an administrator flag. Both productid and userid are query parameters and both are required; the all-zero product GUID asks about the portal itself rather than about a single module. The caller needs the portal-settings right of a DocSpace administrator, otherwise the call is refused. The operation is read-only. The flag is true when the user belongs to the DocSpace administrator group or to the module's own group, so a portal-wide administrator is reported as an administrator of every module, whatever the module identifier says. Identifiers that name no user and no group are answered with false instead of a failure, so a false does not prove the user exists. The verdict is read out of group membership alone and says nothing about whether the module is enabled for this portal, which GET api/2.0/settings/security/{id} reports. Use GET api/2.0/settings/security/administrator/{productid} to list everyone who administers a module, and PUT api/2.0/settings/security/administrator to change the membership.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| productid | query | UUID (uuid) | The module being asked about, by module GUID. The all-zero GUID asks about the portal itself rather than a single module. | [required] [example: 00000000-0000-0000-0000-000000000000] |
| userid | query | UUID (uuid) | The account being asked about, by portal user ID. An ID that names no account is answered as a plain negative rather than a failure, so a negative answer does not prove the account exists. | [required] [example: 00000000-0000-0000-0000-000000000000] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The module and the user asked about together with the flag that says whether that user administers the module | ProductAdministratorWrapper | 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
getPasswordSettings
PasswordSettingsWrapper getPasswordSettings()
GET /api/2.0/settings/security/password
Get password settings
Returns the password policy of the current portal: the minimum length together with the flags that demand an uppercase letter, a digit and a special symbol, plus the regular expressions a client can check a password against before sending it anywhere. Any signed-in member may read it, and it is also reachable with the parameters of a confirmation link, so an invited user or one resetting a password can validate the new password before having a session; a portal whose payment has lapsed still answers. The operation is read-only and honours If-Modified-Since: send back the Last-Modified value of an earlier answer and an unchanged policy comes back as an empty not-modified response rather than a body. A portal nobody has configured requires 8 characters with all three flags off. Whatever the policy says, the portal refuses a password longer than 30 characters, a ceiling this answer does not carry. Change the policy with PUT api/2.0/settings/security/password.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The portal password policy: the minimum length, the uppercase, digit and special-symbol requirements, and the regular expressions a client can validate against | PasswordSettingsWrapper | 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
getProductAdministrators
EmployeeArrayWrapper getProductAdministrators(productid)
GET /api/2.0/settings/security/administrator/{productid}
Get product administrators
Lists the users who administer the portal module identified by productid in the path. The all-zero GUID stands for the portal itself: the answer then covers the DocSpace administrator group together with every product group, and includes the portal owner, who administers everything by default. The caller needs the portal-settings right of a DocSpace administrator, otherwise the call is refused. productid has to be a GUID, and one that names no group is answered with an empty list rather than a failure. The operation is read-only and returns whole user profiles, a heavier answer than a membership check, and a user who belongs to more than one of the groups asked about is listed once per group. Entries arrive in group order, the DocSpace administrator group first, the list is neither paged nor filterable, and a promotion made through the sibling PUT shows up here at once. Use GET api/2.0/settings/security/administrator to test a single user against a single module, and PUT api/2.0/settings/security/administrator to promote or demote somebody.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| productid | path | UUID (uuid) | The module the operation acts on, by module GUID. The all-zero GUID stands for the portal itself rather than for a single module, and a GUID that names no module group is answered with an empty result instead of a failure. | [required] [example: 00000000-0000-0000-0000-000000000000] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The users who administer the module asked about, or the portal-wide administrators when the all-zero identifier is used | EmployeeArrayWrapper | 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
getWebItemSecurityInfo
BooleanWrapper getWebItemSecurityInfo(id)
GET /api/2.0/settings/security/{id}
Check module availability
Answers whether the module with the given identifier is available to the calling user right now, as a single boolean. id is the module GUID and travels in the path; a value that is not a GUID does not match the route at all. Any signed-in member may call this; anonymous callers are not admitted. The operation is read-only and its answer is specific to the caller: true means a module with that identifier is registered in this portal, is visible, and the caller is allowed to read it, while false covers every other case - the module is not registered here, it is hidden for this portal, or the caller is outside the users and groups allowed to open it. A false therefore does not tell those apart, and an unknown identifier is reported as unavailable instead of failing. Read the allow-list behind the decision with GET api/2.0/settings/security, list the modules the caller can actually open with GET api/2.0/settings/security/modules, and change access with PUT api/2.0/settings/security.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | UUID (uuid) | The identifier of the object the operation acts on, as the listing operation of that kind of object reports it. It has to match the shape the route declares - a GUID where the route is typed as one - since a value of another shape does not match the route at all and is answered as not found. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Whether the module is registered, visible and readable by the calling user - false covers a module that is not registered here as well as one the caller may not open | 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
getWebItemSettingsSecurityInfo
SecurityArrayWrapper getWebItemSettingsSecurityInfo(ids)
GET /api/2.0/settings/security
Get module access settings
Reports how access to the portal's own modules is configured: for every module identifier sent in ids, whether access is restricted at all and which users and groups are allowed to open the module. Send the identifiers as repeated ids query values; each one has to be a GUID, and anything else is rejected as an invalid request. Omitting ids asks about every module registered in the portal, which on a DocSpace installation is none, so the answer is then an empty list rather than a failure. Any signed-in member may call this; anonymous callers are not admitted. The operation is read-only and answers one entry per identifier, in the order the identifiers were sent. enabled is false for a module nobody has ever configured, groups and users name the subjects the rule was stored for, and isSubItem marks a module that hangs under another one. Users the caller is not allowed to see are left out of users, so the same module can come back with different lists for different callers. Change any of this with PUT api/2.0/settings/security.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| ids | query | List | The modules to report on, each given as a GUID and sent as a repeated query value. An entry that is not a GUID fails the whole request as invalid. Leaving the list out asks about every module registered in the portal, which on a DocSpace installation is none, so the answer is then empty rather than complete. | [optional] [example: ["00000000-0000-0000-0000-000000000000"]] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The access configuration of every module identifier asked about: the enabled flag, the allowed groups, the allowed users the caller may see, and the sub-module flag | SecurityArrayWrapper | 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
setAccessToWebItems
SecurityArrayWrapper setAccessToWebItems(WebItemsSecurityRequestsDto)
PUT /api/2.0/settings/security/access
Set access to modules in bulk
Switches several portal modules on or off in one call: items carries an entry per module, its key the module GUID and its value the new enabled flag. The caller needs the portal-settings right of a DocSpace administrator, and the call is answered with 403 on an open portal, where everyone is admitted and per-module rules would mean nothing. Every key has to be a GUID; anything else is rejected as an invalid request, and a module listed twice is applied once, from its first entry. This operation carries no subject list of its own: switching a product module on restores the users and groups it was last restricted to, while every other case is stored as a plain allow or deny for everyone, so use PUT api/2.0/settings/security when the allow-list itself has to change. The batch is recorded in the audit trail as one list update rather than module by module. The answer is the resulting configuration of every module listed, in the shape GET api/2.0/settings/security returns.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| WebItemsSecurityRequestsDto | body | WebItemsSecurityRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The resulting access configuration of every module listed in the request | SecurityArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | Per-module access cannot be configured on an open portal, or the caller lacks the portal-settings right of a DocSpace administrator | - | - |
| 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
setProductAdministrator
ProductAdministratorWrapper setProductAdministrator(SecurityRequestsDto)
PUT /api/2.0/settings/security/administrator
Set product administrator
Promotes a portal member to administrator of one module, or takes that role away, according to the administrator flag; the all-zero product GUID targets the DocSpace administrator role, which covers the whole portal. The caller needs the portal-settings right of a DocSpace administrator, and granting the portal-wide role additionally requires being the portal owner - anyone else is refused with 403. A free cloud plan does not offer the option at all and answers 402, as does a promotion for which no paid seat is left, since promoting a guest or a plain member turns them into a paid one. Taking the portal-wide role away also removes the member from every product group. The change is immediate, portal-wide, recorded in the audit trail, and sending the same body twice changes nothing further; it never creates a user, so invite the member first. The answer echoes the identifiers and the flag as stored - re-read membership with GET api/2.0/settings/security/administrator.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| SecurityRequestsDto | body | SecurityRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The module, the user and the administrator flag as they were stored | ProductAdministratorWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 402 | The portal plan does not offer product administrators, or no paid seat is left for the member being promoted | - | - |
| 403 | Only the portal owner can grant or revoke the portal-wide administrator role | - | - |
| 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
setWebItemSecurity
SecurityArrayWrapper setWebItemSecurity(WebItemSecurityRequestsDto)
PUT /api/2.0/settings/security
Set module access
Replaces the access rules of one portal module: id names the module, enabled says whether it may be opened, and subjects lists the users and groups the rule is stored for. The caller needs the portal-settings right of a DocSpace administrator, and the call is answered with 403 on an open portal, where everyone is admitted and per-module rules would mean nothing. id has to be a GUID; anything else is rejected as an invalid request. The rules stored before are dropped rather than extended, so send the full list of subjects every time. Watch the empty cases: leaving subjects out applies enabled to everyone, while an empty subjects array is stored as access for everyone whatever enabled says. The change is recorded in the audit trail unless subjects was left out entirely. The answer is the module's resulting configuration as a single-entry list, in the shape GET api/2.0/settings/security returns. To switch several modules at once use PUT api/2.0/settings/security/access.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| WebItemSecurityRequestsDto | body | WebItemSecurityRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The resulting access configuration of the module, as a single-entry list | SecurityArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | Per-module access cannot be configured on an open portal, or the caller lacks the portal-settings right of a DocSpace administrator | - | - |
| 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
updatePasswordSettings
PasswordSettingsWrapper updatePasswordSettings(PasswordSettingsRequestsDto)
PUT /api/2.0/settings/security/password
Update password settings
Replaces the password policy of the whole portal with the four values sent: minLength and the three flags that demand an uppercase letter, a digit and a special symbol. There is no partial update - a flag left out of the body is stored as false - so read the current policy with GET api/2.0/settings/security/password and send it back with your change applied. The caller needs the portal-settings right of a DocSpace administrator, otherwise the call is refused. minLength has to sit between the floor the installation is configured with, 8 characters unless it was changed, and the ceiling of 30; anything outside is rejected as an invalid request. The new policy applies to passwords set from now on: existing passwords keep working until their owners change them, and nobody is asked to renew. The change is portal-wide, recorded in the audit trail, and sending the same body twice changes nothing further. The answer is the stored policy with its regular expressions.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| PasswordSettingsRequestsDto | body | PasswordSettingsRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The password policy as it was stored, including the regular expressions a client can validate against | PasswordSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The requested minimum length is outside the range the installation allows | - | - |
| 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
SettingsStatisticsApi
getSpaceUsageStatistics
UsageSpaceStatItemArrayWrapper getSpaceUsageStatistics(id)
GET /api/2.0/settings/statistics/spaceusage/{id}
Get the space usage statistics
Returns the storage space used by one portal module, broken down per data category the module tracks (for example per room type), together with a human-readable size and whether the category is disabled. Requires Owner or DocSpaceAdmin (the EditPortalSettings permission). id identifies the module by the same GUID the portal's module catalog uses; a module that does not exist, or one that does not report space usage at all, returns an empty list rather than an error. This is a read-only, idempotent call, and the list is not paginated. Sizes are already formatted as display strings (for example 1.5 GB), not raw byte counts.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | UUID (uuid) | The identifier of the object the operation acts on, as the listing operation of that kind of object reports it. It has to match the shape the route declares - a GUID where the route is typed as one - since a value of another shape does not match the route at all and is answered as not found. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Per-category space usage statistics for the requested module | UsageSpaceStatItemArrayWrapper | 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
UsageSpaceStatItemArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
SettingsStorageApi
getAllBackupStorages
StorageArrayWrapper getAllBackupStorages(Dump)
GET /api/2.0/settings/storage/backup
Get the backup storages
Returns the storages that can hold portal backups, with the one the saved backup schedule writes to marked as current and its parameters filled in from that schedule; when no schedule is saved, or when the schedule stores backups somewhere else than a third-party provider, none of the entries is current. Each entry has the same shape as in GET api/2.0/settings/storage: identifier, title, the authentication keys the provider expects, and isSet telling whether those keys are filled in on the server. Pass dump=true to read the schedule of the whole server instead of the one of the current portal, which only makes sense on a server installation. The caller needs the permission to edit portal settings, which in practice means the portal owner or a DocSpace admin, and on an installation that is not a server one the call is also refused unless backup is available there. Nothing is written and the call is safe to repeat. This operation says nothing about where the portal data itself lives; the backup schedule is configured through the backup API, and the storage of the documents through PUT api/2.0/settings/storage.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| Dump | query | Boolean | Whether the schedule of the whole server is read instead of the one of the current portal. It only changes which schedule marks an entry as current; the list of storages itself is the same either way, and the flag makes sense only on a self-hosted installation. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The storages that can hold portal backups, with the scheduled one marked as current | StorageArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit portal settings, or backup is not available on this installation | - | - |
| 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
getAllCdnStorages
StorageArrayWrapper getAllCdnStorages()
GET /api/2.0/settings/storage/cdn
Get the CDN storages
Returns the storages that can serve the static content of the portal through a content delivery network, which is the subset of the providers of GET api/2.0/settings/storage that offer a CDN of their own. The entries have the same shape as in the storage listing: identifier and title, the authentication keys the provider expects, isSet telling whether those keys are filled in on the server, and current marking the CDN the portal uses now. Keys of the current entry come from the saved CDN settings and keys of the others from the provider configuration. An empty list means the build ships no CDN-capable provider, and a list where nothing is current means the portal serves its static content itself. The caller needs the permission to edit portal settings, which in practice means the portal owner or a DocSpace admin, on a server installation with an unrestricted access space. Nothing is written and the call is safe to repeat. Use PUT api/2.0/settings/storage/cdn to select a CDN and DELETE api/2.0/settings/storage/cdn to stop using one.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The storages that can serve as the portal CDN, with the one in use marked as current | StorageArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit portal settings, or this installation does not allow changing the storage | - | - |
| 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
getAllStorages
StorageArrayWrapper getAllStorages()
GET /api/2.0/settings/storage
Get the portal storages
Returns the third-party storages the installation can keep portal data in, the providers the build ships with, such as Amazon S3, Google Cloud Storage or Rackspace. The built-in local storage is not among them: when none of the entries is current, the portal data sits in the local storage. Each entry carries the storage identifier and title, the authentication keys the provider expects, isSet telling whether those keys are already filled in on the server, and current marking the one the portal uses right now. Keys of the current storage are read from the saved settings, keys of the others from the provider configuration, so a value that was never configured comes back empty. The caller needs the permission to edit portal settings, which in practice means the portal owner or a DocSpace admin, and the installation has to be a server one whose access space is not restricted; otherwise the call is refused with 403. Nothing is written and the call is safe to repeat. Use PUT api/2.0/settings/storage to switch the storage, DELETE api/2.0/settings/storage to go back to the local one, and GET api/2.0/settings/storage/cdn or GET api/2.0/settings/storage/backup for the CDN and backup targets.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The storages available to the portal, each marked as configured and as currently in use | StorageArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit portal settings, or this installation does not allow changing the storage | - | - |
| 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
getAmazonS3Regions
AmazonS3RegionArrayWrapper getAmazonS3Regions()
GET /api/2.0/settings/storage/s3/regions
Get the Amazon S3 regions
Returns the Amazon regions the server knows about, each with its system name such as eu-central-1, the display name to show a user, and the partition details the region belongs to: partition name, DNS suffix, the pattern its region names match and the template its host names are built from. This is static reference data compiled into the server rather than portal configuration: nothing is read from the settings, nothing is written, the answer is the same for every portal and changes only when the server is updated, so it can be cached by the caller. Use the system name of an entry as the region value in props when configuring an Amazon S3 storage with PUT api/2.0/settings/storage, PUT api/2.0/settings/storage/cdn or a backup schedule, and prefer picking a value from here over typing one, because a region the server does not know cannot be reached. Any authenticated caller may read the list, no portal-settings permission is asked for, and the result is neither paginated nor filtered.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The Amazon regions known to this installation | AmazonS3RegionArrayWrapper | 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
getStorageProgress
DoubleWrapper getStorageProgress()
GET /api/2.0/settings/storage/progress
Get the storage migration progress
Returns how far the current portal has got in moving its data to another storage, as a percentage from 0 to 100. The migration itself is started by PUT api/2.0/settings/storage or DELETE api/2.0/settings/storage, which put the portal into the migrating state; poll this operation until the value reaches 100, then the portal is served from the new storage. A value of -1 means storage migration is not offered on this installation, which is the case for every portal that is not a server one. Ask for the progress only once a migration has actually been started: for a portal whose migration the server does not remember, the call fails instead of answering with a zero. The response carries the percentage only, without the error flag the migration service reports internally, so a value that stops advancing is a reason to check the portal state with GET api/2.0/portal rather than proof of progress. The caller needs the permission to edit portal settings, which in practice means the portal owner or a DocSpace admin, and the call is accepted even when the portal payment has lapsed. Nothing is written and the call is safe to repeat.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Migration progress as a percentage, or -1 where storage migration is not offered | DoubleWrapper | 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
resetCdnToDefault
resetCdnToDefault()
DELETE /api/2.0/settings/storage/cdn
Reset the CDN storage settings
Drops the CDN configuration of the current portal, module and saved credentials alike, so that the static content is served by the portal itself again. Nothing is uploaded or migrated, no state change is queued and the call gives back no body: only the settings are cleared, and files already copied to the content delivery network are left where they are, to be removed in the provider's own console if that is wanted. The change takes effect for links built after it, so a page that is already open may keep pointing at the CDN until it is reloaded. Repeating the call is harmless, because clearing an empty configuration does nothing. The caller needs the permission to edit portal settings, which in practice means the portal owner or a DocSpace admin, on a server installation with an unrestricted access space. Use GET api/2.0/settings/storage/cdn to see what is configured now and PUT api/2.0/settings/storage/cdn to select a CDN again; the portal storage of the documents is untouched by this operation and is reset with DELETE api/2.0/settings/storage instead.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The CDN configuration has been cleared and static content is served by the portal again | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit portal settings, or this installation does not allow changing the storage | - | - |
| 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
resetStorageToDefault
resetStorageToDefault()
DELETE /api/2.0/settings/storage
Reset the storage settings
Drops the third-party storage configuration of the current portal, module and saved credentials alike, and starts an asynchronous migration of the portal data back into the built-in local storage. The portal moves into the migrating state and stays unavailable until the transfer ends, so follow it with GET api/2.0/settings/storage/progress; the call itself returns as soon as the migration has been handed to the storage service and gives back no body. The caller needs the permission to edit portal settings, which in practice means the portal owner or a DocSpace admin, on a server installation with an unrestricted access space. This is a mutating and slow operation rather than a destructive one: documents are copied back rather than deleted, but the credentials of the previous storage are gone from the settings and have to be sent again with PUT api/2.0/settings/storage to switch back. Repeating the call while a migration is running starts another one, so poll instead. Resetting the storage is also the step that makes POST api/2.0/settings/encryption/start possible, since encryption only covers the local storage.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The storage configuration has been cleared and migration back to the local storage has started | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller may not edit portal settings, or this installation does not allow changing the storage | - | - |
| 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
updateCdnStorage
CdnStorageSettingsWrapper updateCdnStorage(StorageRequestsDto)
PUT /api/2.0/settings/storage/cdn
Update the CDN storage
Selects the content delivery network that serves the static content of the portal and saves the credentials it needs: module is the identifier of one of the entries of GET api/2.0/settings/storage/cdn, and props carries that provider's authentication keys as name and value pairs. The provider has to be available on the server, which the isSet flag of the listing tells, otherwise the request is rejected as invalid. Sending the module the portal already uses changes nothing and returns the saved settings as they are. Any other module is saved and the upload of the static content is handed to the storage service; the settings come back only when that hand-over succeeds, a failure being reported as a server error. Unlike the portal storage this has no progress operation, so there is nothing to poll: the content appears on the CDN once the service has copied it. Only static content is affected here, never documents; for those use PUT api/2.0/settings/storage. The caller needs the permission to edit portal settings, which in practice means the portal owner or a DocSpace admin, on a server installation with an unrestricted access space. The response is the stored CDN configuration.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| StorageRequestsDto | body | StorageRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The saved CDN configuration; the upload of the static content has been handed to the storage service | CdnStorageSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The requested CDN module is not configured on this installation | - | - |
| 403 | The caller may not edit portal settings, or this installation does not allow changing the storage | - | - |
| 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
updateStorage
StorageSettingsWrapper updateStorage(StorageRequestsDto)
PUT /api/2.0/settings/storage
Switch the portal storage
Points the current portal at another storage and saves the credentials it needs: module is the identifier of one of the storages listed by GET api/2.0/settings/storage, and props carries that provider's authentication keys as name and value pairs, for example the bucket, region and access key of an Amazon S3 storage. The provider has to be available on the server, which the isSet flag of the listing tells, otherwise the request is rejected as invalid. Sending the module the portal already uses changes nothing and returns the saved settings as they are. Any other module starts an asynchronous migration of the portal data: the portal moves into the migrating state and stays unavailable until the transfer ends, so follow it with GET api/2.0/settings/storage/progress and do not send a second switch while it runs. The caller needs the permission to edit portal settings, which in practice means the portal owner or a DocSpace admin, on a server installation with an unrestricted access space. The response is the stored configuration, module and properties, not the state of the migration. To return to the built-in local storage call DELETE api/2.0/settings/storage, and for the CDN use PUT api/2.0/settings/storage/cdn.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| StorageRequestsDto | body | StorageRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The saved storage configuration; migration of the portal data to it has been started | StorageSettingsWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The requested storage module is not configured on this installation | - | - |
| 403 | The caller may not edit portal settings, or this installation does not allow changing the storage | - | - |
| 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
SettingsTFASettingsApi
getTfaAppCodes
TfaAppCodeArrayWrapper getTfaAppCodes()
GET /api/2.0/settings/tfaappcodes
Get the TFA backup codes
Returns the one-time backup codes of the current user's authenticator-application credential, each with the flag that says whether it has been spent. A backup code is accepted in place of a code from the application when signing in, and every code works exactly once, so this list is what a member falls back on after losing access to their authenticator. Any authenticated member may call it, always for their own account: there is no way to read someone else's codes. The authenticator method has to be enabled on the portal and an application has to be linked to the account already, otherwise the call answers 405; link one through GET api/2.0/settings/tfaapp/confirm and POST api/2.0/settings/tfaapp/validate. Accounts flagged as outsiders are refused. This is a read-only, idempotent call: the codes are generated once, when the application is first linked, and the whole set is replaced by PUT api/2.0/settings/tfaappnewcodes. The default configuration issues five codes of six characters, and a portal may be configured for a different number and length.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The caller's backup codes, each with the flag showing whether it has already been used | TfaAppCodeArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 405 | The authenticator method is not enabled on this portal, or the caller has no application linked | - | - |
| 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
getTfaConfirmData
TfaConfirmDataWrapper getTfaConfirmData()
GET /api/2.0/settings/tfaapp/confirm
Get TFA confirmation data
Returns the confirmation link the current user has to follow to pass the portal's two-factor authentication step, together with the confirmation cookie that link depends on. Any authenticated member may call it, always for their own account, and TFA has to be required for that account by the portal policy already, otherwise the response body is empty. Which link comes back depends on the method. With the SMS method it is a phone activation link while the account has no activated mobile number and a phone authorization link afterwards, and only url is filled in. With the authenticator-application method the response also carries cookieName and cookieValue, and the call mutates state by issuing a fresh confirmation key and setting that cookie; the link then points at activation while no application is linked, or after the previous link was reset, and at re-verification once one is linked. Hand the code obtained through that flow to POST api/2.0/settings/tfaapp/validate. The portal-wide policy behind all of this is read with GET api/2.0/settings/tfaapp.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The confirmation link for the caller's TFA step, with the cookie filled in for the authenticator method | TfaConfirmDataWrapper | 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
getTfaSettings
TfaSettingsArrayWrapper getTfaSettings()
GET /api/2.0/settings/tfaapp
Get the TFA settings
Lists the two-factor authentication methods this portal offers, with the state of each one. The list carries at most two entries: sms, present only when the SMS method is enabled in the portal's configuration, and app, present only when the authenticator-application method is enabled there, so an empty list means neither method is offered here. Any authenticated member may call it, and what it returns is the portal-wide policy, not the caller's own linked credential. This is a read-only, idempotent call. For every entry enabled says whether that method is the current policy, available says whether it can actually be switched on (for sms that also requires a configured SMS provider), trustedIps lists the addresses and ranges exempt from the challenge, and mandatoryUsers and mandatoryGroups list the accounts that have to pass it even from a trusted address. Change the policy with PUT api/2.0/settings/tfaapp, and read the caller's own backup codes with GET api/2.0/settings/tfaappcodes.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The TFA methods the portal offers, with the portal-wide state of each | TfaSettingsArrayWrapper | 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
tfaAppGenerateSetupCode
TfaSetupCodeWrapper tfaAppGenerateSetupCode()
GET /api/2.0/settings/tfaapp/setup
Generate the TFA setup code
Issues the secret the current user has to enter in an authenticator application before the authenticator-application method can be used, both as a scannable QR-code image and as a key for manual entry. The call is reachable only with a confirmation token carrying the TfaActivation role, obtained from GET api/2.0/settings/tfaapp/confirm or from the login flow; an ordinary bearer token is refused. The authenticator method has to be enabled on the portal and be its current policy, and the account must have no application linked yet: for an already-linked account the call answers 405, so reset the credential first with PUT api/2.0/settings/tfaappnewapp. Accounts flagged as outsiders are refused. Repeating the call is safe and hands back the same secret for the account, so the QR code and the manual key always describe one and the same credential. qrCodeSetupImageUrl is a base64 data: URL of a PNG image, and account is the label the application will show. Finish the setup by sending a code from the application to POST api/2.0/settings/tfaapp/validate.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The account label, the manual entry key and the QR-code image for linking an authenticator application | TfaSetupCodeWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 405 | The authenticator method is not enabled on this portal, or the account already has an application linked | - | - |
| 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
tfaValidateAuthCode
BooleanWrapper tfaValidateAuthCode(TfaValidateRequestsDto)
POST /api/2.0/settings/tfaapp/validate
Validate the TFA code
Verifies a two-factor authentication code for the account named in the confirmation link being used, and completes that account's pending TFA step. The call is reachable only with a confirmation token carrying the TfaActivation or TfaAuth role, issued by GET api/2.0/settings/tfaapp/confirm or by the login flow; an ordinary bearer token is refused. Both a code from the authenticator application and one of the account's unused backup codes are accepted, and a backup code is spent by the check. The call mutates state: it signs the account in, clears the confirmation cookie so the link cannot be replayed, and on the very first activation it generates the backup codes later returned by GET api/2.0/settings/tfaappcodes. Pass session=true to keep that sign-in for the browser session only instead of a persistent one. It answers true only for that first activation and false when an application was already linked. A wrong code is rejected as an invalid request, and further attempts are refused once the portal's login attempt limit is reached. The call also works while the portal's payment is overdue.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TfaValidateRequestsDto | body | TfaValidateRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true when the code completed a first activation and backup codes were generated, false when an application was already linked | 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
unlinkTfaApp
StringWrapper unlinkTfaApp(TfaRequestsDto)
PUT /api/2.0/settings/tfaappnewapp
Unlink the TFA application
Detaches the authenticator application from an account, so that the account has to link a new one before it can sign in again. id has to name an existing account: an empty or unknown value is refused. Passing the caller's own ID resets their own credential and returns the activation link they should follow next; passing another member's ID is allowed for the portal owner only, and every other caller, a DocSpace administrator included, is refused. The account has to have an application linked and the authenticator method has to be enabled on the portal, otherwise the call answers 405. The call is destructive: the account's backup codes are dropped together with the credential and all of its sessions are signed out. For another member the portal also emails them that their TFA was reset, and the answer is then an empty string. The portal-wide policy is not touched, so TFA stays required and the account sets up an application again through GET api/2.0/settings/tfaapp/confirm; lift the requirement for everyone with PUT api/2.0/settings/tfaapp.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TfaRequestsDto | body | TfaRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The activation link when the caller reset their own application, or an empty string when another member's was reset | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is not the portal owner, or the account cannot be resolved from id | - | - |
| 405 | The authenticator method is not enabled on this portal, or the account has no application linked | - | - |
| 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
updateTfaAppCodes
TfaAppCodeArrayWrapper updateTfaAppCodes()
PUT /api/2.0/settings/tfaappnewcodes
Regenerate the TFA backup codes
Replaces the current user's one-time backup codes with a freshly generated set and returns it. Use it once the previous codes have been spent or may have leaked: the whole old set stops being accepted the moment this call succeeds, so store the new codes before leaving the response. Any authenticated member may call it, always for their own account. The authenticator method has to be enabled on the portal and an application has to be linked to the account already, otherwise the call answers 405, and accounts flagged as outsiders are refused. The call mutates state and is not idempotent: every invocation issues another set and discards the one before it, so a retry after a timeout returns codes different from those the first attempt generated. The codes come back unused, five of them of six characters with the default configuration, and a portal may be configured for a different number and length. Read the current set without changing it through GET api/2.0/settings/tfaappcodes. The authenticator secret itself is untouched, so the linked application keeps working.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The newly generated backup codes, all unused, replacing the caller's previous set | TfaAppCodeArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 405 | The authenticator method is not enabled on this portal, or the caller has no application linked | - | - |
| 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
updateTfaSettings
BooleanWrapper updateTfaSettings(TfaRequestsDto)
PUT /api/2.0/settings/tfaapp
Update the TFA settings
Sets the portal-wide two-factor authentication policy: type 1 switches on the SMS method, 2 switches on the authenticator application, and 0 turns TFA off, as does any unknown value. The two methods are mutually exclusive, so switching one on switches the other off. The caller has to be the portal owner or a DocSpace administrator; other members are refused, and a request that names the owner's account in id or in mandatoryUsers is refused unless id carries the caller's own account. trustedIps takes single addresses, inclusive ranges and CIDR blocks, and an unparseable entry is rejected as an invalid request; accounts listed in mandatoryUsers or mandatoryGroups still have to pass the challenge even from a trusted address. Switching a method on is disruptive: it resets the portal's authentication cookies, so every session on the portal, the caller's own included, has to sign in again. The answer is true when a method was switched on and false when TFA was turned off. Use PUT api/2.0/settings/tfaappwithlink instead to receive the caller's own confirmation link in the same step.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TfaRequestsDto | body | TfaRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | true when the SMS or the authenticator method was switched on, false when TFA was turned off | BooleanWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 405 | The requested method is not enabled on this portal, or the SMS method has no configured provider | - | - |
| 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
updateTfaSettingsLink
StringWrapper updateTfaSettingsLink(TfaRequestsDto)
PUT /api/2.0/settings/tfaappwithlink
Update TFA settings with a link
Applies the same portal-wide two-factor authentication change as PUT api/2.0/settings/tfaapp and additionally returns the confirmation link the caller needs to pass the new challenge, so an administrator who has just switched TFA on can go straight to setting it up for themselves. The caller has to be the portal owner or a DocSpace administrator, and a request that names the owner's account in id or in mandatoryUsers is refused unless id carries the caller's own account. Every effect of the plain call applies here too: the methods are mutually exclusive, type 0 turns TFA off, trustedIps and the two mandatory lists behave the same way, and switching a method on resets the portal's authentication cookies, so all sessions have to sign in again. The answer is an empty string whenever there is no link to hand out: when the request turned TFA off, and when the caller is exempt from the challenge, most often because their own address is in the trustedIps list of that very request. The cookie the link depends on is not returned here, read it with GET api/2.0/settings/tfaapp/confirm.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| TfaRequestsDto | body | TfaRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The caller's own confirmation link, or an empty string when TFA was turned off or the caller is exempt | StringWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is neither the portal owner nor a DocSpace administrator, or is placing the owner under the policy | - | - |
| 405 | The requested method is not enabled on this portal, or the SMS method has no configured provider | - | - |
| 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
SettingsTelegramApi
checkTelegram
TelegramStatusWrapper checkTelegram()
GET /api/2.0/settings/telegram/check
Check the Telegram connection
Reports whether the current user's account is linked to the portal's Telegram bot, and under which Telegram username. The bot keys must be configured for the portal beforehand with POST api/2.0/settings/authservice; until a bot is configured, linking cannot be completed and the status never reaches the linked state. Any authenticated user may call it, and only for their own account: there is no way to read another member's Telegram status. This is a read-only, idempotent call. The returned status is published as a number, where 0 means the account is not linked, 1 means it is linked, and 2 means a registration link has been issued and the portal is still waiting for the user to open it in Telegram. The username field is filled in only in state 1 and comes back empty in the other two. Start or resume linking with GET api/2.0/settings/telegram/link, and drop an established link with DELETE api/2.0/settings/telegram/link.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The current user's Telegram link state, with the username filled in only when linked | TelegramStatusWrapper | 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
linkTelegram
StringWrapper linkTelegram()
GET /api/2.0/settings/telegram/link
Get the Telegram link
Returns the personal t.me deep link that connects the current user's account to the portal's Telegram bot, so that notifications can be delivered to that user in Telegram. The bot keys must be configured for the portal beforehand with POST api/2.0/settings/authservice; without a configured bot name the response comes back empty. Any authenticated user may call it, and the link always belongs to the caller's own account. The call mutates state: unless the user still has an outstanding registration token it issues a fresh one, so calling it twice in a row hands back the same link instead of invalidating the first. That token is short-lived (20 minutes with the default configuration), and once it has expired the operation has to be called again for a new link. Linking itself is completed in Telegram, not here, so poll GET api/2.0/settings/telegram/check until its status becomes 1. Remove an established link with DELETE api/2.0/settings/telegram/link.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | A t.me deep link that connects the caller's account to the portal's Telegram bot | 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 | - |
| 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
unlinkTelegram
BooleanWrapper unlinkTelegram()
DELETE /api/2.0/settings/telegram/link
Unlink Telegram
Removes the link between the current user's account and the portal's Telegram bot, so that this user stops receiving notifications in Telegram. Any authenticated user may call it, and only for their own account: one member cannot unlink another. Nothing has to be linked beforehand, and the call is destructive but idempotent, returning true both when a link was removed and when there was none to remove, so a retry after a timeout is safe. Only the portal-side link is dropped: the chat itself stays in the user's Telegram, and the portal's bot configuration is untouched, so the other members keep their own links. Re-linking is not automatic, request a new link with GET api/2.0/settings/telegram/link and confirm the result with GET api/2.0/settings/telegram/check. Delivery over the other notification channels is unaffected; the channels enabled for the portal are listed by GET api/2.0/settings/notification/channels.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | Always true once the caller has no link to the Telegram bot | 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
SettingsWebhooksApi
createWebhook
WebhooksConfigWrapper createWebhook(CreateWebhooksConfigRequestsDto)
POST /api/2.0/settings/webhook
Create a webhook
Creates a webhook subscription for the current portal: a target URL that the portal calls with a signed JSON payload whenever one of the subscribed events happens. The target is checked before anything is stored, so it has to be an absolute http or https address outside the installation's own network, and it has to answer a HEAD request with a success code, redirects not being followed. secretKey is mandatory here, has to satisfy the portal password rules published by GET api/2.0/settings/security/password, and signs the payloads; it does not appear in any response. triggers is a bitmask of the subscribed events with 0 standing for all of them; a flag the caller's role may not use is rejected, so take the allowed set from GET api/2.0/settings/webhook/triggers. ssl=true additionally demands an https target with a valid certificate, while ssl=false leaves the certificate unchecked. Set targetId to deliver events about a single entity only. A subscription fires only for events its creator is allowed to see, and only while it is enabled. Any role except Guest may create one, and each call adds another subscription rather than replacing an existing one.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| CreateWebhooksConfigRequestsDto | body | CreateWebhooksConfigRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The created webhook subscription, without its secret key | WebhooksConfigWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The target URL is unusable or unreachable, or the secret key or a trigger flag was rejected | - | - |
| 403 | The caller is a Guest, or a non-admin caller while the developer tools are restricted | - | - |
| 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
enableWebhook
WebhooksConfigWrapper enableWebhook(UpdateWebhooksConfigRequestsDto)
PUT /api/2.0/settings/webhook/enable
Switch a webhook on or off
Switches one webhook subscription on or off, leaving the rest of its parameters as they are. Only id and enabled are read from the body: name, uri, secretKey, ssl, triggers and targetId are demanded by the schema but ignored here, so change any of them with PUT api/2.0/settings/webhook instead. Switching a subscription on re-checks what is already stored, probing the saved URL with a HEAD request and re-validating the saved secret against the current portal password rules, and the call is refused with 400 when either fails: a subscription whose target has gone away, or whose secret predates a tightening of the password rules, cannot be switched on until it is updated. Switching one off is not validated. While a subscription is off its events are dropped rather than queued, so nothing arrives from that period once it is switched on again. A DocSpaceAdmin may switch any subscription in the portal, anyone else only their own, and a Guest is refused. The response carries the subscription in its new state, and repeating the call changes nothing further.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| UpdateWebhooksConfigRequestsDto | body | UpdateWebhooksConfigRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The webhook subscription in its new state, without its secret key | WebhooksConfigWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The saved target no longer answers, or the saved secret no longer passes the password rules | - | - |
| 403 | The subscription belongs to another member, or the caller may not use webhooks at all | - | - |
| 404 | No webhook subscription with this ID exists in the portal | - | - |
| 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
getTenantWebhooks
WebhooksConfigWithStatusArrayWrapper getTenantWebhooks()
GET /api/2.0/settings/webhook
Get the portal webhooks
Returns the webhook subscriptions of the current portal, each together with the outcome of its most recent delivery. The portal owner and a DocSpaceAdmin see every subscription in the portal, while a RoomAdmin or a User sees only the ones they created themselves, so the same call answers differently depending on who asks. A Guest may not use webhooks at all and is refused, and so is any non-admin caller while the portal keeps the developer tools restricted, which GET api/2.0/settings/devtoolsaccess reports. Every entry pairs the stored configuration with status, the HTTP status code the target answered on the last attempt, where 0 means nothing has been delivered yet, while the secret key is not part of the response. The list is neither paginated nor ordered, and an empty list simply means no subscription exists for the caller. Nothing is written and the call is safe to repeat. Create a subscription with POST api/2.0/settings/webhook, and inspect single deliveries with GET api/2.0/settings/webhooks/log.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The webhook subscriptions visible to the caller, each with the status of its last delivery | WebhooksConfigWithStatusArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is a Guest, or a non-admin caller while the developer tools are restricted | - | - |
| 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
WebhooksConfigWithStatusArrayWrapper
Authorization
Basic, OAuth2 (scopes: read, write), ApiKeyBearer, asc_auth_key, Bearer, OpenId
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
getWebhookTriggers
WebhookTriggerArrayWrapper getWebhookTriggers()
GET /api/2.0/settings/webhook/triggers
Get the webhook triggers
Returns the catalogue of events a webhook subscription can listen to, in the order the portal presents them: user events, then group, file, folder, room, form and agent ones. Each entry carries the event name as it appears in a payload, such as file.created, the bit value to put into the triggers bitmask of a subscription, and available, telling whether the caller's own role may subscribe to that event at all: a User cannot subscribe to the creation of users, groups or rooms, for instance, while a RoomAdmin can. Add the bit values of the wanted events together to build triggers; the entry named * has the value 0 and stands for every event, so it is used on its own rather than added. Events unavailable to the caller are listed all the same, but passing one to POST api/2.0/settings/webhook or PUT api/2.0/settings/webhook is rejected as an invalid request. This is fixed reference data: the same for every portal, not paginated, changing only with the product version, and readable by any authenticated caller, a Guest included. Nothing is written.
Parameters
This endpoint does not need any parameter.
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The triggers a webhook may subscribe to, each marked available for the caller's role or not | WebhookTriggerArrayWrapper | 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
getWebhooksLogs
WebhooksLogArrayWrapper getWebhooksLogs(deliveryFrom, deliveryTo, hookUri, configId, eventId, groupStatus, userId, trigger, count, startIndex)
GET /api/2.0/settings/webhooks/log
Get the webhook delivery log
Returns the delivery records of the portal webhooks, one record per attempt, carrying the trigger, the request and response headers and bodies, the HTTP status the target answered and the delivery moment, the last two staying empty while an attempt is still on its way. Records come newest first and are paged with startIndex and count, at most 100 at a time, while the number of records matching the filter is reported as total beside the response. Filters combine with AND: deliveryFrom and deliveryTo bound the delivery moment, hookUri matches the subscription URL exactly, configId picks one subscription, eventId one single record, groupStatus keeps only the answered status classes it names with 0 meaning no status filter, and trigger narrows to one event with 0 meaning all of them. userId filters by who created the subscription rather than by who caused the event, and for a caller who is not a DocSpaceAdmin it is forced to the caller, so a non-admin only ever sees deliveries of their own subscriptions. A Guest is refused. Nothing is written.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| deliveryFrom | query | Date (date-time) | The earliest delivery moment a record may carry. Records of attempts still on their way have no delivery moment yet and fall outside any bound set here. | [optional] [example: 2024-01-15T10:30:00Z] |
| deliveryTo | query | Date (date-time) | The latest delivery moment a record may carry. All the filters combine with AND, so it narrows whatever the other ones already kept. | [optional] [example: 2024-01-15T10:30:00Z] |
| hookUri | query | String | The subscription target address, matched in full rather than as a prefix. Filtering by configId is the reliable way to pick one subscription, since several may share an address. | [optional] [example: https://example.com/webhook] |
| configId | query | Integer (int32) | The subscription whose deliveries are kept, by the id that GET api/2.0/settings/webhook reports. | [optional] [example: 1] |
| eventId | query | Integer (int32) | A single delivery record, by its own identifier. It narrows the answer to that one record, which is how a client follows up a retry it queued earlier. | [optional] [example: 1] |
| groupStatus | query | WebhookGroupStatus | The classes of answered status to keep, as a bitmask; 0 keeps every record whatever the target answered. | [optional] [example: NotSent] [enum: 0, 1, 2, 4, 8, 16] |
| userId | query | UUID (uuid) | The member whose subscriptions the records belong to, by portal user ID - who created the subscription, not who caused the event. For a caller who is not a DocSpace administrator it is overwritten with the caller own ID, so such a caller never sees another member deliveries whatever is sent here. | [optional] [example: {}] |
| trigger | query | WebhookTrigger | The single event kind to keep; 0 keeps every kind. It names one trigger rather than a mask of several, unlike the triggers a subscription is created with. | [optional] [example: 0] [enum: 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824] |
| count | query | Integer (int32) | How many records one page may hold. The maximum is also the default, so a client that wants shorter pages has to ask for them; the number of records matching the filter comes back as total beside the page. | [optional] [example: 1] [min: 1] [max: 100] |
| startIndex | query | Integer (int32) | How many matching records to skip before the page begins, counting from the newest. Advance it by count to walk back through the log. | [optional] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The matching delivery records, newest first, with the total count reported beside them | WebhooksLogArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is a Guest, or a non-admin caller while the developer tools are restricted | - | - |
| 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
removeWebhook
WebhooksConfigWrapper removeWebhook(id)
DELETE /api/2.0/settings/webhook/{id}
Remove a webhook
Removes one webhook subscription from the current portal for good, addressed by id in the path. Deliveries stop with it: matching events are no longer queued, and there is no undo, so a subscription dropped by mistake has to be created again with POST api/2.0/settings/webhook, which gives it a new identifier and needs a new secret key. To pause deliveries without losing the configuration, switch the subscription off with PUT api/2.0/settings/webhook/enable instead. A DocSpaceAdmin may remove any subscription in the portal, anyone else only the ones they created, and a Guest may not use webhooks at all. The response repeats the subscription as it was just before the removal, so the caller can record what disappeared, again without the secret key. An identifier that no longer exists gives 404, which is what a second removal of the same subscription answers as well, so a repeated call is harmless but reports the state truthfully rather than pretending to succeed.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The identifier of the object the operation acts on, as the listing operation of that kind of object reports it. It has to match the shape the route declares - a GUID where the route is typed as one - since a value of another shape does not match the route at all and is answered as not found. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The removed webhook subscription, as it was just before the removal | WebhooksConfigWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The subscription belongs to another member, or the caller may not use webhooks at all | - | - |
| 404 | No webhook subscription with this ID exists in the portal | - | - |
| 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
retryWebhook
WebhooksLogWrapper retryWebhook(id)
PUT /api/2.0/settings/webhook/{id}/retry
Retry a webhook delivery
Sends one past webhook delivery again. The id in the path is that of a delivery record from GET api/2.0/settings/webhooks/log, not of a subscription, and the payload kept in that record is sent once more to the subscription it belongs to. The work is asynchronous: a fresh delivery record is created and queued at once, and the response describes that new record, with an identifier of its own and with status and delivery not filled in yet. To learn the outcome, read GET api/2.0/settings/webhooks/log with eventId set to the returned identifier until delivery appears. The original record stays as it is, and every call queues one more attempt, so this is not safe to repeat blindly. A DocSpaceAdmin may retry any delivery in the portal, anyone else only deliveries of the subscriptions they created, and a Guest is refused. An id of 0 is rejected as an invalid request and an unknown one gives 404. The operation is rate limited, so a burst of calls is answered with 429; to retry several records use PUT api/2.0/settings/webhook/retry.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| id | path | Integer (int32) | The identifier of the object the operation acts on, as the listing operation of that kind of object reports it. It has to match the shape the route declares - a GUID where the route is typed as one - since a value of another shape does not match the route at all and is answered as not found. | [required] [example: 1] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The newly queued delivery record, with its status and delivery moment not filled in yet | WebhooksLogWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The delivery record identifier is 0 | - | - |
| 403 | The delivery belongs to another member's subscription, or the caller may not use webhooks | - | - |
| 404 | No delivery record with this ID exists in the portal | - | - |
| 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
retryWebhooks
WebhooksLogArrayWrapper retryWebhooks(WebhookRetryRequestsDto)
PUT /api/2.0/settings/webhook/retry
Retry webhook deliveries
Sends a batch of past webhook deliveries again. ids holds the identifiers of delivery records from GET api/2.0/settings/webhooks/log; each of them is sent once more to the subscription it belongs to as a fresh delivery record, queued for asynchronous delivery, and the response lists those new records with status and delivery not filled in yet. Records that do not exist, and records of another member's subscription when the caller is not a DocSpaceAdmin, are skipped in silence instead of failing the call, so a response shorter than ids is the only sign that something was left out: compare the counts rather than assuming everything was queued. An empty ids list is accepted and queues nothing. Read the outcomes from GET api/2.0/settings/webhooks/log, matching the returned identifiers with eventId. Every call queues another round of attempts, and the original records stay as they are. A Guest is refused. The operation is rate limited, so a burst of calls is answered with 429. For a single record PUT api/2.0/settings/webhook/{id}/retry reports a missing or forbidden record instead of skipping it.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| WebhookRetryRequestsDto | body | WebhookRetryRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The newly queued delivery records, one for every identifier that could be retried | WebhooksLogArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | The caller is a Guest, or a non-admin caller while the developer tools are restricted | - | - |
| 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
updateWebhook
WebhooksConfigWrapper updateWebhook(UpdateWebhooksConfigRequestsDto)
PUT /api/2.0/settings/webhook
Update a webhook
Replaces the stored parameters of one webhook subscription, which is addressed by id in the body rather than in the path. Every field of the request overwrites the stored one, so a payload that leaves out enabled, ssl, triggers or targetId resets them to off, all events and no target: read the current values with GET api/2.0/settings/webhook first and send back whatever should stay. secretKey is the one exception, an empty value keeping the existing secret and a new one having to satisfy the portal password rules. The new target is validated exactly as on creation, that is it must sit outside the installation's own network and answer a HEAD request, and trigger flags the caller's role may not use are rejected. That validation runs before the subscription is looked up, so an unusable payload is refused with 400 even when no subscription with this id exists. A DocSpaceAdmin may update any subscription in the portal, anyone else only their own, and a Guest is refused. Sending the same payload twice leaves the same state. Use PUT api/2.0/settings/webhook/enable to switch a subscription on or off without touching anything else.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| UpdateWebhooksConfigRequestsDto | body | UpdateWebhooksConfigRequestsDto | [optional] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The updated webhook subscription, without its secret key | WebhooksConfigWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The target URL is unusable or unreachable, or the secret key or a trigger flag was rejected | - | - |
| 403 | The subscription belongs to another member, or the caller may not use webhooks at all | - | - |
| 404 | No webhook subscription with this ID exists in the portal | - | - |
| 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
SettingsWebpluginsApi
addWebPluginFromFile
WebPluginWrapper addWebPluginFromFile(system)
POST /api/2.0/settings/webplugins
Add a web plugin
Installs a web plugin into the current portal from an uploaded package, and switches the plugin on straight away. The package is sent as multipart/form-data with exactly one file: a .zip archive holding a config.json manifest and a plugin.js entry point, under the configured size cap of 5 MB by default. Editing the portal settings is required, so a portal owner or administrator, and the installation has to have web plugins and plugin uploading enabled in its configuration. Pass system=true to install the plugin for every portal of the installation, which is accepted on standalone installations only. The call is mutating and not idempotent: a package whose manifest name is already installed replaces the stored files and keeps the settings saved for that name, and the domains the manifest declares are added to the portal Content Security Policy. It returns the freshly installed plugin, enabled, with the url its script is served from. A portal holds up to 100 plugins by default, the manifest name has to be lower-case letters, digits, _, . or -, and the package is rejected when another installed plugin registers the same JavaScript object under a different name. List what is installed with GET api/2.0/settings/webplugins.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| system | query | Boolean | Whether the plugin is installed for every portal of the installation rather than only this one. It is accepted on a self-hosted installation alone and refused with 403 elsewhere; an installation-wide plugin also hides a portal plugin that carries the same name. | [optional] [example: false] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The installed web plugin, enabled, with the url its script is served from | WebPluginWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 400 | The uploaded package is missing, of the wrong type, too large, or its manifest is rejected | - | - |
| 403 | Web plugins or plugin uploads are switched off for the installation, or system was requested outside a standalone installation | - | - |
| 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
deleteWebPlugin
deleteWebPlugin(name)
DELETE /api/2.0/settings/webplugins/{name}
Delete a web plugin
Removes a web plugin from the current portal and deletes the files of its package from storage. The name is the manifest name published by GET api/2.0/settings/webplugins, matched without regard to case. Editing the portal settings is required, so a portal owner or administrator, and the installation has to have web plugins and plugin deletion enabled in its configuration. An installation-wide plugin, the one whose system field is true, can be removed on standalone installations only. The call is destructive and cannot be undone: the state and the settings stored for the plugin are dropped along with its files, the domains its manifest declares are taken out of the portal Content Security Policy, and the connected clients are notified. Getting the plugin back means uploading its package again with POST api/2.0/settings/webplugins, and the settings it had are gone. Nothing is returned on success, and a repeated call on a name that is no longer installed is rejected as not found instead of answered as success. To keep a plugin installed but inactive, switch it off with PUT api/2.0/settings/webplugins/{name} instead.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| name | path | String | The plugin to act on, by the manifest name GET api/2.0/settings/webplugins publishes as name, matched without regard to case. It is neither the localized display name nor the JavaScript object name in pluginName; a name that is not installed answers 404. | [required] [example: example-plugin] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The web plugin and the files of its package are removed from the portal | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | Web plugins or plugin deletion are switched off, the caller may not edit the portal settings, or the plugin is installation-wide outside a standalone installation | - | - |
| 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
getWebPlugin
WebPluginWrapper getWebPlugin(name)
GET /api/2.0/settings/webplugins/{name}
Get a web plugin by name
Returns one web plugin of the current portal by its manifest name, looked up over the same set as GET api/2.0/settings/webplugins: the installation-wide plugins plus the portal's own. The name is the manifest name published in the name field of that list, matched without regard to case; it is neither the localized display name nor the JavaScript object name in pluginName, so it cannot be taken from the title shown in the interface. Any authenticated portal member may call it, no settings permission needed, and the installation has to have web plugins enabled in its configuration. The call is read-only and idempotent. The response carries the manifest data along with the state the portal stored for that plugin: enabled, the settings string, system, and the url and cssUrl a client loads it from. A name that is not installed is rejected as not found, and 403 means web plugins are switched off for the installation. Change the state of the plugin with PUT api/2.0/settings/webplugins/{name}.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| name | path | String | The plugin to act on, by the manifest name GET api/2.0/settings/webplugins publishes as name, matched without regard to case. It is neither the localized display name nor the JavaScript object name in pluginName; a name that is not installed answers 404. | [required] [example: example-plugin] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The requested web plugin with the state the portal stored for it | WebPluginWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | Web plugins are switched off for the installation | - | - |
| 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
getWebPlugins
WebPluginArrayWrapper getWebPlugins(enabled)
GET /api/2.0/settings/webplugins
Get web plugins
Lists the web plugins available in the current portal: the plugins installed for the whole installation first, then the portal's own, with a portal plugin dropped when an installation-wide plugin already uses its name. Any authenticated portal member may call it, no settings permission needed, and the installation has to have web plugins enabled in its configuration. The call is read-only and idempotent. Pass enabled=true or enabled=false to keep only the plugins in that state, and leave the parameter out to get every plugin. Each entry carries the manifest data together with the state the portal stored for that plugin: enabled, the settings string, system for an installation-wide plugin, and the url and cssUrl a client loads the plugin from. An empty list means nothing is installed for this portal, not that plugins are switched off, which is refused with 403 instead. The list is capped at the configured maximum, 100 plugins by default, and is not paginated. For one plugin by its manifest name use GET api/2.0/settings/webplugins/{name}.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| enabled | query | Boolean | Which plugins are kept: true the ones switched on, false the ones switched off. Omitting it lists every installed plugin whatever its state. | [optional] [example: true] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The web plugins available in the portal, the installation-wide ones first | WebPluginArrayWrapper | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | Web plugins are switched off for the installation | - | - |
| 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
updateWebPlugin
updateWebPlugin(name, WebPluginRequests)
PUT /api/2.0/settings/webplugins/{name}
Update a web plugin
Switches a web plugin of the current portal on or off and stores the settings string the portal keeps for it. The plugin has to be installed already, so upload its package with POST api/2.0/settings/webplugins first, and name is its manifest name as published by GET api/2.0/settings/webplugins, matched without regard to case. Editing the portal settings is required, so a portal owner or administrator, and the installation has to have web plugins enabled in its configuration. The body replaces the stored state instead of merging into it, which makes the call idempotent; settings is required, so send {} when there is nothing to keep, and it is limited to 255 characters and stored encrypted for this portal alone. Switching the plugin on adds the domains its manifest declares to the portal Content Security Policy and switching it off takes them away again, and the connected clients are notified of the new state. Nothing is returned on success. A name that is not installed is rejected as not found, and 403 means web plugins are switched off or the caller may not edit the portal settings.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| name | path | String | The plugin to change, by the manifest name GET api/2.0/settings/webplugins publishes as name, matched without regard to case. It is neither the localized display name nor the JavaScript object name in pluginName, so it cannot be read off the interface; a name that is not installed answers 404. | [required] [example: example-plugin] |
| WebPluginRequests | body | WebPluginRequests | The whole state the plugin is to have afterwards. It replaces what was stored instead of merging into it, so both the enabled flag and the settings have to be sent every time. | [required] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The state and the settings of the web plugin are saved for the portal | - | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
| 403 | Web plugins are switched off for the installation, or the caller may not edit 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
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
ThirdPartyApi
getThirdPartyCode
StringWrapper getThirdPartyCode(provider)
GET /api/2.0/thirdparty/{provider}
Get provider consent URL
Builds and returns, as a string, the OAuth 2.0 consent URL of one external provider - the address a client opens in a browser so that the user can grant this portal access to their account. The provider's client id, secret and redirect URI have to be saved for the portal first with POST api/2.0/settings/authservice; without them the URL has no client_id and the provider refuses it. Any signed-in portal user may call it, and the call is read-only and safe to repeat. The URL carries response_type=code, the portal's client_id, the provider's redirect_uri, the scope the portal needs (Drive with offline access for Google, signature for DocuSign) and a state pointing back at this portal's thirdparty/{provider}/code page, where the code arrives in the URL fragment as #code=..., or #error/... when the user declines. Only Google 1, Dropbox 2, Docusign 3, Box 4, OneDrive 5, Wordpress 10 and Github 13 produce a URL; any other value is answered with 200 and no URL instead of an error. With desktop=true, the whole query string is copied into state and comes back on the callback. The code is not exchanged here: pass it on as token to POST api/2.0/files/thirdparty to connect the account.
Parameters
| Name | In | Type | Description | Notes |
|---|---|---|---|---|
| provider | path | LoginProvider | The provider whose consent screen is wanted. Only Google, Dropbox, Docusign, Box, OneDrive, Wordpress and Github produce a URL; any other provider is answered with 200 and no URL rather than an error. The provider credentials have to be saved with POST api/2.0/settings/authservice first, or the URL comes back without a client identifier and the provider refuses it. | [required] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] |
Responses
| Status code | Description | Type | Response headers |
|---|---|---|---|
| 200 | The consent URL of the provider, ready to be opened in a browser; empty when the requested provider is not one of the seven this operation supports | 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
Models
Model ActionType
Possible values:
0— None (None)1— Create (Create)2— Update (Update)3— Delete (Delete)4— Link (Link)5— Unlink (Unlink)6— Attach (Attach)7— Detach (Detach)8— Send (Send)9— Import (Import)10— Export (Export)11— Update access (UpdateAccess)12— Download (Download)13— Upload (Upload)14— Copy (Copy)15— Move (Move)16— Reassigns (Reassigns)17— Follow (Follow)18— Unfollow (Unfollow)19— Logout (Logout)
Model ActiveConnectionsDto
The connections the calling user currently has open, and which of them the request itself was made with.
| Name | Type | Description | Notes |
|---|---|---|---|
| loginEvent | Integer (int32) | The id of the item in items that the current request is authenticated by. It is 0 when the request carried a token in the Authorization header instead of the portal cookie, and in that case none of the items is the current connection. | [required] [example: 1] |
| items | List | One item per sign-in of the caller that is still active, ordered newest sign-in first, with the connection the request itself uses moved to the front. Sign-ins older than a year are left out, and a caller with no stored connection gets a single item describing the current request rather than an empty list. | [optional] [example: [{id=1234, ip=192.0.2.1}]] [nullable] |
Model ActiveConnectionsItemDto
One open connection of a user: where the sign-in behind it came from, and the ID it can be closed by.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The ID of the sign-in this connection was opened by. Pass it as loginEventId to PUT api/2.0/security/activeconnections/logout/{loginEventId} to end this one connection; the item whose value equals loginEvent is the connection the current request uses. | [required] [example: 1] |
| tenantId | Integer (int32) | The portal the sign-in was made on. The operation never crosses portals, so it is the current one on every item. | [required] [example: 1] |
| userId | UUID (uuid) | The user the connection belongs to, which is the calling user on every item - the operation cannot report anyone else's connections. | [required] [example: 00000000-0000-0000-0000-000000000000] |
| mobile | Boolean | Whether the sign-in came from a mobile client. No mobile marker is stored with a connection, so the value is false on every item and tells a caller nothing about the device. | [optional] [example: true] |
| ip | String | The IP address the sign-in came from, with the port stripped off. On the item that matches loginEvent it is taken from the address the current request arrives from instead of the one stored at sign-in. | [optional] [example: 192.0.2.1] [nullable] |
| country | String | The English name of the country the IP address is located in. It is empty when the address cannot be located, which is the normal outcome for private and loopback addresses. | [optional] [example: United States] [nullable] |
| city | String | The city the IP address is located in, empty under the same conditions as country. | [optional] [example: New York] [nullable] |
| browser | String | The browser and its version as parsed from the user agent of the sign-in, empty when the client sent no recognisable one. It is refreshed from the current request on the item that matches loginEvent. | [optional] [example: Chrome 120.0] [nullable] |
| platform | String | The operating system as parsed from the user agent of the sign-in, refreshed and left empty under the same conditions as browser. | [optional] [example: Windows] [nullable] |
| date | ApiDateTime | When the sign-in happened, in the portal time zone rather than in UTC. | [optional] |
| page | String | Where in the portal the sign-in was made from: the referrer of the request that created it, or that request's own path when it carried no referrer. Long values are cut off at 512 characters. | [optional] [example: /rooms/shared] [nullable] |
Model ActiveConnectionsWrapper
The successful API response containing the ActiveConnectionsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | ActiveConnectionsDto | The ActiveConnectionsDto 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 ActiveServiceArrayWrapper
The successful API response containing the list of ActiveServiceDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of ActiveServiceDto 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 ActiveServiceDto
One wallet service the portal is running right now, with the allowance it grants where that is counted.
| Name | Type | Description | Notes |
|---|---|---|---|
| service | String | The stable key of the service, which is what POST api/2.0/portal/payment/servicestate takes to switch it off again. | [optional] [example: disk-storage] [nullable] |
| serviceUnit | String | What limit and used count, in the portal language - gigabytes, editor seats, credits. | [optional] [example: GB] [nullable] |
| subscription | Boolean | Whether the service is billed as a standing subscription rather than per unit consumed. Only a subscription can carry limit and used. | [optional] [example: true] |
| title | String | The service name in the portal language, for printing rather than matching. | [optional] [example: Additional disk storage] [nullable] |
| limit | Integer (int32) | How much of the service the portal is entitled to. It is empty for a service whose consumption is not counted this way, which is not the same as a service without a limit. | [optional] [example: 500] [nullable] |
| used | Integer (int32) | How much of that allowance is in use - the editors currently active for the cloud editors, the units already consumed for disk storage. Empty under the same conditions as limit. | [optional] [example: 320] [nullable] |
Model AdditionalWhiteLabelSettings
The additional white label settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| startDocsEnabled | Boolean | Specifies if the sample documents are displayed or hidden. | [optional] [example: true] |
| helpCenterEnabled | Boolean | Specifies if the Help Center link is available or not. | [optional] [example: true] |
| feedbackAndSupportEnabled | Boolean | Specifies if the Feedback & Support link is available or not. | [optional] [example: true] |
| userForumEnabled | Boolean | Specifies if the user forum is available or not. | [optional] [example: true] |
| videoGuidesEnabled | Boolean | Specifies if the Video Guides link is available or not. | [optional] [example: true] |
| licenseAgreementsEnabled | Boolean | Specifies if the License Agreements link is available or not. | [optional] [example: true] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
Model AdditionalWhiteLabelSettingsDto
Which of the ONLYOFFICE help and community entries the interface may offer, installation-wide.
| Name | Type | Description | Notes |
|---|---|---|---|
| startDocsEnabled | Boolean | Whether the sample documents that ONLYOFFICE ships may be placed in a new user's Documents. Unlike the link flags below it depends on nothing that has to be configured, so its built-in value is always true. | [required] [example: true] |
| helpCenterEnabled | Boolean | Whether the interface may offer the Help Center entry. It is false both when the entry was switched off for the installation and when the installation configures no Help Center address at all; the addresses themselves are not part of this answer and arrive in externalResources of GET api/2.0/settings. | [required] [example: true] |
| feedbackAndSupportEnabled | Boolean | Whether the interface may offer the Feedback and Support entry, false for the same two reasons as helpCenterEnabled. | [required] [example: true] |
| userForumEnabled | Boolean | Whether the interface may offer the user forum entry, false for the same two reasons as helpCenterEnabled. | [required] [example: true] |
| videoGuidesEnabled | Boolean | Whether the interface may offer the Video Guides entry, false for the same two reasons as helpCenterEnabled. | [required] [example: true] |
| licenseAgreementsEnabled | Boolean | Whether the interface may offer the License Agreements entry, false for the same two reasons as helpCenterEnabled. | [required] [example: true] |
| isDefault | Boolean | Whether all six flags still hold the values the installation starts out with. It turns false as soon as one of them is saved differently and true again after DELETE api/2.0/settings/rebranding/additional. Because a link flag starts out off when no address is configured for it, true does not mean every entry is on. | [required] [example: false] |
Model AdditionalWhiteLabelSettingsDtoWrapper
The successful API response containing the AdditionalWhiteLabelSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | AdditionalWhiteLabelSettingsDto | The AdditionalWhiteLabelSettingsDto 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 AdditionalWhiteLabelSettingsResponseWrapper
The successful API response containing the AdditionalWhiteLabelSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | AdditionalWhiteLabelSettings | The AdditionalWhiteLabelSettings 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 AdditionalWhiteLabelSettingsWrapper
The additional white label settings wrapper.
| Name | Type | Description | Notes |
|---|---|---|---|
| settings | AdditionalWhiteLabelSettings | The additional white label settings. | [optional] |
Model AdminMessageBaseSettingsRequestsDto
Who is invited to join the portal, and in which language the invitation is written.
| Name | Type | Description | Notes |
|---|---|---|---|
| String (email) | The address the join link is sent to. It has to be a well-formed ASCII address rather than an internationalized one, must not already belong to a member of the portal, and, where the portal trusts named domains only, has to end with one of them; any of these faults is refused with 400. | [required] [example: admin@example.com] [minLength: 0] [maxLength: 255] [nullable] | |
| culture | String | The language the letter is written in, as a culture name such as en-US. A culture the installation does not have falls back to the portal language rather than failing the call. | [optional] [example: en-US] [nullable] |
Model AdminMessageSettingsRequestsDto
The message sent to the portal administrators, with the CAPTCHA proof that a person wrote it.
| Name | Type | Description | Notes |
|---|---|---|---|
| message | String | What the sender wants to tell the portal administrators. Markup is stripped before the letter is written, so a body that carries nothing but markup counts as empty and is refused with 400. | [required] [example: Hello, this is a test message from the administrator.] [minLength: 0] [maxLength: 255] [nullable] |
| String (email) | The address the sender can be answered at, which the letter is signed with. It has to be a well-formed email address. | [required] [example: user@example.com] [minLength: 0] [maxLength: 255] [nullable] | |
| culture | String | The language the letter is written in, as a culture name such as en-US. A culture the installation does not have falls back to the portal language rather than failing the call. | [optional] [example: en-US] [nullable] |
| recaptchaType | RecaptchaType | Which CAPTCHA service the proof in recaptchaResponse came from. It has to match the service the installation is configured with, which GET api/2.0/capabilities reports; the default value means the installation is left to decide. | [optional] [enum: 0, 1, 2, 3] |
| recaptchaResponse | String | The token the CAPTCHA widget produced in the browser, passed on unchanged for the portal to verify with the CAPTCHA service. It is single-use and short-lived, so it cannot be reused for a second message. | [optional] [example: 03AGdBq24PBCbwiDRaS...] [nullable] |
Model AiChatPriceDto
What a chat model charges, split by the direction the tokens flow in.
| Name | Type | Description | Notes |
|---|---|---|---|
| prompt | Double (double) | The cost of one million tokens sent to the model, which includes the conversation history resent with every turn and not just the newest message. | [optional] [example: 5.0] |
| completion | Double (double) | The cost of one million tokens the model writes back. It is normally the dearer of the two directions. | [optional] [example: 15.0] |
| promptCacheRead | Double (double) | The cost of one million prompt tokens served from the prompt cache. It is absent when the model does not support prompt caching. | [optional] [example: 0.2] [nullable] |
| promptCacheWrite | Double (double) | The cost of one million prompt tokens written to the prompt cache with the default lifetime. It is absent when the model does not support prompt caching. | [optional] [example: 2.5] [nullable] |
| promptCacheWrite1H | Double (double) | The cost of one million prompt tokens written to the prompt cache with a one-hour lifetime. It is absent when the model offers no such option. | [optional] [example: 4.0] [nullable] |
Model AiEmbeddingPriceDto
What an embedding model charges, which has one direction only.
| Name | Type | Description | Notes |
|---|---|---|---|
| prompt | Double (double) | The cost of one million tokens turned into vectors. Embedding produces no completion, so this single figure is the whole price. | [optional] [example: 0.13] |
Model AiEntryPricingDtoAiChatPriceDto
One AI model or service on the price list: how to name it, who provides it, and what it costs.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The model identifier to send to the AI operations. It is the value to branch on, while alias is for display only. | [required] [example: gpt-4o] [nullable] |
| alias | String | The model name as the vendor writes it, meant to be shown to a person rather than matched on. | [required] [example: GPT-4o] [nullable] |
| provider | String | Who runs the model. Two entries can share a provider, and one provider's models can be priced quite differently, so the price always belongs to the entry and never to the provider. | [required] [example: openai] [nullable] |
| image | String | The absolute URL of the provider's icon, for rendering next to the entry. | [required] [example: https://cdn.example.com/providers/openai.png] [nullable] |
| price | AiChatPriceDto | What the entry costs, in the currency the answer names. Amounts per token are normalised per million tokens, so they are not the price of a single call. | [required] |
| link | String | The provider's own page for the model, for a person to read the model's terms. It is empty when the provider publishes none. | [required] [example: https://openai.com/pricing] [nullable] |
Model AiEntryPricingDtoAiEmbeddingPriceDto
One AI model or service on the price list: how to name it, who provides it, and what it costs.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The model identifier to send to the AI operations. It is the value to branch on, while alias is for display only. | [required] [example: gpt-4o] [nullable] |
| alias | String | The model name as the vendor writes it, meant to be shown to a person rather than matched on. | [required] [example: GPT-4o] [nullable] |
| provider | String | Who runs the model. Two entries can share a provider, and one provider's models can be priced quite differently, so the price always belongs to the entry and never to the provider. | [required] [example: openai] [nullable] |
| image | String | The absolute URL of the provider's icon, for rendering next to the entry. | [required] [example: https://cdn.example.com/providers/openai.png] [nullable] |
| price | AiEmbeddingPriceDto | What the entry costs, in the currency the answer names. Amounts per token are normalised per million tokens, so they are not the price of a single call. | [required] |
| link | String | The provider's own page for the model, for a person to read the model's terms. It is empty when the provider publishes none. | [required] [example: https://openai.com/pricing] [nullable] |
Model AiEntryPricingDtoAiImagePriceDto
One AI model or service on the price list: how to name it, who provides it, and what it costs.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The model identifier to send to the AI operations. It is the value to branch on, while alias is for display only. | [required] [example: gpt-4o] [nullable] |
| alias | String | The model name as the vendor writes it, meant to be shown to a person rather than matched on. | [required] [example: GPT-4o] [nullable] |
| provider | String | Who runs the model. Two entries can share a provider, and one provider's models can be priced quite differently, so the price always belongs to the entry and never to the provider. | [required] [example: openai] [nullable] |
| image | String | The absolute URL of the provider's icon, for rendering next to the entry. | [required] [example: https://cdn.example.com/providers/openai.png] [nullable] |
| price | AiImagePriceDto | What the entry costs, in the currency the answer names. Amounts per token are normalised per million tokens, so they are not the price of a single call. | [required] |
| link | String | The provider's own page for the model, for a person to read the model's terms. It is empty when the provider publishes none. | [required] [example: https://openai.com/pricing] [nullable] |
Model AiEntryPricingDtoDecimal
One AI model or service on the price list: how to name it, who provides it, and what it costs.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The model identifier to send to the AI operations. It is the value to branch on, while alias is for display only. | [required] [example: gpt-4o] [nullable] |
| alias | String | The model name as the vendor writes it, meant to be shown to a person rather than matched on. | [required] [example: GPT-4o] [nullable] |
| provider | String | Who runs the model. Two entries can share a provider, and one provider's models can be priced quite differently, so the price always belongs to the entry and never to the provider. | [required] [example: openai] [nullable] |
| image | String | The absolute URL of the provider's icon, for rendering next to the entry. | [required] [example: https://cdn.example.com/providers/openai.png] [nullable] |
| price | Double (double) | What the entry costs, in the currency the answer names. Amounts per token are normalised per million tokens, so they are not the price of a single call. | [required] [example: {prompt=5.0, completion=15.0}] |
| link | String | The provider's own page for the model, for a person to read the model's terms. It is empty when the provider publishes none. | [required] [example: https://openai.com/pricing] [nullable] |
Model AiImagePriceDto
What an image model charges: the tokens of the request and the images that come out of it.
| Name | Type | Description | Notes |
|---|---|---|---|
| prompt | Double (double) | The cost of one million tokens sent to the image model, which is the prompt describing the picture. | [optional] [example: 8.0] |
| completion | Double (double) | The cost of one million tokens the image model writes back alongside the picture. | [optional] [example: 15.0] |
| image | Double (double) | The cost of one produced image, charged on top of the token amounts above. | [optional] [example: 30.0] |
Model AiPricesDto
What the AI features cost out of the portal wallet, grouped by the kind of model, in one currency.
| Name | Type | Description | Notes |
|---|---|---|---|
| chat | List | The chat models on offer, each priced per million prompt and completion tokens. A model listed here is one the installation can bill for, not necessarily one this portal may use - GET api/2.0/portal/payment/ai-model/restrictions says which are allowed. | [required] [example: [{id=gpt-4o, alias=GPT-4o, provider=openai, image=https://cdn.example.com/providers/openai.png, price={prompt=5.0, completion=15.0}}]] [nullable] |
| embedding | List | The embedding models on offer, priced per million tokens of input; an embedding model has no completion side, so its price object carries prompt alone. | [required] [example: [{id=text-embedding-3-large, alias=Text Embedding 3 Large, provider=openai, image=https://cdn.example.com/providers/openai.png, price={prompt=0.13}}]] [nullable] |
| image | List | The image models on offer, priced per million prompt and completion tokens plus a price for each image produced. | [required] [example: [{id=gpt-5.4-image-2, alias=GPT 5.4 Image 2, provider=OpenRouter, image=https://cdn.example.com/providers/openai.png, price={prompt=8.0, completion=15.0, image=30.0}}]] [nullable] |
| webSearch | List | The web search providers on offer. Their price is a bare number - the cost of one search - rather than an object, because there are no tokens to distinguish. | [required] [example: [{id=web-search, alias=Web Search, provider=tavily, image=https://cdn.example.com/providers/tavily.png, price=0.01}]] [nullable] |
| currency | CurrencyInfo | The currency every price above is expressed in, with its ISO code and symbol. One answer never mixes currencies, so this is the only place to read it. | [required] |
Model AiPricesWrapper
The successful API response containing the AiPricesDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | AiPricesDto | The AiPricesDto 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 AmazonS3RegionArrayWrapper
The successful API response containing the list of AmazonS3RegionDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of AmazonS3RegionDto 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 AmazonS3RegionDto
An Amazon S3 region.
| Name | Type | Description | Notes |
|---|---|---|---|
| systemName | String | The region code to send as the region value when configuring an Amazon S3 storage or backup target. It is the one field of this object that is an argument elsewhere; a code the server does not list here cannot be reached, so pick one from this list rather than typing it. | [optional] [example: eu-west-1] [nullable] |
| displayName | String | The region name as Amazon writes it, in English regardless of the portal language, for showing in a picker next to systemName. | [optional] [example: Europe (Ireland)] [nullable] |
| partitionName | String | The Amazon partition the region sits in - the ordinary commercial cloud, the Chinese one, or a government one. Regions of different partitions are not reachable with the same credentials. | [optional] [example: aws] [nullable] |
| partitionDnsSuffix | String | The domain the partition's service host names end in, which differs from partition to partition. | [optional] [example: amazonaws.com] [nullable] |
| partitionRegionRegex | String | The pattern every region code of this partition matches, for validating a code before sending it. | [optional] [example: ^(us|eu|ap|sa|ca|me|af|il|mx)\-\w+\-\d+$] [nullable] |
| hostnameTemplate | String | How a service host name of the partition is assembled, with {service}, {region} and {dnsSuffix} to be filled in. It is reference material - the portal builds its own endpoints from systemName. | [optional] [example: {service}.{region}.{dnsSuffix}] [nullable] |
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 AppArrayWrapper
The successful API response containing the list of AppDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of AppDto 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 AppDto
One feature module of the portal: whether it is switched on here, and the settings stored for it.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The application's stable key, declared in the installation configuration - ai-rooms, docs-cloud and the like. It is what every other operation of this group addresses an application by, and a client maps it to a title and an icon of its own; the portal ships no display name for it. | [optional] [example: ai-rooms] [nullable] |
| enabled | Boolean | Whether the application is switched on for this portal. It is the portal's own flag where one has been saved, and the default the installation configuration gives the application otherwise. | [optional] [example: true] |
| settings | AppDto_settings | [optional] |
Model AppDto.settings
The settings document saved for this portal, stored and returned verbatim - the portal never looks inside it, and only the application knows its shape. It is empty while the portal has saved none, which means the application falls back to its own defaults, and it also survives the application being switched off.
Model AppWrapper
The successful API response containing the AppDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | AppDto | The AppDto 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 AuditEventArrayWrapper
The successful API response containing the list of AuditEventDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of AuditEventDto 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 AuditEventDto
One entry of the portal audit trail: who changed what, from where, and where it belongs in the product.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The ID of the recorded entry. Nothing accepts it as an argument - no operation fetches a single audit event - so it serves only to tell two otherwise identical entries apart. | [optional] [example: 1] |
| date | ApiDateTime | When the action happened, in the portal time zone. The from and to filters are read as UTC instants, so the two do not line up on a portal that is not on UTC. | [optional] |
| user | String | The display name of the user who acted, taken from the account as it stands now rather than as it stood when the entry was written. A localised placeholder stands in when there is no account to read: a portal background job, an anonymous guest, or a user who has since been deleted. | [optional] [example: John Doe] [nullable] |
| userId | UUID (uuid) | The ID of the user who acted, which is what the userId filter of this operation matches on. It stays readable after the account is deleted, which is when user falls back to a placeholder. | [optional] [example: 00000000-0000-0000-0000-000000000001] |
| action | String | The whole event as a readable sentence in the portal language, with the names of the objects involved substituted into it. On the two audit/.../last operations each substituted value is cut to 50 characters; the filtered operations substitute them in full. It is empty when the build has no wording for the action. | [optional] [example: User logged in] [nullable] |
| actionId | MessageAction | The action itself, as the action filter of this operation spells it and as GET api/2.0/security/audit/mappers lists it under messageAction. Use this rather than parsing action, which is prose and changes with the portal language. | [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] |
| ip | String | The IP address the request came from, with the port stripped off. It is empty for an action a portal background job performed, which has no request behind it. | [optional] [example: 192.0.2.1] [nullable] |
| country | String | The English name of the country the IP address is located in, empty when the address cannot be located - the normal outcome for private and loopback addresses. | [optional] [example: United States] [nullable] |
| city | String | The city the IP address is located in, empty under the same conditions as country. | [optional] [example: New York] [nullable] |
| browser | String | The browser and its version as parsed from the user agent of the request, empty when the client sent none that could be parsed or when no request was involved. | [optional] [example: Chrome 120.0] [nullable] |
| platform | String | The operating system as parsed from the same user agent, empty under the same conditions as browser. | [optional] [example: Windows] [nullable] |
| page | String | Where in the portal the action was made from: the referrer of the request, or that request's own path when it carried no referrer. Long values are cut off at 512 characters. | [optional] [example: /rooms/shared] [nullable] |
| actionType | ActionType | The kind of change the action stands for, as the actionType filter of this operation spells it. It is derived from actionId, not stored per entry, so it is the same on every entry of one action. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] |
| product | ProductType | The product the action belongs to. It cannot be filtered on here; the tree that groups actions by product is GET api/2.0/security/audit/mappers. | [optional] [enum: 2, 3, 7, 8] |
| location | LocationType | The location inside that product, as the moduleType filter of this operation spells it. It is also derived from actionId rather than stored per entry. | [optional] [enum: 0, 1, 2, 3, 27, 29, 30, 31] |
| target | List | The objects the action was applied to, as the trail recorded them - a title, an account, an ID - one string each. It is empty for an action that targets nothing, such as a settings change, and the target filter of this operation matches one of these values in full. | [optional] [example: [item1, item2]] [nullable] |
| entries | List | The kinds of object the action applies to, holding at most two entries and none at all for an action that targets nothing. Only the first of them can be filtered on, through entryType. | [optional] [example: [File, Folder]] [nullable] |
| context | String | Where the action took place, spelled out in the portal language rather than as a code: for a Documents event the room or the root folder it happened in, and for anything else the name of the module. Nothing filters on it. | [optional] [example: Security settings updated] [nullable] |
Model AuditReportFormat
Possible values:
0(Xlsx)1(Csv)
Model AuditTrailActionMapperDto
One audit trail action, with the kind of change it stands for and the kind of object it applies to.
| Name | Type | Description | Notes |
|---|---|---|---|
| messageAction | String | The action name to send as the action filter of GET api/2.0/security/audit/events/filter, and the value that comes back as actionId on an event. | [optional] [example: FileCreated] [nullable] |
| actionType | String | The kind of change the action makes, accepted by the actionType filter of the same operation. | [optional] [example: Create] [nullable] |
| entity | String | The kind of object the action applies to, accepted by the entryType filter. It is None for an action that targets no object, such as a settings change, and an action with a second object type reports only the first one here. | [optional] [example: File] [nullable] |
Model AuditTrailModuleMapperDto
The audit trail actions of one module.
| Name | Type | Description | Notes |
|---|---|---|---|
| moduleType | String | The location inside the product, as the moduleType filter of GET api/2.0/security/audit/events/filter spells it. | [optional] [example: Files] [nullable] |
| actions | List | Every action this module can record. Each action appears under exactly one module, so this tree is where a caller learns which module a given action belongs to. | [optional] [nullable] |
Model AuditTrailProductMapperArrayWrapper
The successful API response containing the list of AuditTrailProductMapperDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of AuditTrailProductMapperDto 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 AuditTrailProductMapperDto
The audit trail actions of one product, grouped by module.
| Name | Type | Description | Notes |
|---|---|---|---|
| productType | String | The product this branch of the tree belongs to, as the productType filter of this operation spells it and as GET api/2.0/security/audit/types lists it under productTypes. | [optional] [example: Documents] [nullable] |
| modules | List | The locations inside the product. It is empty when moduleType was passed and this product has no module of that name, which is why a product can come back with nothing under it. | [optional] [nullable] |
Model AuditTrailTypesDto
The vocabularies the audit and login-history filters accept, one array of names per dimension of an event.
| Name | Type | Description | Notes |
|---|---|---|---|
| actions | List | Every action name the build can record, spelled as the action filter of GET api/2.0/security/audit/events/filter and GET api/2.0/security/audit/login/filter expects it. It is the whole vocabulary, not the actions this portal has recorded, and only a handful of the names are the sign-in actions the login filter accepts. | [optional] [example: [FileCreated]] [nullable] |
| actionTypes | List | The kinds of change an action can stand for, spelled as the actionType filter of GET api/2.0/security/audit/events/filter expects it. | [optional] [example: [Create]] [nullable] |
| productTypes | List | The products an action can belong to, spelled as the productType filter of GET api/2.0/security/audit/mappers expects it. The audit trail itself cannot be filtered by product. | [optional] [example: [Documents]] [nullable] |
| moduleTypes | List | The locations inside those products, spelled as the moduleType filter of GET api/2.0/security/audit/events/filter and GET api/2.0/security/audit/mappers expects it. | [optional] [example: [Files]] [nullable] |
| entryTypes | List | The kinds of object an action can be applied to, spelled as the entryType filter of GET api/2.0/security/audit/events/filter expects it. | [optional] [example: [File]] [nullable] |
Model AuditTrailTypesWrapper
The successful API response containing the AuditTrailTypesDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | AuditTrailTypesDto | The AuditTrailTypesDto 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 AuthKey
The authorization key parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| name | String | The authorization key name. | [required] [example: Auth-Key] [nullable] |
| value | String | The authorization key value. | [required] [example: abc123xyz456] [minLength: 0] [maxLength: 4000] [nullable] |
| title | String | The authorization key title. | [optional] [example: API key] [nullable] |
| type | String | The field type: text, password, select, toggle. | [optional] [nullable] |
| options | List | The list of options for select type fields. | [optional] [nullable] |
| dependsOn | String | The name of another key this field depends on for visibility. | [optional] [nullable] |
| dependsOnValue | String | The value of ASC.Web.Studio.UserControls.Management.AuthKey.DependsOn key that makes this field visible. | [optional] [nullable] |
Model AuthRequestsDto
The credentials a sign-in is attempted with: a portal password, a confirmation key, or a third-party account.
| Name | Type | Description | Notes |
|---|---|---|---|
| userName | String | The account signing in, given as its email address or its portal user name. It is required for a password sign-in and ignored when the credentials are a confirmation key or a third-party account. | [optional] [example: user@example.com] [nullable] |
| password | String | The password in the clear. Send either this or passwordHash, never both; hashing it in the client with the parameters from GET api/2.0/settings?withpassword=true and sending passwordHash instead keeps the plain password off the wire. | [optional] [example: SecurePassword123!] [nullable] |
| passwordHash | String | The password already hashed in the client. It has to be produced with the salt, iteration count and hash size that GET api/2.0/settings?withpassword=true publishes, or the portal cannot recognise it; a value sent here takes the place of password. | [optional] [example: 5f4dcc3b5aa765d61d8327deb882cf99] [nullable] |
| provider | String | The third-party identity provider the account is being signed in through, by its internal key such as google or linkedin. Sending it switches the call to a third-party sign-in, which needs accessToken or serializedProfile and is only allowed on a self-hosted installation or a tariff that includes third-party sign-in. | [optional] [example: google] [nullable] |
| accessToken | String | The access token the provider named in provider issued for the account, passed on unchanged for the portal to verify with that provider. The portal then matches the address it gets back against its own accounts, so a valid token for an address unknown here is answered as no such user. | [optional] [example: ya29.a0AfH6SMBx...] [nullable] |
| serializedProfile | String | The third-party profile already fetched and serialised by the caller, as an alternative to accessToken for a provider whose profile the client holds. It identifies the account by the address it carries. | [optional] [example: {"name":"John Doe","email":"john@example.com"}] [nullable] |
| codeOAuth | String | The OAuth authorization code obtained from the provider, for a flow that has not been exchanged for an access token yet. It is recorded with the sign-in rather than replacing accessToken. | [optional] [example: 4/0AY0e-g7...] [nullable] |
| session | Boolean | Whether the issued token is tied to the browser session. When it is, the answer carries no expires and the token dies with the session; otherwise it lives for the portal session lifetime. | [optional] [example: true] |
| confirmData | ConfirmData | The confirmation link data, as a third way to identify the account beside a password and a third-party account. Send it when the sign-in comes from a link the portal mailed, in which case userName and the password fields are not read. | [optional] |
| recaptchaType | RecaptchaType | Which CAPTCHA service the proof in recaptchaResponse came from. It has to match the service the installation is configured with, which GET api/2.0/settings publishes together with the site key. | [optional] [enum: 0, 1, 2, 3] |
| recaptchaResponse | String | The token the CAPTCHA widget produced in the browser, passed on unchanged for the portal to verify. It is only demanded once repeated failures have made the portal ask for a challenge, and it is single-use, so a retry needs a freshly solved one. | [optional] [example: 03AGdBq25...] [nullable] |
| culture | String | The language the sign-in messages and any letter that follows are written in, as a culture name such as en-US. A culture the installation does not have falls back to the portal language. | [optional] [example: en-US] [nullable] |
Model AuthServiceRequestsArrayWrapper
The successful API response containing the list of AuthServiceRequestsDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of AuthServiceRequestsDto 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 AuthServiceRequestsDto
One third-party authorization or storage provider and the keys the portal connects to it with.
| Name | Type | Description | Notes |
|---|---|---|---|
| name | String | The provider being configured, by its internal key such as google or box. Take it from the name of GET api/2.0/settings/authservice; it is the only field that selects the provider, and a key this installation does not know is refused the same way a provider that forbids changes is. | [optional] [example: google] [nullable] |
| title | String | The provider name as it is shown in the interface. It is filled in by the portal when the providers are listed and is ignored when keys are saved. | [optional] [example: Google] [nullable] |
| description | String | A sentence about what connecting the provider gives the portal, shown next to it in the interface. It is filled in by the portal and ignored when keys are saved. | [optional] [example: Google OAuth authentication] [nullable] |
| instruction | String | The steps an administrator has to take on the provider side to obtain the keys, shown in the interface. It is filled in by the portal and ignored when keys are saved. | [optional] [example: Configure your Google OAuth credentials] [nullable] |
| canSet | Boolean | Whether this provider accepts keys through the API at all. A provider whose keys are fixed by the installation reports false, and saving keys for it is refused; the field is reported by the portal and ignored on the way in. | [optional] [example: true] |
| paid | Boolean | Whether the provider is a paid option. A paid one can only be connected while the portal plan includes third-party storage or the installation is licensed as self-hosted; the field is reported by the portal and ignored on the way in. | [optional] [example: false] |
| props | List | The credentials the portal authenticates to the provider with, as the name and value pairs the provider defines. Send the whole set the provider expects: leaving every value empty disconnects it, and a set that fails the provider validation is cleared rather than stored half-applied. The listing operation reports the values last saved, and a provider that forbids changes reports none at all. | [optional] [example: [{name=key, value=value}]] [nullable] |
Model AuthWithCodeRequestsDto
The same credentials as an ordinary sign-in, plus the one-time code that completes it.
| Name | Type | Description | Notes |
|---|---|---|---|
| userName | String | The account signing in, given as its email address or its portal user name. It is required for a password sign-in and ignored when the credentials are a confirmation key or a third-party account. | [optional] |
| password | String | The password in the clear. Send either this or passwordHash, never both; hashing it in the client with the parameters from GET api/2.0/settings?withpassword=true and sending passwordHash instead keeps the plain password off the wire. | [optional] |
| passwordHash | String | The password already hashed in the client. It has to be produced with the salt, iteration count and hash size that GET api/2.0/settings?withpassword=true publishes, or the portal cannot recognise it; a value sent here takes the place of password. | [optional] |
| provider | String | The third-party identity provider the account is being signed in through, by its internal key such as google or linkedin. Sending it switches the call to a third-party sign-in, which needs accessToken or serializedProfile and is only allowed on a self-hosted installation or a tariff that includes third-party sign-in. | [optional] |
| accessToken | String | The access token the provider named in provider issued for the account, passed on unchanged for the portal to verify with that provider. The portal then matches the address it gets back against its own accounts, so a valid token for an address unknown here is answered as no such user. | [optional] |
| serializedProfile | String | The third-party profile already fetched and serialised by the caller, as an alternative to accessToken for a provider whose profile the client holds. It identifies the account by the address it carries. | [optional] |
| codeOAuth | String | The OAuth authorization code obtained from the provider, for a flow that has not been exchanged for an access token yet. It is recorded with the sign-in rather than replacing accessToken. | [optional] |
| session | Boolean | Whether the issued token is tied to the browser session. When it is, the answer carries no expires and the token dies with the session; otherwise it lives for the portal session lifetime. | [optional] |
| confirmData | ConfirmData | The confirmation link data, as a third way to identify the account beside a password and a third-party account. Send it when the sign-in comes from a link the portal mailed, in which case userName and the password fields are not read. | [optional] |
| recaptchaType | RecaptchaType | Which CAPTCHA service the proof in recaptchaResponse came from. It has to match the service the installation is configured with, which GET api/2.0/settings publishes together with the site key. | [optional] [enum: 0, 1, 2, 3] |
| recaptchaResponse | String | The token the CAPTCHA widget produced in the browser, passed on unchanged for the portal to verify. It is only demanded once repeated failures have made the portal ask for a challenge, and it is single-use, so a retry needs a freshly solved one. | [optional] |
| culture | String | The language the sign-in messages and any letter that follows are written in, as a culture name such as en-US. A culture the installation does not have falls back to the portal language. | [optional] |
| code | String | The one-time code from the SMS the portal sent or from the authenticator app, whichever second factor the portal has enabled for this user. It is single-use and expires; a wrong, empty or expired value fails the sign-in and counts against the brute-force limit. | [optional] [nullable] |
Model AuthenticationTokenDto
The outcome of a sign-in attempt: either the authentication token, or the second factor still to be passed.
| Name | Type | Description | Notes |
|---|---|---|---|
| token | String | The token to put in the Authorization header of later calls. It is empty whenever a second factor is still outstanding, which is what sms or tfa then says; the same token is also set as a portal cookie by the call that issued it, so a browser client does not have to carry it itself. | [optional] [example: abcde12345] [nullable] |
| expires | Date (date-time) | When the token stops being accepted. It stays at its zero value when session=true tied the token to the browser session instead of to a fixed moment. On the two operations that only send an SMS it carries a different meaning: there is no token, and this is the moment the code that was just sent expires. | [optional] [example: 2024-01-15T10:30:00Z] |
| sms | Boolean | Whether an SMS code is the second factor in play. Next to an empty token it means the code has to be sent to POST api/2.0/authentication/{code} before a token is issued; next to a filled token it means the code just accepted was an SMS one. | [optional] [example: true] |
| phoneNoise | String | The stored phone number with its middle digits masked, filled in only while sms is set and a number is already activated for the user. It is there to be shown to the person signing in, not to be sent back. | [optional] [example: +1***1234] [nullable] |
| tfa | Boolean | Whether an authenticator app is the second factor in play, with the same two readings as sms. | [optional] [example: true] |
| tfaKey | String | The secret to enrol in an authenticator app, in the manual-entry form. It is filled in only while tfa is set and the app has not been connected yet, which is the one moment the secret is handed out; once the app is connected it stays empty. GET api/2.0/settings/tfaapp/setup returns the same secret with a QR code. | [optional] [example: JBSWY3DPEHPK3PXP] [nullable] |
| confirmUrl | URI (uri) | The confirmation link the client has to open to get past the second factor. It points at phone activation while no number is activated, at authenticator-app activation while the app is not connected, and at the plain code prompt once either is in place. It is empty in an answer that already carries a token. | [optional] [example: https://example.com/confirm?token=abc123] [nullable] |
Model AuthenticationTokenWrapper
The successful API response containing the AuthenticationTokenDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | AuthenticationTokenDto | The AuthenticationTokenDto 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 Balance
Represents a balance with an account number and a list of sub-accounts.
| Name | Type | Description | Notes |
|---|---|---|---|
| accountNumber | Integer (int32) | The account number. | [optional] [example: 12345] |
| subAccountNumber | Integer (int32) | The sub-account number. | [optional] [example: 12345] |
| accountName | String | The account name. | [optional] [example: account name] [nullable] |
| accountCurrency | String | The account currency. | [optional] [example: "USD"] [nullable] |
| subAccounts | List | A list of sub-accounts. | [optional] [example: [{currency=USD, amount=1500.75}]] [nullable] |
| lastCredit | TransactionInfo | The most recent credit transaction applied to the account. | [optional] |
Model BalanceWrapper
The successful API response containing the Balance object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | Balance | The Balance 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 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 CapabilitiesDto
The sign-in methods this portal offers, as a login client needs them before anyone has signed in.
| Name | Type | Description | Notes |
|---|---|---|---|
| ldapEnabled | Boolean | Whether members may sign in with their directory credentials. It is false both when LDAP sign-in is switched off and when the pricing plan or the installation does not include it, and also when the settings could not be read at all - a false here means the method is not offered, never that it is unknown. | [required] [example: false] |
| ldapDomain | String | The directory domain members authenticate against, to be shown next to the login field. It is empty whenever ldapEnabled is false, and also while the portal has not completed a directory synchronisation. | [optional] [example: example.com] [nullable] |
| providers | List | The keys of the external identity providers to offer, ordered for the country the caller's IP address resolves to and reduced to those this installation has credentials for. Pass one of them as provider to POST api/2.0/authentication. An empty list means external sign-in is not on offer. | [required] [example: [google, facebook, microsoft]] [nullable] |
| ssoLabel | String | The caption for the single sign-on button in the portal language, empty whenever ssoUrl is. | [required] [example: Enterprise SSO] [nullable] |
| oauthEnabled | Boolean | Whether external identity providers may be used on this portal at all. While it is false, providers is empty because the list is not even assembled. | [required] [example: true] |
| ssoUrl | URI (uri) | The address to send the browser to for SAML single sign-on. It is empty when single sign-on is not on offer, which is the one thing to test - there is no separate flag for it. | [required] [example: https://sso.example.com/login] [nullable] |
| identityServerEnabled | Boolean | Whether the installation exposes its built-in identity server, which is what the portal's own OAuth applications authenticate against. It concerns third-party applications signing in to the portal, not portal members signing in to an external provider - that is providers. | [required] [example: false] |
Model CapabilitiesWrapper
The successful API response containing the CapabilitiesDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | CapabilitiesDto | The CapabilitiesDto 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 CdnStorageSettings
The CDN storage settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| module | String | The storage name. | [optional] [example: LocalStorage] [nullable] |
| props | Map | The storage properties. | [optional] [example: {region=eu-central-1, bucket=tenant-files}] |
| lastModified | Date (date-time) | The date and time when the storage settings were last modified. | [optional] [example: 2025-01-01T12:00:00Z] |
Model CdnStorageSettingsWrapper
The successful API response containing the CdnStorageSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | CdnStorageSettings | The CdnStorageSettings 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 ChangeWalletServiceStateRequestDto
Which wallet service is switched, and which way.
| Name | Type | Description | Notes |
|---|---|---|---|
| service | TenantWalletService | The service being switched, given by its catalogue name. Switching it on only makes it available to the portal; its units are still bought with PUT api/2.0/portal/payment/updatewallet. | [optional] [enum: -18, -16, -15, -14, -13, -12, -11] |
| enabled | Boolean | Which way the service is switched: true makes it available to the portal, false withdraws it. Setting the state the service already has changes nothing. | [optional] [example: true] |
Model CompanyWhiteLabelSettings
The company white label settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| companyName | String | The company name. | [optional] [example: ONLYOFFICE] [minLength: 0] [maxLength: 255] [nullable] |
| site | URI (uri) | The company site. | [optional] [example: https://www.onlyoffice.com] [minLength: 0] [maxLength: 255] [nullable] |
| String (email) | The company email address. | [optional] [example: support@onlyoffice.com] [minLength: 0] [maxLength: 255] [nullable] | |
| address | String | The company address. | [optional] [example: Lubanas st. 125a-25] [minLength: 0] [maxLength: 255] [nullable] |
| phone | String (tel) | The company phone number. | [optional] [example: +7 843 2271372] [minLength: 0] [maxLength: 255] [nullable] |
| IsLicensor | Boolean | Specifies if a company is a licensor or not. | [optional] [example: true] |
| hideAbout | Boolean | Specifies if the About page is visible or not | [optional] [example: false] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
Model CompanyWhiteLabelSettingsArrayWrapper
The successful API response containing the list of CompanyWhiteLabelSettings objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of CompanyWhiteLabelSettings 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 CompanyWhiteLabelSettingsDto
The vendor details the About page and the notification letters print, shared by the whole installation.
| Name | Type | Description | Notes |
|---|---|---|---|
| companyName | String | The vendor name the About page shows and the letters sign off with. Until details are saved it holds whatever the installation ships as its built-in vendor, and it is empty on an installation that ships none. | [required] [example: My Own Corporation] [nullable] |
| site | String | The address the vendor name links to, as an absolute URL with its scheme. Empty under the same conditions as companyName. | [required] [example: https://www.example.com] [nullable] |
| String (email) | The mailbox the About page offers for reaching the vendor. It is not the portal's own support address, and it is empty under the same conditions as companyName. | [required] [example: contact@example.com] [nullable] | |
| address | String | The postal address of the vendor as one free-form line, in the shape it was saved in - no structure is imposed on it. | [required] [example: 123 Business St, New York, NY 10001] [nullable] |
| phone | String | The telephone number of the vendor in the shape it was saved in, with no dialling format enforced. | [required] [example: +1-800-555-0123] [nullable] |
| isLicensor | Boolean | Whether these details are those of the licensor of the product itself rather than of a reseller. Saving through POST api/2.0/settings/rebranding/company always clears it, so only details that came with the installation can report true. | [required] [example: false] |
| hideAbout | Boolean | Whether the About page is hidden from the interface. A plan that does not include branding cannot switch it on: the value is stored as false in that case, so it can come back different from what was saved. | [required] [example: false] |
| isDefault | Boolean | Whether every field above still matches the installation's built-in vendor details. It turns false as soon as one of them is saved differently and true again after DELETE api/2.0/settings/rebranding/company. | [required] [example: true] |
Model CompanyWhiteLabelSettingsDtoWrapper
The successful API response containing the CompanyWhiteLabelSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | CompanyWhiteLabelSettingsDto | The CompanyWhiteLabelSettingsDto 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 CompanyWhiteLabelSettingsResponseWrapper
The successful API response containing the CompanyWhiteLabelSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | CompanyWhiteLabelSettings | The CompanyWhiteLabelSettings 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 CompanyWhiteLabelSettingsWrapper
The company white label settings wrapper.
| Name | Type | Description | Notes |
|---|---|---|---|
| settings | CompanyWhiteLabelSettings | The company white label settings. | [optional] |
Model ConfirmData
The confirmation link a sign-in is authorised with, in place of a password.
| Name | Type | Description | Notes |
|---|---|---|---|
| String (email) | The address the confirmation link was issued for. It has to be the same address the key was signed with, and a value that is not an email address fails the request with 400. | [optional] [example: user@example.com] [nullable] | |
| first | Boolean | Whether the link is being followed for the first time, taken from the first parameter of the confirmation URL. It is part of what the key was signed over, so passing a different value invalidates the key rather than changing behaviour. | [optional] [example: true] [nullable] |
| key | String | The key parameter of the confirmation URL, copied verbatim. It is bound to the address and to the moment it was issued, so it stops being accepted once the portal email key lifetime has passed. | [optional] [example: abc123def456] [nullable] |
Model ConfirmDto
Whether a confirmation link may still be used, and what it leads to when it invites into a room.
| Name | Type | Description | Notes |
|---|---|---|---|
| result | ValidationResult | The outcome of the check. Only Ok means the action behind the link may be carried out: Invalid and Expired fault the key itself, while UserExisted, UserExcluded, TariffLimit and QuotaFailed mean the key is sound but the invitation behind it cannot be accepted as it stands. | [required] [enum: 0, 1, 2, 3, 4, 5, 6] |
| roomId | String | The room the invitation leads into - a numeric folder ID for a room of the portal, a provider-specific string for a third-party one. It is empty for an invitation to the portal as a whole, for a room that has been removed or that the invited account may not see, and whenever result is neither Ok nor UserExisted. | [optional] [example: 1] [nullable] |
| title | String | The title of that room, present exactly when roomId is and meant to be shown on the confirmation page. | [optional] [example: Conference Room] [nullable] |
| String | The address the link was issued for, echoed back only when result is Ok so that a sign-up form can be prefilled with it. Every other outcome leaves it empty, UserExisted included. | [optional] [example: user@example.com] [nullable] | |
| isAgent | Boolean | Whether the room behind the link is an AI room rather than an ordinary one, which decides where the invited person is taken. It is false whenever roomId is empty. | [optional] [example: true] |
Model ConfirmType
Possible values:
EmpInvite— Emp inviteLinkInvite— Link invitePortalSuspend— Portal suspendPortalContinue— Portal continuePortalRemove— Portal removeDnsChange— Dns changePortalOwnerChange— Portal owner changeActivation— ActivationEmailChange— Email changeEmailActivation— Email activationPasswordChange— Password changeProfileRemove— Profile removePhoneActivation— Phone activationPhoneAuth— Phone authAuth— AuthTfaActivation— Tfa activationTfaAuth— Tfa authWizard— WizardGuestShareLink— Guest share link
Model ConfirmWrapper
The successful API response containing the ConfirmDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | ConfirmDto | The ConfirmDto 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 ConnectionTestResult
The outcome of a connection test against an external database.
| Name | Type | Description | Notes |
|---|---|---|---|
| success | Boolean | Specifies whether the connection to the database succeeded. | [optional] |
| error | String | The reason the connection failed, or null when it succeeded. | [optional] [nullable] |
Model ConnectionTestResultWrapper
The successful API response containing the ConnectionTestResult object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | ConnectionTestResult | The ConnectionTestResult 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 CookieSettingsDto
How long an authentication session of the portal stays valid, and whether that limit is applied.
| Name | Type | Description | Notes |
|---|---|---|---|
| lifeTime | Integer (int32) | How long, in minutes, a session issued from now on remains valid. It is 1440 on a portal that has never stored a limit, and that stored number is reported whether or not enabled puts it to use. | [required] [example: 1440] |
| enabled | Boolean | Whether the stored lifetime is applied at all. While it is false the number above is ignored and an issued session is honoured for a year. | [required] [example: true] |
Model CookieSettingsRequestsDto
How long an authentication session of the portal stays valid, and whether that limit is applied.
| Name | Type | Description | Notes |
|---|---|---|---|
| lifeTime | Integer (int32) | How long, in minutes, a session issued from now on remains valid. A value above 9999 is clamped to 9999 rather than refused, and 0 or less clears the number, which together with enabled leaves sessions that never expire on their own. Any positive value invalidates every session issued before this call, the caller's included, so the client has to keep the fresh cookie the response carries. | [optional] [example: 525600] |
| enabled | Boolean | Whether the stored lifetime is applied at all. While it is false the number is ignored and an issued session is honoured for a year; while it is true the connections behind expired sessions are dropped as well. | [optional] [example: true] |
Model CookieSettingsWrapper
The successful API response containing the CookieSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | CookieSettingsDto | The CookieSettingsDto 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 CreateWebhooksConfigRequestsDto
The target a webhook subscription calls, the events it listens for, and the secret it signs with.
| Name | Type | Description | Notes |
|---|---|---|---|
| name | String | The label the subscription is listed under. It is for the administrator reading the list and is never sent to the target; it does not have to be unique. | [required] [example: Production Webhook] [minLength: 0] [maxLength: 50] |
| uri | String | The address the portal posts the event payload to. It has to be an absolute http or https address outside the installation own network, and it is probed before anything is stored: it must answer a HEAD request with a success code, and a redirect does not count as one. | [required] [example: https://example.com/webhook] [minLength: 1] |
| secretKey | String | The shared secret the payload signature is computed with, so the receiver can tell a genuine call from a forged one. It has to satisfy the portal password rules published by GET api/2.0/settings/security/password, and it is never echoed back by any operation. On an update an empty value keeps the secret already stored. | [optional] [example: my-secret-key-123] [minLength: 0] [maxLength: 50] [nullable] |
| enabled | Boolean | Whether the subscription delivers at all. While it is off the matching events are dropped rather than queued, so nothing from that period arrives once it is switched on again. | [optional] [example: true] |
| ssl | Boolean | Whether the target certificate is verified. Setting it demands an https target with a valid certificate; leaving it off delivers without checking the certificate at all. | [optional] [example: true] |
| triggers | WebhookTrigger | The events the subscription listens for, as a bitmask combining the flags; 0 subscribes to all of them. Take the flags the caller role is allowed to use from GET api/2.0/settings/webhook/triggers, since a flag beyond that set is refused with 400. A subscription still only fires for events its creator may see. | [optional] [enum: 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824] |
| targetId | String | The single entity the subscription is narrowed to, by its identifier - a room or a file, for instance. Leaving it out delivers events about every entity the subscribed triggers cover. | [optional] [example: 00000000-0000-0000-0000-000000000001] [minLength: 0] [maxLength: 255] [nullable] |
Model CspDto
The Content Security Policy of the portal: the domains an administrator allowed, and the header built from them.
| Name | Type | Description | Notes |
|---|---|---|---|
| domains | List | The external hosts an administrator has allowed, each in the form it was saved in - a bare host, a host with a scheme, or a wildcard such as *.example.com. An empty list means nobody has added one, not that the portal serves no policy. | [required] [example: [https://example.com, https://cdn.example.com]] [nullable] |
| header | String | The complete policy value the portal sends to browsers, assembled from domains together with the portal's own sources and the integrations it has switched on. It is therefore wider than domains alone, and is filled in even while that list is empty. | [required] [example: default-src 'self'; script-src 'self' https://example.com] [nullable] |
Model CspRequestsDto
The external sources the portal Content Security Policy is to trust.
| Name | Type | Description | Notes |
|---|---|---|---|
| domains | List | The domains the policy trusts, as the complete list that is to hold afterwards rather than a list of additions: send the domains already trusted together with the new one to add one, leave one out to withdraw it, and send an empty list to fall back to the portal built-in policy. An entry may be a bare host, a host with a scheme, or a wildcard host such as *.example.com; it has to form a valid absolute address and may contain ASCII characters only. Every entry becomes an allowed source for scripts, styles, images, fonts, frames, media and connections at once - the directives cannot be set apart here. | [optional] [example: [example.com, trusted-site.com]] [nullable] |
Model CspWrapper
The successful API response containing the CspDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | CspDto | The CspDto 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 CultureSpecificExternalResource
The external resource parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| domain | String | The external resource domain. | [optional] [example: example.com] [nullable] |
| entries | Map | The external resource entries. | [optional] [example: {welcomeMessage=Welcome, logoutButton=Log out}] |
Model CultureSpecificExternalResources
The external resources settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| adminPanel | CultureSpecificExternalResource | The link to the administration panel. It is returned only to the full administrators of a licensed (Enterprise) server (standalone) portal. | [optional] |
| api | CultureSpecificExternalResource | The link to the product API. | [optional] |
| common | CultureSpecificExternalResource | The link to the common product information. | [optional] |
| forum | CultureSpecificExternalResource | The link to the forum. | [optional] |
| helpcenter | CultureSpecificExternalResource | The link to the Help Center. | [optional] |
| integrations | CultureSpecificExternalResource | The link to the product integrations. | [optional] |
| site | CultureSpecificExternalResource | The link to the product website. | [optional] |
| socialNetworks | CultureSpecificExternalResource | The link to the product social nerworks. | [optional] |
| support | CultureSpecificExternalResource | The link to the product support. | [optional] |
| videoguides | CultureSpecificExternalResource | The link to the video guides. | [optional] |
Model CurrenciesArrayWrapper
The successful API response containing the list of CurrenciesDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of CurrenciesDto 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 CurrenciesDto
One currency the portal's subscription prices can be quoted in, with the region it belongs to.
| Name | Type | Description | Notes |
|---|---|---|---|
| isoCountryCode | String | The two-letter ISO code of the country the currency is that of, which is the region the price list was picked for rather than the country of the caller. | [optional] [example: US] [nullable] |
| isoCurrencySymbol | String | The three-letter ISO 4217 code of the currency. On the first item of the answer it is the currency the amounts from GET api/2.0/portal/payment/prices are expressed in. | [optional] [example: USD] [nullable] |
| currencyNativeName | String | The currency name in the language of its own region - not in the portal language, and not a symbol. | [optional] [example: US Dollar] [nullable] |
Model CurrencyAmount
An amount of money together with its currency.
| Name | Type | Description | Notes |
|---|---|---|---|
| currency | String | The three-character ISO 4217 currency symbol. | [optional] |
| amount | Double (double) | The amount in the specified currency. | [optional] |
Model CurrencyCode
The currency an amount is expressed in.
| Name | Type | Description | Notes |
|---|---|---|---|
| currency | String | The three-character ISO 4217 currency symbol. | [optional] [example: "USD"] [nullable] |
Model CurrencyInfo
The currency the AI prices are quoted in.
| Name | Type | Description | Notes |
|---|---|---|---|
| code | String | The ISO 4217 code of the currency the prices are quoted in. | [required] [example: USD] [nullable] |
| symbol | String | The display symbol of the currency. | [required] [example: $] [nullable] |
Model CurrentLicenseInfo
The two facts about the subscription in force that a payment page needs.
| Name | Type | Description | Notes |
|---|---|---|---|
| trial | Boolean | Whether the portal is on a trial rather than a paid subscription. A trial expires at dueDate and is not extended by paying - a plan has to be bought instead. | [required] [example: false] |
| dueDate | Date (date-time) | The day the subscription runs out, with the time of day cut off. The largest value a date can hold means it never runs out, which is how a free or unlimited plan is expressed. | [required] [example: 2025-06-15T10:30:00.0000000Z] |
Model CustomColorThemesSettingsColorItem
The custom color theme color parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| accent | String | The accent color. | [optional] [example: #4781D1] [nullable] |
| buttons | String | The button color. | [optional] [example: #5299E0] [nullable] |
Model CustomColorThemesSettingsDto
The colour themes the portal offers, which of them is applied, and how many the plan allows.
| Name | Type | Description | Notes |
|---|---|---|---|
| themes | List | Every theme the portal can apply, ordered by ID, with the built-in ones first because they were created first. It is never empty - the built-in themes cannot be deleted - and a custom theme is one whose ID is higher than the built-in ones. | [optional] [example: [{id=1, name=Custom Theme}]] [nullable] |
| selected | Integer (int32) | The ID of the theme in themes that is currently applied to the whole portal. Deleting the applied theme moves it to the lowest remaining ID, so it can change without anyone having chosen a new one. | [optional] [example: 1] |
| limit | Integer (int32) | How many entries themes may hold in total, built-in ones included; 0 means the plan caps nothing. Once the cap is reached PUT api/2.0/settings/colortheme drops a new theme silently instead of failing, so compare this with the length of themes to tell whether a save took effect. | [optional] [example: 1] |
Model CustomColorThemesSettingsItem
The custom color theme settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The custom color theme ID. | [optional] [example: 1] |
| name | String | The custom color theme name. | [optional] [example: blue] [nullable] |
| main | CustomColorThemesSettingsColorItem | The custom color theme main colors. | [optional] |
| text | CustomColorThemesSettingsColorItem | The custom color theme text colors. | [optional] |
Model CustomColorThemesSettingsRequestsDto
The custom colour theme being saved, the theme being selected, or both.
| Name | Type | Description | Notes |
|---|---|---|---|
| theme | CustomColorThemesSettingsItem | The theme to store, with its accent and button colours for the interface and for the text on it. An id that matches a stored custom theme replaces it, an unknown id appends a new one, and an id belonging to a built-in theme is treated as a request for a new custom theme rather than overwriting the built-in one. Once the plan limit on custom themes is reached a new theme is silently not added, so compare the returned themes against limit instead of assuming it was saved. Leave it out to change only the selection. | [optional] |
| selected | Integer (int32) | The theme the whole portal switches to, by theme ID. An ID matching no stored theme is ignored rather than refused, and leaving it out keeps the selection as it is. | [optional] [example: 1] [nullable] |
Model CustomColorThemesSettingsWrapper
The successful API response containing the CustomColorThemesSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | CustomColorThemesSettingsDto | The CustomColorThemesSettingsDto 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 CustomerInfoDto
The billing customer behind the portal, and which portal member pays for it.
| Name | Type | Description | Notes |
|---|---|---|---|
| portalId | String | The portal's identifier in the billing system, which is what support and invoices refer to. It is not the portal alias. | [optional] [example: portal-001] [nullable] |
| paymentMethodStatus | PaymentMethodStatus | Whether a payment method is stored for the account and usable. Without one the portal can hold a wallet balance but cannot be charged automatically. | [optional] [enum: 0, 1, 2] |
| paymentMethodType | String | The customer's payment method type. | [optional] [example: card] [nullable] |
| isDelayedPaymentMethod | Boolean | Indicates whether the customer's payment method is delayed, i.e. the money reaches the wallet only after the transfer settles rather than immediately. | [optional] [example: false] |
| String | The address the billing account is registered to, lower-cased. It need not belong to a portal member, which is exactly when payer stays empty. | [optional] [example: user@example.com] [nullable] | |
| payer | EmployeeDto | The portal member whose account is behind the billing address. It is empty when email matches no member of this portal, and while it is empty every operation of this group that only the payer may call is out of reach for everybody. | [optional] |
Model CustomerInfoWrapper
The successful API response containing the CustomerInfoDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | CustomerInfoDto | The CustomerInfoDto 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 CustomerMonthlyUsageArrayWrapper
The successful API response containing the list of CustomerMonthlyUsageDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of CustomerMonthlyUsageDto 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 CustomerMonthlyUsageDto
What the portal spent from its wallet in one calendar month, added up across every service.
| Name | Type | Description | Notes |
|---|---|---|---|
| year | Integer (int32) | The year the month belongs to. Months are cut in the portal time zone, so a movement at the edge of a month falls where the portal sees it and not where UTC does. | [optional] [example: 2025] |
| month | Integer (int32) | The month itself, January being 1. Only months that had spending appear at all, so a gap in the list is a month with nothing in it rather than missing data. | [optional] [example: 1] |
| currency | String | The currency totalAmount is expressed in, as a three-letter ISO 4217 code - the accounting currency of the wallet. | [optional] [example: USD] [nullable] |
| totalAmount | Double (double) | What the month came to across every service, as a positive amount spent rather than a signed balance. | [optional] [example: 199.98] |
| operationCount | Integer (int32) | How many separate movements that total was added up from, for a client that wants to show the weight behind a figure. The movements themselves are in GET api/2.0/portal/payment/customer/operations. | [optional] [example: 3] |
Model CustomerMonthlyUsageReportRequestDto
The period covered by the monthly wallet spending report.
| Name | Type | Description | Notes |
|---|---|---|---|
| startDate | Date (date-time) | The beginning of the reported period, inclusive. The months are cut in the portal time zone rather than in UTC, so spending at the turn of a month falls where the portal sees it; defaults to the portal creation date. | [optional] [example: 2025-01-01T00:00:00Z] [nullable] |
| endDate | Date (date-time) | The end of the reported period, inclusive. Cut in the portal time zone in the same way as startDate, and defaults to the moment the call is made. | [optional] [example: 2025-12-31T23:59:59Z] [nullable] |
Model CustomerOperationsReportRequestDto
The filters that select which wallet movements are reported: the services, the period, the participant, the direction and the outcome of the movement, and the ordering.
| Name | Type | Description | Notes |
|---|---|---|---|
| serviceName | List | The wallet services whose movements are kept, named the way the billing catalogue names them - backup, ai-tools, ai-search, disk-storage, docscloud. Take the values from the serviceName field of GET api/2.0/portal/payment/walletservices; the match ignores case, a name this installation does not sell fails the call with 404, and an omitted list keeps every service. A bare string is accepted in place of an array for backward compatibility. | [optional] [example: [backup]] [nullable] |
| startDate | Date (date-time) | The beginning of the reported period, inclusive. Read in the portal time zone rather than in UTC, so a movement at the edge of the period falls where the portal sees it; defaults to the portal creation date. | [optional] [example: 2024-01-01T00:00:00Z] [nullable] |
| endDate | Date (date-time) | The end of the reported period, inclusive. Read in the portal time zone rather than in UTC, and defaults to the moment the call is made. | [optional] [example: 2024-01-31T23:59:59Z] [nullable] |
| participantName | String | The participant whose movements are kept - the account the accounting service records as the cause of a movement. A movement caused by a portal user carries that user ID here, and one caused by the portal itself carries the customer name; surrounding whitespace is trimmed, and an omitted value keeps every participant. | [optional] [example: My Own Corporation] [nullable] |
| credit | Boolean | Whether movements that add money to the wallet - top-ups, refunds and corrections in the portal's favour - are kept. Both directions are reported when neither this nor debit is given. | [optional] [example: true] [nullable] |
| debit | Boolean | Whether movements that take money out of the wallet - the charges of the wallet services - are kept. Both directions are reported when neither this nor credit is given. | [optional] [example: false] [nullable] |
| type | OperationType | The kind of movement to keep, which says what caused the money to move rather than how it ended. Every kind is reported when it is omitted. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] |
| status | OperationStatus | The outcome to keep. A movement that is still being settled is reported as pending and may change later, while the other outcomes are final; every outcome is reported when this is omitted. | [optional] [enum: 0, 1, 2, 3] |
| orderBy | String | The name of the field the movements are sorted by, spelled as the accounting service names it, such as StartDate or ServiceName. Surrounding whitespace is trimmed, and the accounting service applies its own ordering when this is omitted. | [optional] [example: StartDate] [nullable] |
| orderType | OperationOrderType | The direction the field named in orderBy is sorted in. Newest or largest first is what the accounting service does by default, so leaving this out sorts the same way as asking for descending explicitly. | [optional] [enum: 0, 1] |
Model CustomerServiceUsageDto
What one wallet service was consumed and cost over the requested period, added up rather than listed.
| Name | Type | Description | Notes |
|---|---|---|---|
| service | String | The stable key of the service, which is what the serviceName filter of this operation matches on and what GET api/2.0/portal/payment/walletservice looks a service up by. | [optional] [example: disk-storage] [nullable] |
| title | String | The service name in the portal language, for printing rather than matching. | [optional] [example: Additional disk storage] [nullable] |
| serviceUnit | String | What totalQuantity counts, in the portal language. AI consumption is reported in tokens here rather than in the AI credits the service is sold in, so it does not line up with the price list. | [optional] [example: GB] [nullable] |
| currency | String | The currency totalAmount and price are expressed in, as a three-letter ISO 4217 code. | [optional] [example: USD] [nullable] |
| totalQuantity | Integer (int32) | How many units of the service were consumed over the period, in the unit named by serviceUnit. | [optional] [example: 100] |
| totalAmount | Double (double) | What that consumption cost over the period. It is what was actually charged, so it can differ from price times totalQuantity when the price changed inside the period. | [optional] [example: 49.99] |
| operationCount | Integer (int32) | How many separate charges the total was added up from. The charges themselves are in GET api/2.0/portal/payment/customer/operations. | [optional] [example: 2] |
| price | Double (double) | What one unit of the service costs today, not what it cost during the period. It is 0 when the service is no longer on the installation's price list. | [optional] [example: 0.14] |
| subscription | Boolean | Whether the service is billed as a standing subscription rather than per unit consumed. It is derived from today's price list, so it describes the service as it is sold now. | [optional] [example: true] |
Model CustomerServiceUsageReportDto
One page of the per-service consumption totals, with the paging figures needed to walk the rest.
| Name | Type | Description | Notes |
|---|---|---|---|
| collection | List | The services on this page, one entry per service rather than per charge. It is empty for a period in which nothing was consumed as well as for a page past the end of the report. | [optional] [example: [{service=backup, totalAmount=49.99}]] [nullable] |
| offset | Integer (int32) | How many entries were skipped before this page, echoed from the request. | [optional] [example: 0] |
| limit | Integer (int32) | How many entries one page may hold, echoed from the request; it is 25 unless another value was asked for. | [optional] [example: 25] |
| totalQuantity | Long (int64) | How many services match the filters in total, across every page - services, not charges. | [optional] [example: 1] |
| totalPage | Integer (int32) | How many pages those entries come to at the current limit. | [optional] [example: 1] |
| currentPage | Integer (int32) | Which of those pages this one is, as the billing service numbers them. Page through by advancing offset rather than this value, which nothing accepts as an argument. | [optional] [example: 1] |
Model CustomerServiceUsageReportRequestDto
The filters that select which wallet service consumption is reported: the services, the period, the participant, the outcome, the usage metadata and the ordering.
| Name | Type | Description | Notes |
|---|---|---|---|
| serviceName | List | The wallet services whose consumption is reported, named the way the billing catalogue names them - backup, ai-tools, ai-search, disk-storage, docscloud. Take the values from the serviceName field of GET api/2.0/portal/payment/walletservices; the match ignores case, a name this installation does not sell fails the call with 404, and an omitted list reports every service. A bare string is accepted in place of an array for backward compatibility. | [optional] [example: [backup]] [nullable] |
| startDate | Date (date-time) | The beginning of the reported period, inclusive. Read in the portal time zone rather than in UTC, and defaults to the portal creation date. | [optional] [example: 2024-01-01T00:00:00Z] [nullable] |
| endDate | Date (date-time) | The end of the reported period, inclusive. Read in the portal time zone rather than in UTC, and defaults to the moment the call is made. | [optional] [example: 2024-01-31T23:59:59Z] [nullable] |
| participantName | String | The participant whose consumption is reported - the account the accounting service records as the consumer. Consumption caused by a portal user carries that user ID here; surrounding whitespace is trimmed, and an omitted value reports every participant. | [optional] [example: My Own Corporation] [nullable] |
| status | OperationStatus | The outcome to keep. Consumption that is still being settled is reported as pending and may change later, while the other outcomes are final; every outcome is reported when this is omitted. | [optional] [enum: 0, 1, 2, 3] |
| metadata | Map | The usage annotations a wallet service records alongside its consumption, as the key and value pairs that must all match for a record to be reported. The keys are chosen by the service that writes them, so read them off the metadata of the records returned by GET api/2.0/portal/payment/customer/usage rather than guessing; an omitted map reports every record. | [optional] [example: {key1=value1, key2=value2}] |
| orderBy | String | The name of the field the per-service totals are sorted by, spelled as the accounting service names it, such as ServiceName or StartDate. Surrounding whitespace is trimmed, and the accounting service applies its own ordering when this is omitted. | [optional] [example: ServiceName] [nullable] |
| orderType | OperationOrderType | The direction the field named in orderBy is sorted in. Newest or largest first is what the accounting service does by default, so leaving this out sorts the same way as asking for descending explicitly. | [optional] [enum: 0, 1] |
Model CustomerServiceUsageReportWrapper
The successful API response containing the CustomerServiceUsageReportDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | CustomerServiceUsageReportDto | The CustomerServiceUsageReportDto 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 DbTenant
The database tenant parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The tenant ID. | [optional] [example: 1] |
| name | String | The tenant name. | [optional] [example: Tenant] [maxLength: 255] [nullable] |
| alias | String | The tenant alias. | [optional] [example: tenant] [maxLength: 100] [nullable] |
| mappedDomain | String | Mapped domain | [optional] [example: tenant.example.com] [maxLength: 100] [nullable] |
| version | Integer (int32) | The tenant version. | [optional] [example: 5] |
| version_Changed | Date (date-time) | The Version_changed field. | [optional] [example: 2025-01-01T10:00:00Z] [nullable] |
| versionChanged | Date (date-time) | The date and time when the version was changed. | [optional] [example: 2025-01-01T10:00:00Z] |
| language | String | The tenant language. | [optional] [example: en-US] [maxLength: 10] [nullable] |
| timeZone | String | The tenant time zone. | [optional] [example: UTC] [maxLength: 50] [nullable] |
| trustedDomainsRaw | String | The tenant trusted domains raw. | [optional] [example: tenant.exapmle.com, example.com] [maxLength: 1024] [nullable] |
| trustedDomainsEnabled | TenantTrustedDomainsType | The type of the tenant trusted domains. | [optional] [enum: 0, 1, 2] |
| status | TenantStatus | The tenant status. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6] |
| statusChanged | Date (date-time) | The date and time when the tenant status was changed. | [optional] [example: 2025-01-01T12:00:00Z] [nullable] |
| statusChangedHack | Date (date-time) | The hacked date and time when the tenant status was changed. | [optional] [example: 2025-01-01T12:00:00Z] |
| creationDateTime | Date (date-time) | The tenant creation date. | [optional] [example: 2025-01-01T12:00:00Z] |
| ownerId | UUID (uuid) | The tenant owner ID. | [optional] [example: 00000000-0000-0000-0000-000000000000] [nullable] |
| paymentId | String | The tenant payment ID. | [optional] [example: pay_1234567890] [maxLength: 38] [nullable] |
| industry | TenantIndustry | The tenant industry. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] |
| lastModified | Date (date-time) | The date and time when the tenant was last modified. | [optional] [example: 2025-02-01T08:30:00Z] |
| calls | Boolean | Specifies if the calls are available for the current tenant or not. | [optional] [example: true] |
| partner | DbTenantPartner | The database tenant partner parameters. | [optional] |
Model DbTenantPartner
The database tenant partner parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| tenantId | Integer (int32) | The tenant ID. | [optional] [example: 1] |
| partnerId | String | The partner ID. | [optional] [example: partner_123] [maxLength: 36] [nullable] |
| affiliateId | String | The affiliate ID. | [optional] [example: artifact_123] [maxLength: 50] [nullable] |
| campaign | String | The tenant partner campaign. | [optional] [example: campaigh] [maxLength: 50] [nullable] |
Model DeepLinkConfigurationRequestsDto
How the portal opens its links on a mobile device.
| Name | Type | Description | Notes |
|---|---|---|---|
| deepLinkSettings | TenantDeepLinkSettings | The deep link configuration to store. Only its handlingMode is read - whether a link always opens in the browser, always in the native application, or asks the user each time - and a mode outside the defined set is refused with 400 before anything is stored. | [optional] |
Model DeepLinkDto
What a mobile client needs to hand a portal link to the installed application instead of the browser.
| Name | Type | Description | Notes |
|---|---|---|---|
| androidPackageName | String | The package name to look for on Android, and to build a store link from when the application is missing. All three fields are empty strings on an installation that ships no mobile application, which is the signal to keep opening links in the browser. | [required] [example: com.example.docspace] [nullable] |
| url | String | The address the client redirects a portal link through so that the application can claim it. It is the installation's own deep-link host, not a link to any particular document. | [required] [example: https://example.com/deeplink] [nullable] |
| iosPackageId | String | The bundle identifier to look for on iOS, used the same way as androidPackageName. | [required] [example: com.example.docspace] [nullable] |
Model DeepLinkHandlingMode
Possible values:
0— Provide choice (ProvideChoice)1— Web (Web)2— App (App)
Model DefaultProductRequestDto
The section the calling user's account opens into after signing in.
| Name | Type | Description | Notes |
|---|---|---|---|
| defaultFolderType | FolderType | The section to land on. Only the folder types the client offers as a landing page are accepted - the rooms list, My documents, shared with me, favorites, recent, forms and the AI agents folder - and anything else is refused. My documents is refused for a guest as well, since a guest has no personal storage. | [required] [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] |
Model DiscountCategory
Represents a discount category applied to the price.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The discount category unique identifier. | [optional] [example: 12345] |
| valueDiscount | Double (double) | The discount value. | [optional] [example: 10.5] |
| description | String | The discount category description. | [optional] [example: Annual subscription discount] [nullable] |
| created | Date (date-time) | The date and time when the discount category was created. | [optional] [example: 2024-01-15T10:30:00Z] |
Model DistributedTaskStatus
Possible values:
0— Created (Created)1— Running (Running)2— Completed (Completed)3— Canceled (Canceled)4— Failted (Failted)
Model DnsSettingsRequestsDto
The custom domain the portal answers on, and whether that mapping is in force.
| Name | Type | Description | Notes |
|---|---|---|---|
| dnsName | String | The domain the portal is to be reachable under, as a bare hostname without a scheme. It must not collide with the reserved base domain of the installation, and a name that fails validation is refused without disturbing the mapping in force. It is read only while enable is true. | [optional] [example: example.com] [nullable] |
| enable | Boolean | Whether the custom domain is put in force. Setting it false clears the mapping and ignores dnsName; setting it true also stops the previous domain from answering and rewrites any Content Security Policy entry that named it. | [optional] [example: true] |
Model DocsCloudConfig
Represents the configuration of a Docs Connect tenant.
| Name | Type | Description | Notes |
|---|---|---|---|
| tenantName | String | The tenant name. | [optional] [example: My Portal] [minLength: 0] [maxLength: 255] [nullable] |
| security | DocsCloudSecurityConfig | The security configuration. | [optional] |
| server | DocsCloudServerConfig | The server configuration. | [optional] |
| wopi | DocsCloudWopiConfig | The WOPI configuration. | [optional] |
| ipFilter | DocsCloudIpFilterConfig | The IP filter configuration. | [optional] |
Model DocsCloudConfigWrapper
The successful API response containing the DocsCloudConfig object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | DocsCloudConfig | The DocsCloudConfig 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 DocsCloudDevPackRequestDto
The request parameters for switching the Docs Connect subscription to Docs Connect Dev Pack, or for calculating the cost of that switch.
| Name | Type | Description | Notes |
|---|---|---|---|
| quantity | Integer (int32) | The number of users to subscribe to Docs Connect Dev Pack for. It must be at least the number of users of the currently purchased Docs Connect subscription, and at least the Docs Connect Dev Pack minimum configured for the installation, which is 10 users by default; a smaller value is rejected with 400. | [optional] [example: 10] [min: 1] [max: 2147483647] |
Model DocsCloudIpFilterConfig
Represents the IP filter configuration of a Docs Connect tenant.
| Name | Type | Description | Notes |
|---|---|---|---|
| rules | List | The IP filter rules. | [optional] [example: [{address=127.0.0.1, allowed=true}]] [nullable] |
Model DocsCloudIpFilterRule
Represents the IP filter rule of a Docs Connect tenant.
| Name | Type | Description | Notes |
|---|---|---|---|
| address | String | The IP address. | [optional] [example: 127.0.0.1] [minLength: 0] [maxLength: 255] [nullable] |
| allowed | Boolean | Whether the IP address is allowed. | [optional] [example: true] |
Model DocsCloudLicenseInfo
Represents the license information of a Docs Connect tenant.
| Name | Type | Description | Notes |
|---|---|---|---|
| valid | Date (date-time) | The date and time until which the license is valid. | [optional] [example: 2024-01-15T10:30:00Z] |
| trial | Boolean | Whether the license is a trial. | [optional] [example: false] |
| buildDate | Date (date-time) | The license build date. | [optional] [example: 2024-01-15T10:30:00Z] |
Model DocsCloudPayment
Represents the payment information of a Docs Connect tenant.
| Name | Type | Description | Notes |
|---|---|---|---|
| cartId | String | The cart ID. | [optional] [example: CartId] [nullable] |
| productId | Integer (int32) | The product ID. | [optional] [example: 12345] |
| status | Integer (int32) | The payment status. | [optional] [example: 1] |
| intervalUnit | Integer (int32) | The interval unit. | [optional] [example: 1] |
| isYear | Boolean | Whether the payment interval is yearly. | [optional] [example: false] |
| isPrepaid | Boolean | Whether the payment is prepaid. | [optional] [example: false] |
| quantity | Integer (int32) | The quantity. | [optional] [example: 10] |
| currency | String | The three-character ISO 4217 currency symbol of the payment. | [optional] [example: USD] [nullable] |
Model DocsCloudQuota
Represents the current user quota of a Docs Connect tenant.
| Name | Type | Description | Notes |
|---|---|---|---|
| users | List | The editor users. | [optional] [example: [{userid=00000000-0000-0000-0000-000000000000, expire=2024-01-15T10:30:00Z}]] [nullable] |
| usersView | List | The viewer users. | [optional] [example: [{userid=00000000-0000-0000-0000-000000000000, expire=2024-01-15T10:30:00Z}]] [nullable] |
Model DocsCloudQuotaUser
Represents a single user entry of a Docs Connect quota.
| Name | Type | Description | Notes |
|---|---|---|---|
| userId | String | The user ID. | [optional] [example: 00000000-0000-0000-0000-000000000000] [nullable] |
| expire | String | The expiration date of the user. | [optional] [example: 2024-01-15T10:30:00Z] [nullable] |
Model DocsCloudQuotaWrapper
The successful API response containing the DocsCloudQuota object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | DocsCloudQuota | The DocsCloudQuota 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 DocsCloudSecurityConfig
Represents the security configuration of a Docs Connect tenant.
| Name | Type | Description | Notes |
|---|---|---|---|
| secret | String | The security secret. | [optional] [example: abc123] [minLength: 0] [maxLength: 255] [nullable] |
| header | String | The security header name. | [optional] [example: Authorization] [minLength: 0] [maxLength: 255] [nullable] |
Model DocsCloudServerConfig
Represents the server configuration of a Docs Connect tenant.
| Name | Type | Description | Notes |
|---|---|---|---|
| isAnonymousSupport | Boolean | Whether anonymous access is supported. | [optional] [example: false] |
| fileSizeLimit | Long (int64) | The maximum file size in bytes. | [optional] [example: 104857600] [min: 0] [max: 209715200] |
Model DocsCloudServerInfo
Represents the Docs Connect server information.
| Name | Type | Description | Notes |
|---|---|---|---|
| version | String | The server version. | [optional] [example: 8.0.0] [nullable] |
| packageType | String | The server package type (Open Source, Enterprise Edition or Developer Edition). | [optional] [example: Enterprise Edition] [nullable] |
| date | Date (date-time) | The server build date. | [optional] [example: 2024-01-15T10:30:00Z] |
Model DocsCloudStats
Represents the usage statistics of a Docs Connect tenant for the current period.
| Name | Type | Description | Notes |
|---|---|---|---|
| periodDay | Integer (int32) | The length of the statistics period in days. | [optional] [example: 30] |
| editor | DocsCloudUserStats | The statistics for editor users. | [optional] |
| viewer | DocsCloudUserStats | The statistics for viewer users. | [optional] |
Model DocsCloudTenant
Represents a Docs Connect tenant of a portal.
| Name | Type | Description | Notes |
|---|---|---|---|
| dedicatedResourceExId | Integer (int32) | The external ID of the dedicated resource the tenant is hosted on. | [optional] [example: 12345] |
| alias | String | The tenant alias. | [optional] [example: my-portal] [nullable] |
| name | String | The tenant name. | [optional] [example: My Portal] [nullable] |
| modifiedDate | Date (date-time) | The date and time when the tenant was last modified. | [optional] [example: 2024-01-15T10:30:00Z] |
| customerId | String | The customer ID. | [optional] [example: CustomerId] [nullable] |
| customerName | String | The customer name. | [optional] [example: CustomerName] [nullable] |
| endDate | Date (date-time) | The date and time when the tenant subscription ends. | [optional] [example: 2024-01-15T10:30:00Z] |
| resourceType | Integer (int32) | The resource type. | [optional] [example: 1] |
| isActive | Boolean | Whether the tenant is active (the end date is in the future). | [optional] [example: false] |
| address | String | The tenant address. | [optional] [example: https://my-portal.onlyoffice.com] [nullable] |
| payment | DocsCloudPayment | The tenant payment information. | [optional] |
Model DocsCloudTenantInfo
Represents the license and server information of a Docs Connect tenant, with usage statistics for the current period.
| Name | Type | Description | Notes |
|---|---|---|---|
| license | DocsCloudLicenseInfo | The license information. | [optional] |
| server | DocsCloudServerInfo | The Docs Connect server information. | [optional] |
| usersLimit | DocsCloudUsersLimit | The user limits of the license. | [optional] |
| stats | DocsCloudStats | The usage statistics for the current period. | [optional] |
Model DocsCloudTenantInfoWrapper
The successful API response containing the DocsCloudTenantInfo object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | DocsCloudTenantInfo | The DocsCloudTenantInfo 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 DocsCloudTenantWrapper
The successful API response containing the DocsCloudTenant object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | DocsCloudTenant | The DocsCloudTenant 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 DocsCloudUsage
Represents the usage statistics of a Docs Connect tenant.
| Name | Type | Description | Notes |
|---|---|---|---|
| since | Date (date-time) | The date and time the usage statistics are counted from. | [optional] [example: 2024-01-15T10:30:00Z] |
| activeCount | Integer (int32) | The number of active users. | [optional] [example: 10] |
Model DocsCloudUsageWrapper
The successful API response containing the DocsCloudUsage object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | DocsCloudUsage | The DocsCloudUsage 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 DocsCloudUserStats
Represents the usage statistics of a single Docs Connect user category (editor or viewer).
| Name | Type | Description | Notes |
|---|---|---|---|
| active | Integer (int32) | The number of active users. | [optional] [example: 10] |
| internal | Integer (int32) | The number of internal users. | [optional] [example: 8] |
| external | Integer (int32) | The number of external users. | [optional] [example: 2] |
| remaining | Integer (int32) | The number of remaining users before the limit is reached. | [optional] [example: 90] |
| criticalRemaining | Boolean | Whether the number of remaining users is critically low. | [optional] [example: false] |
Model DocsCloudUsersLimit
Represents the user limits of a Docs Connect license.
| Name | Type | Description | Notes |
|---|---|---|---|
| edit | Integer (int32) | The maximum number of users who can edit documents. | [optional] [example: 100] |
| view | Integer (int32) | The maximum number of users who can view documents. | [optional] [example: 100] |
Model DocsCloudWopiConfig
Represents the WOPI configuration of a Docs Connect tenant.
| Name | Type | Description | Notes |
|---|---|---|---|
| enable | Boolean | Whether WOPI is enabled. | [optional] [example: false] |
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 DoubleNullableWrapper
The successful API response containing the double value.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | BigDecimal | The double value returned by the operation. | [optional] [nullable] |
| 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 DoubleWrapper
The successful API response containing the double value.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | BigDecimal | The double 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 EmailActivationSettings
The email activation settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| show | Boolean | Specifies whether the email activation settings are shown or hidden. | [optional] [example: true] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
Model EmailActivationSettingsWrapper
The successful API response containing the EmailActivationSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | EmailActivationSettings | The EmailActivationSettings 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 EmailValidationKeyModel
The confirmation email parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| key | String | The email validation key. | [optional] [example: abcdef123456] [nullable] |
| emplType | EmployeeType | The user type. | [optional] [enum: All, RoomAdmin, Guest, DocSpaceAdmin, User] |
| String (email) | The email address. | [optional] [example: user@example.com] [nullable] | |
| encEmail | String | The encrypted email address. | [optional] [example: user%40example.com] [nullable] |
| uiD | UUID (uuid) | The user ID. | [optional] [example: 00000000-0000-0000-0000-000000000000] [nullable] |
| type | ConfirmType | The confirmation email type. | [optional] [enum: EmpInvite, LinkInvite, PortalSuspend, PortalContinue, PortalRemove, DnsChange, PortalOwnerChange, Activation, EmailChange, EmailActivation, PasswordChange, ProfileRemove, PhoneActivation, PhoneAuth, Auth, TfaActivation, TfaAuth, Wizard, GuestShareLink] |
| first | String | Specifies whether it is the first time account access or not. | [optional] [example: false] [nullable] |
| roomId | String | The room ID. | [optional] [example: 1] [nullable] |
Model EmployeeActivationStatus
Possible values:
0— Not activated (NotActivated)1— Activated (Activated)2— Pending (Pending)4— Auto generated (AutoGenerated)
Model EmployeeArrayWrapper
The successful API response containing the list of EmployeeDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of EmployeeDto 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 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 EmployeeStatus
Possible values:
1— Active (Active)2— Terminated (Terminated)4— Pending (Pending)5— Default (Default)7— All (All)
Model EmployeeType
Possible values:
All— AllRoomAdmin— Room adminGuest— GuestDocSpaceAdmin— DocSpace adminUser— User
Model EnabledModuleArrayWrapper
The successful API response containing the list of EnabledModuleDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of EnabledModuleDto 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 EnabledModuleDto
One portal module the calling user may open.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The module's product class name, HTML-escaped. It is a display-oriented identifier and not the GUID the access-settings operations work with, so it must not be passed to GET api/2.0/settings/security/{id}. | [optional] [example: ASC.Web.Files.Configuration.FilesSpaceUsageStatManager] [nullable] |
| title | String | The module name in the portal language, HTML-escaped and ready to be rendered as text. | [optional] [example: Documents] [nullable] |
Model EncryprtionStatus
Possible values:
0— Decrypted (Decrypted)1— Encryption started (EncryptionStarted)2— Encrypted (Encrypted)3— Decryption started (DecryptionStarted)
Model EncryptionSettings
The encryption settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| password | String | The encryption password. | [optional] [example: password] [nullable] |
| status | EncryprtionStatus | The encryption status. | [optional] [enum: 0, 1, 2, 3] |
| notifyUsers | Boolean | Specifies if the users will be notified about the encryption operation or not. | [optional] [example: true] |
Model EncryptionSettingsWrapper
The successful API response containing the EncryptionSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | EncryptionSettings | The EncryptionSettings 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 EntryType
Possible values:
0— None (None)1— File (File)2— Folder (Folder)23— User (User)24— Group (Group)25— Room (Room)26— Tag (Tag)27— Agent (Agent)
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 ExternalDatabaseSettings
The connection parameters of an external database.
| Name | Type | Description | Notes |
|---|---|---|---|
| databaseType | String | The engine of the external database. | [optional] [example: mysql] [nullable] |
| databaseTypeEnum | ExternalDatabaseType | The engine of an external database. | [optional] [enum: 0, 1] |
| dbHost | String | The host name or the IP address of the database server. | [optional] [example: localhost] [nullable] |
| dbPort | Integer (int32) | The port the database server listens on. | [optional] [example: 3306] |
| dbName | String | The name of the database to connect to. | [optional] [example: docspace] [nullable] |
| dbUser | String | The user name to connect with. | [optional] [example: root] [nullable] |
| dbPassword | String | The password to connect with. | [optional] [example: my-secret-password] [nullable] |
| dbSsl | Boolean | Specifies whether the connection to the database is secured with SSL. | [optional] [example: false] |
| sqliteFilePath | String | The path to the database file, used by the SQLite engine only. | [optional] [example: /var/lib/docspace/external.db] [nullable] |
Model ExternalDatabaseType
Possible values:
0(MySql)1(Sqlite)
Model FeatureUsedDto
How much of one quota feature the portal has already consumed.
| Name | Type | Description | Notes |
|---|---|---|---|
| value | oas_any_type_not_mapped | [required] [nullable] | |
| title | String | The same figure as a sentence in the portal language, ready to print. It is empty when this build ships no wording for the feature. | [optional] [example: 50 GB used] [nullable] |
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 FinishDto
Whether the finished import mails the imported people their activation links before it is cleared away.
| Name | Type | Description | Notes |
|---|---|---|---|
| isSendWelcomeEmail | Boolean | Whether every imported account that has not been activated yet is mailed its activation link. Setting it requires the finished job to still be in the queue, so the import must not have been cleared first; the letters go out again on each call, and already active accounts are skipped either way. Setting it false ends the import quietly and leaves inviting those people for later. | [required] [example: true] |
Model FireBaseUser
The Firebase user parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The Firebase user ID. | [optional] [example: 1] |
| userId | UUID (uuid) | The user ID. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| tenantId | Integer (int32) | The tenant ID. | [optional] [example: 1] |
| firebaseDeviceToken | String | The Firebase device token. | [optional] [example: token123] [maxLength: 255] [nullable] |
| application | String | The Firebase application. | [optional] [example: web] [maxLength: 20] [nullable] |
| isSubscribed | Boolean | Specifies if the user is subscribed to the push notifications or not. | [optional] [example: true] [nullable] |
| tenant | DbTenant | The database tenant parameters. | [optional] |
Model FireBaseUserWrapper
The successful API response containing the FireBaseUser object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | FireBaseUser | The FireBaseUser 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 FirebaseDto
The Firebase project a client initialises its SDK with to receive push notifications from this portal.
| Name | Type | Description | Notes |
|---|---|---|---|
| apiKey | String | The web API key of the project. Every field of this object is an empty string on an installation that configures no Firebase project, and an empty projectId is the cheapest thing to test for before initialising an SDK. None of these values is a secret - they are meant to be embedded in a client. | [required] [example: AIzaSyDxK9L3j4H8mN2pQ5rS6tU7vW8xY9zA1bC] [nullable] |
| authDomain | String | The host the Firebase SDK performs its own authentication against. | [required] [example: myapp-12345.firebaseapp.com] [nullable] |
| projectId | String | The identifier of the Firebase project itself, which ties all the other fields together. | [required] [example: myapp-12345] [nullable] |
| storageBucket | String | The Cloud Storage bucket of the project. The portal does not store portal files there; it is part of the SDK configuration. | [required] [example: myapp-12345.appspot.com] [nullable] |
| messagingSenderId | String | The sender ID that push messages of this project arrive under, which a client checks an incoming message against. | [required] [example: 123456789012] [nullable] |
| appId | String | The identifier of the Firebase application registration this client is to use. | [required] [example: 1:123456789012:web:a1b2c3d4e5f6g7h8] [nullable] |
| measurementId | String | The Google Analytics measurement ID of the project, empty when the project reports no analytics. | [required] [example: G-ABCD123456] [nullable] |
| databaseURL | String | The Realtime Database endpoint of the project, empty when the project has no such database. | [required] [example: https://myapp-12345.firebaseio.com] [nullable] |
Model FirebaseRequestsDto
Which mobile device receives the Documents push notifications, and whether it is subscribed.
| Name | Type | Description | Notes |
|---|---|---|---|
| firebaseDeviceToken | String | The registration token Firebase issued to the mobile client for this device, obtained on the device itself. It is kept as an opaque string of up to 255 characters and is never verified here; it identifies the device and is matched but never changed, and a token belonging to another member or another portal matches nothing. | [optional] [example: dGhpc2lzYXRva2Vu...] [nullable] |
| isSubscribed | Boolean | Whether the device is to receive the room activity messages - an invitation, a role change, an archived room, a new document. On a first registration it is stored as given; on a registration that already exists it is ignored, because registering does not update, and the subscription is changed with PUT api/2.0/settings/push/docsubscribe instead. | [optional] [example: true] |
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 FormGalleryDto
Where the ready-made form templates are served from, for browsing them and for submitting new ones.
| Name | Type | Description | Notes |
|---|---|---|---|
| path | String | The path under domain that the gallery's own listing API is reached at. It is joined to domain by the client; the portal only relays the values from its configuration. | [required] [example: /forms/templates] [nullable] |
| domain | String | The address of the gallery service, which is a service of the vendor rather than part of the portal. Every field of this object is empty on an installation that configures no gallery, and a client should then not offer the gallery at all. | [required] [example: https://forms.example.com] [nullable] |
| ext | String | The file extension to ask the gallery for, which decides which rendition of a template is downloaded when several are published. | [required] [example: .docxf] [nullable] |
| uploadPath | String | The path used for submitting a form of one's own to the gallery, the counterpart of path for the upload side. The four upload fields are empty when the installation allows browsing but not submitting. | [required] [example: /forms/upload] [nullable] |
| uploadDomain | String | The address the submission is sent to, which may differ from domain. | [required] [example: https://upload.forms.example.com] [nullable] |
| uploadExt | String | The file extension a submitted form has to carry. | [required] [example: .docxf] [nullable] |
| uploadDashboard | String | The page a person is sent to in order to follow up on a submission, joined to uploadDomain the same way as uploadPath. | [required] [example: /dashboard/forms] [nullable] |
Model GreetingSettingsRequestsDto
The greeting caption the portal shows its users.
| Name | Type | Description | Notes |
|---|---|---|---|
| title | String | The caption to store, which is kept as the portal name. An empty value clears the greeting and returns the portal to the built-in default caption. On a cloud portal with a free or trial plan the text is also matched against the character rule configured for the installation and a text that breaks it is refused, while a paid cloud plan and a self-hosted installation apply no such check. | [required] [example: Welcome to Our Portal] [minLength: 0] [maxLength: 255] [nullable] |
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 IPRestriction
The IP restiction parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| ip | String | The IP address. | [required] |
| forAdmin | Boolean | Specifies if the IP address is for administrator users only or not. | [optional] |
| id | Integer (int32) | The IP restiction ID. | [optional] |
| tenantId | Integer (int32) | The tenant ID. | [optional] |
Model IPRestrictionArrayWrapper
The successful API response containing the list of IPRestriction objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of IPRestriction 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 IPRestrictionsSettings
The IP restriction settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| enable | Boolean | Specifies if the IP restrictions are enabled or not. | [optional] [example: true] |
| lastModified | Date (date-time) | The date and time when the settings were last modified. | [optional] [example: 2024-01-01T00:00:00Z] |
Model IPRestrictionsSettingsWrapper
The successful API response containing the IPRestrictionsSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | IPRestrictionsSettings | The IPRestrictionsSettings 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 ImportableApiEntity
The parameters of an importable API entity.
| Name | Type | Description | Notes |
|---|---|---|---|
| shouldImport | Boolean | Specifies whether the API entity should be imported. | [optional] [example: true] |
Model Int64Wrapper
The successful API response containing the int64 value.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | Integer | The int64 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 InvitationLinkCreateRequestDto
The role a new invitation link grants, and the limits placed on it.
| Name | Type | Description | Notes |
|---|---|---|---|
| employeeType | EmployeeType | The role whoever follows the link joins with. Only DocSpaceAdmin, RoomAdmin and User are accepted, and the role cannot be changed afterwards - delete the link and create one for the other role instead. | [required] [enum: All, RoomAdmin, Guest, DocSpaceAdmin, User] |
| expiration | Date (date-time) | When the link stops letting anyone in, read in the portal time zone. It has to lie in the future; leaving it out creates a link with no deadline at all. | [optional] [example: 2025-06-15T10:30:00.0000000Z] [nullable] |
| maxUseCount | Integer (int32) | How many accounts may join through the link in total. Leaving it out creates a link with no use limit; the uses spent so far are reported as currentUseCount. | [optional] [example: 1] [min: 1] [max: 1000] [nullable] |
Model InvitationLinkDeleteRequestDto
Which invitation link is withdrawn.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | UUID (uuid) | The link to delete, by the id that creating or reading it returned. A link recreated for the same role afterwards gets a new id, a new URL and a use count starting from zero. | [required] [example: 00000000-0000-0000-0000-000000000000] |
Model InvitationLinkDto
The portal's standing invitation link for one role: what it grants, how long it lasts, how often it was used.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | UUID (uuid) | The identifier to address the link by in PUT api/2.0/portal/users/invitationlink and DELETE api/2.0/portal/users/invitationlink. It survives a change of deadline or use limit, so it is worth storing rather than re-reading. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| employeeType | EmployeeType | The role an account gets by joining through this link. A portal keeps at most one link per role, and the role of an existing link cannot be changed - the link has to be deleted and created again. | [required] [enum: All, RoomAdmin, Guest, DocSpaceAdmin, User] |
| expiration | ApiDateTime | When the link stops working, in the portal time zone. It is empty for a link that never expires, which is what omitting the deadline on create or update leaves behind. | [optional] |
| isExpired | Boolean | Whether that deadline has already passed. A link without a deadline always reports false, and an expired link is still returned rather than treated as gone - it can be revived by moving expiration. | [optional] [example: true] |
| maxUseCount | Integer (int32) | How many accounts may join through the link in total. It is empty for a link with no use limit, and an update may not lower it below currentUseCount. | [optional] [example: 1] [nullable] |
| currentUseCount | Integer (int32) | How many accounts have already joined through the link. It only ever grows, and reaching maxUseCount retires the link as surely as a passed deadline. | [optional] [example: 1] |
| url | String | The shortened address to hand to the people being invited. It is signed for the account that read it, so two administrators are given two different URLs for one and the same link and both of them work; the id above, not this string, is what identifies the link. | [optional] [example: https://example.com] [nullable] |
Model InvitationLinkUpdateRequestDto
The invitation link being changed, with the deadline and use limit it is to have afterwards.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | UUID (uuid) | The link to change, by the id that creating or reading it returned. The role behind that id cannot be changed here. | [required] [example: 00000000-0000-0000-0000-000000000000] |
| expiration | Date (date-time) | The new deadline, read in the portal time zone. The body is applied as a whole, so leaving it out clears the deadline rather than keeping the current one; a moment in the past is refused. | [optional] [example: 2024-01-15T10:30:00Z] [nullable] |
| maxUseCount | Integer (int32) | The new total number of accounts that may join through the link. It may not be lower than the uses already spent, which the link reports as currentUseCount, and leaving it out removes the limit rather than keeping the current one. | [optional] [example: 1] [min: 1] [max: 1000] [nullable] |
Model InvitationLinkWrapper
The successful API response containing the InvitationLinkDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | InvitationLinkDto | The InvitationLinkDto 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 IpRestrictionBase
The IP restiction base parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| ip | String | The IP address. | [required] [example: 192.0.2.1] [nullable] |
| forAdmin | Boolean | Specifies if the IP address is for administrator users only or not. | [optional] [example: false] |
Model IpRestrictionsDto
The addresses allowed to reach the portal, and whether the restriction is enforced.
| Name | Type | Description | Notes |
|---|---|---|---|
| ipRestrictions | List | The allowed addresses, each entry pairing a single IPv4 or IPv6 address with the flag that limits it to administrators. This is the whole list that is to hold afterwards: entries not repeated here are deleted. Ranges written as from-to and CIDR blocks are refused with 400, even though the portal matches such forms when they are already stored. Enforcement spares only the portal owner and the installation own networks, so a list without the caller address locks the remaining administrators out. | [required] [example: [{ip=192.0.2.1, forAdmin=false}]] [nullable] |
| enable | Boolean | Whether the list is enforced. Leaving it out follows the list - on when addresses are sent, off when the list is empty - and sending true with an empty list is refused with 400, since that would admit nobody. | [optional] [example: true] [nullable] |
Model IpRestrictionsWrapper
The successful API response containing the IpRestrictionsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | IpRestrictionsDto | The IpRestrictionsDto 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 IsDefaultWhiteLabelLogosArrayWrapper
The successful API response containing the list of IsDefaultWhiteLabelLogosDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of IsDefaultWhiteLabelLogosDto 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 IsDefaultWhiteLabelLogosDto
Whether one branding slot still holds the built-in image or wordmark.
| Name | Type | Description | Notes |
|---|---|---|---|
| name | String | The stable name of the slot, matching the name of the same slot in GET api/2.0/settings/whitelabel/logos - LightSmall, LoginPage, Favicon, DocsEditor and the rest, plus Notification, which that list leaves out. The wordmark check reports the fixed name logotext instead of a slot. | [required] [example: LightSmall] [nullable] |
| default | Boolean | Whether the slot has never been written for this portal, in which case the built-in image is what gets rendered. It turns false once an image has been stored, for either the light or the dark theme, and back to true after the matching restore operation. For logotext it stays true when the built-in wordmark itself is saved, because saving that value counts as clearing the setting. | [required] [example: true] |
Model IsDefaultWhiteLabelLogosWrapper
The successful API response containing the IsDefaultWhiteLabelLogosDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | IsDefaultWhiteLabelLogosDto | The IsDefaultWhiteLabelLogosDto 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 ItemKeyValuePairStringBoolean
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 | String | 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] [nullable] |
| value | Boolean | 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] |
Model ItemKeyValuePairStringLogoRequestsDto
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 | String | 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] [nullable] |
| value | LogoRequestsDto | 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] |
Model ItemKeyValuePairStringString
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 | String | 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] [nullable] |
| 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 LocationType
Possible values:
0— None (None)1— Files (Files)2— Folders (Folders)3— Documents settings (DocumentsSettings)27— Rooms (Rooms)29— Settings (Settings)30— Contacts (Contacts)31— Agents (Agents)
Model LoginEventArrayWrapper
The successful API response containing the list of LoginEventDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of LoginEventDto 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 LoginEventDto
One entry of the portal login history: a sign-in, a sign-out or a failed attempt, and where it came from.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The ID of the recorded sign-in. When the entry is a successful sign-in that is still open, this is also the value GET api/2.0/security/activeconnections reports as the connection's id. | [optional] [example: 1] |
| date | ApiDateTime | When the attempt was made, in the portal time zone. The from and to filters are read as UTC instants, so the two do not line up on a portal that is not on UTC. | [optional] |
| user | String | The display name of the account the attempt was made against, taken from the account as it stands now rather than as it stood at the time. A localised placeholder stands in when there is no account to read, which is the usual case for a failed attempt on an address nobody owns. | [optional] [example: John Doe] [nullable] |
| userId | UUID (uuid) | The ID of that account, which is what the userId filter of this operation matches on. It is the empty GUID when the attempt could not be tied to an account. | [optional] [example: 00000000-0000-0000-0000-000000000001] |
| login | String | The login string as it was typed - normally the email address. It is the only field that survives a failed attempt against an unknown account, which makes it the one to read when user is a placeholder. | [optional] [example: user@example.com] [nullable] |
| action | String | The event as a readable sentence in the portal language. On GET api/2.0/security/audit/login/last each substituted value is cut to 50 characters; the filtered operation substitutes them in full. | [optional] [example: User logged in] [nullable] |
| actionId | MessageAction | What happened, as the action filter of this operation spells it: a successful sign-in, a failed one, a sign-out. Use this rather than parsing action, which is prose and changes with the portal language. | [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] |
| ip | String | The IP address the attempt came from, with the port stripped off. | [optional] [example: 192.0.2.1] [nullable] |
| country | String | The English name of the country the IP address is located in, empty when the address cannot be located - the normal outcome for private and loopback addresses. | [optional] [example: United States] [nullable] |
| city | String | The city the IP address is located in, empty under the same conditions as country. | [optional] [example: New York] [nullable] |
| browser | String | The browser and its version as parsed from the user agent of the attempt, empty when the client sent none that could be parsed. | [optional] [example: Chrome 120.0] [nullable] |
| platform | String | The operating system as parsed from the same user agent, empty under the same conditions as browser. | [optional] [example: Windows] [nullable] |
| page | String | Where in the portal the attempt was made from: the referrer of the request, or that request's own path when it carried no referrer. Long values are cut off at 512 characters. | [optional] [example: /login] [nullable] |
Model LoginProvider
Possible values:
0— Facebook (Facebook)1— Google (Google)2— Dropbox (Dropbox)3— Docusign (Docusign)4— Box (Box)5— OneDrive (OneDrive)6— GosUslugi (GosUslugi)7— LinkedIn (LinkedIn)8— MailRu (MailRu)9— VK (VK)10— Wordpress (Wordpress)11— Yahoo (Yahoo)12— Yandex (Yandex)13— Github (Github)14— Nextcloud (Nextcloud)
Model LoginSettingsDto
The brute-force protection of the sign-in form: how many failures, over how long, cost how long a block.
| Name | Type | Description | Notes |
|---|---|---|---|
| attemptCount | Integer (int32) | How many failed attempts inside one window are tolerated before the offender is blocked. Attempts are counted per user name and client address together, so one member being blocked leaves the rest of the portal signing in normally. | [required] [example: 5] |
| blockTime | Integer (int32) | How long, in seconds, a blocked user name and address pair stays refused. While the block lasts the sign-in is refused even once the password is correct. | [required] [example: 15] |
| checkPeriod | Integer (int32) | The length, in seconds, of the rolling window the failures are counted over. It is not a request timeout: a wider window makes the same attemptCount stricter, because failures further apart still add up. | [required] [example: 60] |
| isDefault | Boolean | Whether the three numbers above still match the ones the installation ships with. It turns false as soon as any of them is saved differently, and true again after DELETE api/2.0/settings/security/loginsettings. | [required] [example: false] |
Model LoginSettingsRequestDto
The brute-force protection of the sign-in form: how many failures, over how long, cost how long a block.
| Name | Type | Description | Notes |
|---|---|---|---|
| attemptCount | Integer (int32) | How many failed sign-in attempts inside one window are tolerated before the offender is blocked. Attempts are counted per user name and client address together, so one member being blocked leaves the rest of the portal signing in normally. | [optional] [example: 1] [min: 1] [max: 9999] |
| blockTime | Integer (int32) | How long, in seconds, a blocked user name and address pair stays refused. While the block lasts the sign-in is refused even when the password is finally correct. | [optional] [example: 1] [min: 1] [max: 9999] |
| checkPeriod | Integer (int32) | The length, in seconds, of the rolling window the failed attempts are counted over. A wider window makes the same attemptCount stricter, because failures further apart still add up. | [optional] [example: 1] [min: 1] [max: 9999] |
Model LoginSettingsWrapper
The successful API response containing the LoginSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | LoginSettingsDto | The LoginSettingsDto 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 LogoRequestsDto
The two theme variants of one branding logo.
| Name | Type | Description | Notes |
|---|---|---|---|
| light | String | The image used on a light background, either as a data:image/png;base64,... payload - png, jpg and svg are accepted - or as the name of a file already put in the temporary store. | [optional] [example: data:image/png;base64,iVBORw0KGgoAAAANS...] [nullable] |
| dark | String | The image used on a dark background, in the same two forms as light. It is only stored for the slots that have a dark variant and is ignored for the favicon and the editor logos. | [optional] [example: data:image/png;base64,iVBORw0KGgoAAAANS...] [nullable] |
Model MailDomainSettingsRequestsDto
Which email domains the portal treats as already verified, and how their users join.
| Name | Type | Description | Notes |
|---|---|---|---|
| type | TenantTrustedDomainsType | How trusted domains are decided: no domain is trusted, every domain is, or only the ones listed in domains. Only the custom mode reads domains; under the other two the list is ignored rather than refused. | [required] [enum: 0, 1, 2] |
| domains | List | The trusted domains, as bare hostnames such as example.com without a scheme or an @. This is the whole list that is to hold afterwards and not a list of additions. Each entry is lowercased before it is stored, and one entry that is not a valid hostname - or an empty list in the custom mode - fails the whole call without saving anything. | [required] [example: [example.com, company.com]] [nullable] |
| inviteUsersAsVisitors | Boolean | What a user joining through a trusted domain becomes: true admits them as a guest, false as a full member. It applies to joins made from now on and does not change anybody who has already joined. | [required] [example: false] |
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 MigratingApiFiles
The parameters of the migrating files.
| Name | Type | Description | Notes |
|---|---|---|---|
| foldersCount | Integer (int32) | The number of folders. | [optional] [example: 12] |
| filesCount | Integer (int32) | The number of files. | [optional] [example: 48] |
| bytesTotal | Long (int64) | The total number of bytes. | [optional] [example: 104857600] |
Model MigratingApiGroup
The migrating group parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| shouldImport | Boolean | Specifies whether the API entity should be imported. | [optional] |
| groupName | String | The group name. | [optional] [nullable] |
| moduleName | String | The group module name. | [optional] [nullable] |
| userUidList | List | The list of group user UIDs. | [optional] [nullable] |
Model MigratingApiUser
The migrating user parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| shouldImport | Boolean | Specifies whether the API entity should be imported. | [optional] |
| key | String | The user key. | [optional] [nullable] |
| String (email) | The user email. | [optional] [nullable] | |
| displayName | String | The user display name. | [optional] [nullable] |
| firstName | String | The user first name. | [optional] [nullable] |
| lastName | String | The user last name. | [optional] [nullable] |
| userType | EmployeeType | The user type. | [optional] [enum: All, RoomAdmin, Guest, DocSpaceAdmin, User] |
| migratingFiles | MigratingApiFiles | The user's migrating files. | [optional] |
Model MigrationApiInfo
The migration API information.
| Name | Type | Description | Notes |
|---|---|---|---|
| migratorName | String | The migrator name. | [optional] [example: Nextcloud] [nullable] |
| operation | String | The migration operation. | [optional] [example: parse] [nullable] |
| failedArchives | List | The list of failed archives. | [optional] [example: [archive1.zip, archive2.zip]] [nullable] |
| users | List | The list of migrating users. | [optional] [example: [{id=9924256B-447C-4F19-9dbd-8ad8c39e8ff5, email=user@example.com, shouldImport=true}]] [nullable] |
| withoutEmailUsers | List | The list of migrating users without email. | [optional] [example: [{id=9924256B-447C-4F19-9dbd-8ad8c39e8ff5, shouldImport=false}]] [nullable] |
| existUsers | List | The list of existing migrating users. | [optional] [example: [{id=9924256B-447C-4F19-9dbd-8ad8c39e8ff5, email=existing@example.com, shouldImport=true}]] [nullable] |
| groups | List | The list of migrating groups. | [optional] [example: [{id=1, name=Group1, shouldImport=true}]] [nullable] |
| importPersonalFiles | Boolean | Specifies whether to import personal files or not. | [optional] [example: true] |
| importSharedFiles | Boolean | Specifies whether to import shared files or not. | [optional] [example: true] |
| importSharedFolders | Boolean | Specifies whether to import shared folders or not. | [optional] [example: true] |
| importCommonFiles | Boolean | Specifies whether to import common files or not. | [optional] [example: true] |
| importProjectFiles | Boolean | Specifies whether to import project files or not. | [optional] [example: false] |
| importGroups | Boolean | Specifies whether to import groups or not. | [optional] [example: true] |
| successedUsers | Integer (int32) | The number of successfully migrated users. | [optional] [example: 50] |
| failedUsers | Integer (int32) | The number of unsuccessfully migrated users. | [optional] [example: 2] |
| files | List | The list of migrated files. | [optional] [example: [document.docx, spreadsheet.xlsx]] [nullable] |
| errors | List | The list of migration errors. | [optional] [example: [User not found, File access denied]] [nullable] |
Model MigrationStatusDto
How far the parse or the import queued for this portal has got, and what it produced once it stopped.
| Name | Type | Description | Notes |
|---|---|---|---|
| progress | Double (double) | The share of the job that is done, from 0 to 100. It advances unevenly, since the stages differ in length, so poll isCompleted rather than waiting for this to reach 100. | [optional] [example: 99.99] |
| error | String | The message that ended the job, in the portal language. It stays empty while nothing has gone wrong, so once isCompleted is true this field is what tells success from failure. | [optional] [example: Connection failed] [nullable] |
| parseResult | MigrationApiInfo | What the migrator has read so far. After a parse pass it holds the users, the groups and the archives it could not read, which is the body to edit and post to POST api/2.0/migration/migrate; during an import it also carries the accounts that were created and the ones that failed. Its own operation field, parse or migration, is what tells the two stages apart. | [optional] |
| isCompleted | Boolean | Whether the job has stopped, successfully or not. It is the field to poll on; the whole body comes back empty instead when the portal has no job at all, which is not an error. | [optional] [example: true] |
Model MigrationStatusWrapper
The successful API response containing the MigrationStatusDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | MigrationStatusDto | The MigrationStatusDto 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 MobilePhoneActivationStatus
Possible values:
0— Not activated (NotActivated)1— Activated (Activated)
Model MobileRequestsDto
The phone number a user going through phone activation registers for SMS codes.
| Name | Type | Description | Notes |
|---|---|---|---|
| mobilePhone | String | The number the SMS codes are sent to, in international form with the leading + and no spaces. It is stored as not yet activated and only becomes the confirmed number once a code sent to it is accepted; an already activated number is not replaced this way and has to be erased first. | [optional] [example: +1234567890] [nullable] |
Model NotificationChannelDto
One delivery channel of the installation, with the state it is in for this portal.
| Name | Type | Description | Notes |
|---|---|---|---|
| name | String | The internal name of the channel as the notification service knows it - email.sender for letters, telegram.sender for Telegram messages. It is a key to match on, not a label to print. | [required] [example: email.sender] [nullable] |
| isEnabled | Boolean | Whether the channel can deliver for this portal. Letters are enabled whenever the channel is listed at all, while Telegram is enabled only while the portal has a bot name and token stored. It says nothing about the caller, who also has to connect their own Telegram account through GET api/2.0/settings/telegram/link. | [required] [example: true] |
Model NotificationChannelStatusDto
The ways this installation can deliver a notification, and whether each of them is usable.
| Name | Type | Description | Notes |
|---|---|---|---|
| channels | List | The channels the running installation is configured with. A channel appears only when the notification service names a sender for it, so the list can be shorter than the channels this build implements, and an empty list means the configuration names none of them. | [optional] [example: [{name=email.sender, isEnabled=true}]] [nullable] |
Model NotificationChannelStatusWrapper
The successful API response containing the NotificationChannelStatusDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | NotificationChannelStatusDto | The NotificationChannelStatusDto 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 NotificationSettingsDto
Whether one kind of notification is switched on for the calling user.
| Name | Type | Description | Notes |
|---|---|---|---|
| type | NotificationType | Which kind of notification the flag belongs to, echoed from the request. It is published as a number: badges, room activity, the daily feed, and the tips. | [optional] [enum: 0, 1, 2, 3] |
| isEnabled | Boolean | Whether the caller receives that kind of notification. It describes the caller's own account and nobody else's; a fresh account has the badges on and the other three off, because those are subscriptions that only POST api/2.0/settings/notification creates. | [optional] [example: true] |
Model NotificationSettingsRequestsDto
Which kind of notification the calling user switches, and which way.
| Name | Type | Description | Notes |
|---|---|---|---|
| type | NotificationType | The kind of notification being switched. A value outside the defined set is echoed back while nothing is stored, so confirm the result with GET api/2.0/settings/notification/{type} rather than trusting the answer. | [required] [enum: 0, 1, 2, 3] |
| isEnabled | Boolean | Whether that kind reaches the calling account. It applies to the caller own account alone and to every room at once; a single room is silenced with POST api/2.0/settings/notification/rooms instead. | [optional] [example: true] |
Model NotificationSettingsWrapper
The successful API response containing the NotificationSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | NotificationSettingsDto | The NotificationSettingsDto 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 NotificationType
Possible values:
0— Badges (Badges)1— Rooms activity (RoomsActivity)2— Daily feed (DailyFeed)3— Usefull tips (UsefullTips)
Model OperationDto
One movement on the portal wallet: what it was for, who caused it, and how much money it moved.
| Name | Type | Description | Notes |
|---|---|---|---|
| date | ApiDateTime | When the movement was booked, in the portal time zone - the same zone the startDate and endDate filters are read in, so the two do line up here. | [optional] |
| service | String | The wallet service the movement belongs to, by its stable key. It is what the serviceName filter matches on, and it is empty for a movement that belongs to no service, such as a top-up. | [optional] [example: disk-storage] [nullable] |
| description | String | A one-line summary of the movement in the portal language, already composed from the service and the quantity - meant to be printed as it is rather than parsed. | [optional] [example: Storage quota increase] [nullable] |
| details | String | The longer explanation of the same movement, where the service recorded one. It is empty for a movement that has nothing to add to description. | [optional] [example: Increased storage from 50GB to 100GB] [nullable] |
| serviceUnit | String | What quantity counts for this service, in the portal language. AI consumption is reported in tokens here rather than in the AI credits the service is sold in. | [optional] [example: GB] [nullable] |
| quantity | Integer (int32) | How many units the movement covers, in the unit named by serviceUnit. It is 0 for a movement that moves money without consuming a service. | [optional] [example: 1] |
| currency | String | The currency credit and debit are expressed in, as a three-letter ISO 4217 code. It is the accounting currency of the wallet, which need not be the currency the subscription is priced in. | [optional] [example: USD] [nullable] |
| credit | Double (double) | The amount that went into the wallet. It is 0 on a movement that only took money out, so the pair of credit and debit is what shows which way the money went; the credit and debit filters of the operation select the two directions by exactly this. | [optional] [example: 99.99] |
| debit | Double (double) | The amount that was taken out of the wallet, 0 on a movement that put money in. | [optional] [example: 99.99] |
| participantName | String | Who caused the movement, as the billing service records them - an internal name, which is what the participantName filter matches on. Show participantDisplayName instead. | [optional] [example: john.doe@example.com] [nullable] |
| participantDisplayName | String | The same person as their portal display name. It falls back to participantName when the name belongs to no portal account, so it is never empty while participantName is filled. | [optional] [example: John Doe] [nullable] |
| sourceType | String | What kind of thing an AI operation was run on - an agent, a file, a folder, a room or a form. It is empty on any movement that is not an AI charge. | [optional] [example: Agent] [nullable] |
| sourceTitle | String | The title that thing had when the operation ran, kept as recorded, so it does not follow a later rename. Empty under the same conditions as sourceType. | [optional] [example: My AI Agent] [nullable] |
| sourceId | String | The identifier of that thing, to look it up in the module it belongs to. Empty under the same conditions as sourceType. | [optional] [example: 123] [nullable] |
| type | OperationType | What kind of movement this is - a payment, a charge, a refund, a correction. It is what the type filter matches on, and Unknown covers a movement the billing service reported under a kind this build does not recognise. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] |
Model OperationOrderType
Possible values:
0— Descending (Descending)1— Ascending (Ascending)
Model OperationStatus
Possible values:
0— Pending (Pending)1— Completed (Completed)2— Rejected (Rejected)3— Canceled (Canceled)
Model OperationType
Possible values:
0— Unknown (Unknown)1— ServicePayment (ServicePayment)2— PackagePayment (PackagePayment)3— AiServicePayment (AiServicePayment)4— Deposit (Deposit)5— ReceiveProviderInvoice (ReceiveProviderInvoice)6— ProcessProviderInvoice (ProcessProviderInvoice)7— WriteOffServiceProfit (WriteOffServiceProfit)8— Profit (Profit)9— PartnerAccrual (PartnerAccrual)10— ProviderPayment (ProviderPayment)11— PartnerPayment (PartnerPayment)12— Refund (Refund)13— BankDeposit (BankDeposit)14— BankWithdrawal (BankWithdrawal)15— GoodwillCredit (GoodwillCredit)16— WriteOffProfit (WriteOffProfit)17— WriteOffDifferenceCurrency (WriteOffDifferenceCurrency)18— AiDebit (AiDebit)19— AiCredit (AiCredit)
Model OwnerChangeInstructionsDto
The outcome of asking for the portal-ownership transfer letter to be sent.
| Name | Type | Description | Notes |
|---|---|---|---|
| status | Integer (int32) | Whether the letter was sent: 1 that it was, 0 that the request was turned down. A refusal comes back with HTTP 200, so this field and not the status code is what says whether anything happened - the request is turned down when the caller is not the portal owner and when the named member is unknown or inactive. | [optional] [example: 1] |
| message | String | The outcome spelled out in the portal language. On success it names the address the letter went to, and it carries an HTML mailto: anchor rather than plain text, so it has to be rendered as markup or stripped; on a refusal it is the localised reason. | [optional] [example: Ownership transferred successfully] [nullable] |
Model OwnerChangeInstructionsWrapper
The successful API response containing the OwnerChangeInstructionsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | OwnerChangeInstructionsDto | The OwnerChangeInstructionsDto 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 OwnerIdSettingsRequestDto
The portal member named as the new owner of the portal.
| Name | Type | Description | Notes |
|---|---|---|---|
| ownerId | UUID (uuid) | The member who is to become the portal owner, by user ID. They have to be an active member of this portal and not a guest; a member who is not a DocSpace administrator yet is promoted to one as part of the transfer, so the portal needs a paid seat for them. | [required] [example: 00000000-0000-0000-0000-000000000001] |
Model PasswordHasher
The password hash parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| size | Integer (int32) | The password hash size. | [optional] [example: 32] |
| iterations | Integer (int32) | The number of iterations to generate the ppassword hash. | [optional] [example: 1000] |
| salt | String | The salt to generate the ppassword hash. | [optional] [example: random_salt_value] [nullable] |
Model PasswordSettingsDto
The password policy of the portal, with the expressions a client can check a password against.
| Name | Type | Description | Notes |
|---|---|---|---|
| minLength | Integer (int32) | The shortest password the portal accepts, 8 characters on a portal nobody has configured. Whatever the policy says, a password longer than 30 characters is refused as well, and that ceiling is not reported here. | [required] [example: 8] |
| upperCase | Boolean | Whether at least one uppercase letter is demanded. While it is false an uppercase letter is still allowed - the flag adds a requirement rather than permission. | [required] [example: true] |
| digits | Boolean | Whether at least one digit is demanded, read the same way as upperCase. | [required] [example: true] |
| specSymbols | Boolean | Whether at least one special symbol is demanded, read the same way as upperCase. Which symbols count is spelled out by specSymbolsRegexStr. | [required] [example: false] |
| allowedCharactersRegexStr | String | The expression the whole password has to match, which is what defines the alphabet the portal accepts at all. It comes from the installation's configuration rather than from the portal policy, so it is the same for every portal of an installation and unaffected by the flags above. | [required] [example: ^[a-zA-Z0-9!@#$%^&*()]+$] [nullable] |
| digitsRegexStr | String | The look-ahead expression that tests the digit requirement, meant to be applied only while digits is true. It is always filled in, so its presence is not itself a requirement. | [required] [example: (?=.*\\d)] [nullable] |
| upperCaseRegexStr | String | The look-ahead expression that tests the uppercase requirement, to be applied while upperCase is true. | [required] [example: (?=.*[A-Z])] [nullable] |
| specSymbolsRegexStr | String | The look-ahead expression that tests the special-symbol requirement, to be applied while specSymbols is true. It also enumerates the symbols the portal treats as special. | [required] [example: (?=.*[!@#$%^&*()])] [nullable] |
Model PasswordSettingsRequestsDto
The four values that make up the portal password policy, replaced together.
| Name | Type | Description | Notes |
|---|---|---|---|
| minLength | Integer (int32) | The shortest password the portal will accept. It has to sit between the floor the installation is configured with, 8 characters unless it was changed, and the ceiling of 30; a value outside that is refused with 400. | [required] [example: 8] |
| upperCase | Boolean | Whether a password must contain at least one uppercase letter. There is no partial update on this body, so leaving the flag out stores it as false and drops the requirement. | [optional] [example: true] |
| digits | Boolean | Whether a password must contain at least one digit. Leaving the flag out stores it as false and drops the requirement. | [optional] [example: true] |
| specSymbols | Boolean | Whether a password must contain at least one special symbol. Leaving the flag out stores it as false and drops the requirement. | [optional] [example: true] |
Model PasswordSettingsWrapper
The successful API response containing the PasswordSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | PasswordSettingsDto | The PasswordSettingsDto 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 PaymentCalculation
The parameters of the calculated payment amount.
| Name | Type | Description | Notes |
|---|---|---|---|
| operationId | Long (int64) | The operation unique identifier. | [optional] [example: 123456789] |
| amount | Double (double) | The calculated payment amount. | [optional] [example: 10.0] |
| currency | String | The three-character ISO 4217 currency symbol used for the payment calculation. | [optional] [example: USD] [nullable] |
| quantity | Integer (int32) | The quantity associated with the payment calculation. | [optional] [example: 1] |
Model PaymentCalculationWrapper
The successful API response containing the PaymentCalculation object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | PaymentCalculation | The PaymentCalculation 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 PaymentMethodStatus
Possible values:
0— None (None)1— Set (Set)2— Expired (Expired)
Model PaymentSettingsDto
Where to buy or extend the portal's subscription, and what the subscription in force looks like.
| Name | Type | Description | Notes |
|---|---|---|---|
| salesEmail | String | The vendor mailbox to write to about buying, extending or changing the subscription, picked for the portal language. It is not the portal's own support address. | [required] [example: sales@example.com] [nullable] |
| feedbackAndSupportUrl | String | Not populated: nothing fills this field in, so it always comes back empty. The help and support addresses live in externalResources of GET api/2.0/settings instead. | [optional] [example: https://example.com] [nullable] |
| buyUrl | String | The vendor page for buying or extending the subscription, chosen for the licence kind the installation was built for and for the portal language. It is a page for a person to open, not an API to call. | [required] [example: https://example.com/buy] [nullable] |
| standalone | Boolean | Whether this is a server installation someone administers themselves rather than a portal in the cloud, which decides whether payment means uploading a licence file or a subscription in the vendor's store. | [required] [example: false] |
| currentLicense | CurrentLicenseInfo | The subscription in force, reduced to the two facts a payment page needs. | [required] |
| max | Integer (int32) | The largest quantity of a paid item - members, storage - that may be bought in one go, 999 unless the installation configures another cap. It bounds a single purchase, not the total a portal may hold. | [required] [example: 999] |
Model PaymentSettingsWrapper
The successful API response containing the PaymentSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | PaymentSettingsDto | The PaymentSettingsDto 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 PaymentUrlRequestDto
The plan being bought and the two pages the hosted checkout returns the buyer to.
| Name | Type | Description | Notes |
|---|---|---|---|
| backUrl | URI (uri) | The absolute address the hosted checkout page sends the buyer back to when the purchase is abandoned. It has to be a well-formed URL and is carried into the checkout page as it is given, so it must be reachable by the buyer rather than by the portal. | [required] [example: https://example.com/payment/back] [minLength: 0] [maxLength: 255] |
| successUrl | URI (uri) | The absolute address the hosted checkout page sends the buyer to once the payment provider accepts the purchase. Reaching it says the provider took the money, not that the portal has already been switched to the new plan, so a client that lands here reads the plan back rather than assuming it. | [required] [example: https://example.com/payment/success] [minLength: 0] [maxLength: 255] |
| quantity | Map (int32) | The plan being bought, as a single pair of the plan name and the number of units of it. The key is the name of a monthly, non-wallet quota from GET api/2.0/portal/payment/quotas, and the value is how many administrators the plan is to cover, which has to be greater than zero. Exactly one pair is accepted; yearly and wallet products are refused with 400, and wallet services are bought through PUT api/2.0/portal/payment/updatewallet instead. | [required] [example: {admin=1}] |
Model PluginsDto
What the installation allows to be done with web plugins.
| Name | Type | Description | Notes |
|---|---|---|---|
| enabled | Boolean | Whether web plugins run on this portal at all. While it is false the operations under api/2.0/settings/webplugins are of no use, whatever the other two flags say. All three are false unless the installation switched plugins on in its configuration. | [optional] [example: true] |
| upload | Boolean | Whether an administrator may add a plugin of their own through POST api/2.0/settings/webplugins. While it is false only the plugins that ship with the installation are available. | [optional] [example: true] |
| delete | Boolean | Whether an added plugin may be removed again through DELETE api/2.0/settings/webplugins/{name}. The plugins that ship with the installation cannot be removed regardless of this flag. | [optional] [example: true] |
Model PriceDto
What a quota costs, and the currency that amount is in.
| Name | Type | Description | Notes |
|---|---|---|---|
| value | Double (double) | The amount for one billing period, per unit for a quota sold by the unit. It is empty for a quota that is not sold for money - the free, trial and non-profit ones - and for a quota this installation has no price list entry for. | [optional] [example: 99.99] [nullable] |
| currencySymbol | String | The symbol to print in front of value, such as $. It is chosen for the currency, not for the portal language, so it is not a localised format. | [optional] [example: $] [nullable] |
| isoCurrencySymbol | String | The currency as a three-letter ISO 4217 code, which is the value to compare on when currencySymbol is ambiguous between currencies that share a sign. | [optional] [example: USD] [nullable] |
Model PriceStatus
Possible values:
0— Draft (Draft)1— Approved (Approved)2— Rejected (Rejected)
Model PriceTimeUnit
Possible values:
0— None (None)1— Hour (Hour)2— Day (Day)3— Week (Week)4— Month (Month)5— Year (Year)6— ThreeYears (ThreeYears)
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 ProductAdministratorDto
Whether one user administers one portal module, echoing back the pair that was asked about.
| Name | Type | Description | Notes |
|---|---|---|---|
| productId | UUID (uuid) | The module the verdict is about, echoed from the request. The all-zero GUID stands for the portal as a whole rather than for any single module. | [required] [example: 00000000-0000-0000-0000-000000000000] |
| userId | UUID (uuid) | The user the verdict is about, echoed from the request unchanged - it is not checked for existing. | [required] [example: 00000000-0000-0000-0000-000000000000] |
| administrator | Boolean | Whether that user administers that module. It is true for a DocSpace administrator whatever the module, since the portal-wide role covers every one of them. A false can also mean the identifiers name no user or no module at all, so it is not proof that the user exists, and it says nothing about whether the module is enabled for the portal - GET api/2.0/settings/security/{id} reports that. | [required] [example: true] |
Model ProductAdministratorWrapper
The successful API response containing the ProductAdministratorDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | ProductAdministratorDto | The ProductAdministratorDto 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 ProductQuantityType
Possible values:
0— Set (Set)1— Add (Add)2— Sub (Sub)3— Renew (Renew)
Model ProductType
Possible values:
2— Documents (Documents)3— Login (Login)7— Settings (Settings)8— Contacts (Contacts)
Model QuantityRequestDto
The new size of the portal subscription.
| Name | Type | Description | Notes |
|---|---|---|---|
| quantity | Map (int32) | The plan and the number of units it is to cover, as a single pair. While the portal is on a priced plan the key has to be the name of that same plan, which GET api/2.0/portal/payment/quota reports, because the subscription is resized rather than swapped; the value is the total the subscription is to have afterwards, not the difference. Exactly one pair is accepted, and a value that is already in effect is refused with 400. | [required] [example: {admin=1}] |
Model QuotaArrayWrapper
The successful API response containing the list of QuotaDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of QuotaDto 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 QuotaDto
A quota - a plan, an add-on or a wallet service - with its price, the features it switches on and their limits.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The identifier of the quota, which is what the tariff reports as a quota id and what a purchase names. A negative value belongs to a built-in quota rather than one on the price list. | [required] [example: 1] |
| title | String | The quota name in the portal language, for printing rather than matching. It is empty when this build ships no wording for the quota, which is normal for a quota that is not on the public price list. | [optional] [example: Basic Plan] [nullable] |
| price | PriceDto | What the quota costs, in the currency resolved for the request. Its value is empty for a quota that is not sold for money, which is what free, trial and nonProfit describe. | [required] |
| nonProfit | Boolean | Whether this is the non-profit quota, which is granted rather than bought. A portal on it cannot buy any other plan, so a catalogue asked for plans returns this one alone. | [required] [example: false] |
| free | Boolean | Whether this is the free quota a portal falls back to when nothing is paid for. It has no end date and the tightest limits of any quota. | [required] [example: true] |
| trial | Boolean | Whether this is the trial quota, which grants the paid limits for a while and then expires. A trial is not extended by paying - a plan has to be bought instead. | [required] [example: false] |
| features | List | The features the quota switches on, each with the limit it grants and, on the quota the portal is actually on, how much of that limit is already used. A feature that is absent is off, so the list is the whole truth about what the quota includes. | [required] [example: [{id=00000000-0000-0000-0000-000000000001, title=Premium Storage}]] [nullable] |
| usersQuota | TenantEntityQuotaSettings | The per-member storage allowance an administrator has set on top of the quota, and whether it is applied at all. It describes the live portal rather than this quota, so every entry of a catalogue listing repeats the same values, and it is empty unless the portal is a server installation or its plan includes statistics. | [optional] |
| roomsQuota | TenantEntityQuotaSettings | The same kind of per-room storage override, filled in and read the same way as usersQuota. | [optional] |
| aiAgentsQuota | TenantEntityQuotaSettings | The same kind of per-agent storage override for AI agents, filled in and read the same way as usersQuota. | [optional] |
| tenantCustomQuota | TenantQuotaSettings | The storage allowance an administrator has set for the portal as a whole, which caps it below what the quota grants. Filled in under the same conditions as usersQuota. | [optional] |
| dueDate | Date (date-time) | When the quota runs out, in UTC. It is empty on a quota from the catalogue, which has no date until it is bought, and on a quota that never expires. | [optional] [example: 2024-01-15T10:30:00Z] [nullable] |
Model QuotaSettingsRequestsDto
The default storage limit given to newly created users, rooms or AI agents, and whether it is enforced.
| Name | Type | Description | Notes |
|---|---|---|---|
| enableQuota | Boolean | Whether the limit is enforced at all. While it is false the size is ignored and nothing created afterwards carries a limit; objects that already have one keep it either way. | [optional] [example: true] |
| defaultQuota | QuotaSettingsRequestsDto_defaultQuota | [required] |
Model QuotaSettingsRequestsDto.defaultQuota
The starting limit, in bytes, written as a JSON number. It has to parse as a whole number and may not exceed the portal total storage quota, nor, on a self-hosted installation with a portal-wide quota switched on, that quota; anything larger is refused with 400. It is applied to objects created from now on and leaves the limits of existing ones as they are.
Model QuotaState
Possible values:
0— Active (Active)1— Overdue (Overdue)
Model QuotaWrapper
The successful API response containing the QuotaDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | QuotaDto | The QuotaDto 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 RecaptchaType
Possible values:
0— Default (Default)1— AndroidV2 (AndroidV2)2— iOSV2 (iOSV2)3— hCaptcha (hCaptcha)
Model RegStatus
Possible values:
0(unlinked)1(linked)2(linking)
Model ReportDto
One page of the portal wallet's money movements, with the paging figures needed to walk the rest.
| Name | Type | Description | Notes |
|---|---|---|---|
| collection | List | The movements on this page - top-ups, charges, refunds and corrections alike, newest first. It is empty for a page past the end of the report as well as for a period in which nothing happened. | [optional] [example: [{service=disk-storage, debit=14.0}]] [nullable] |
| offset | Integer (int32) | How many movements were skipped before this page, echoed from the request so a client need not remember what it asked for. | [optional] [example: 0] |
| limit | Integer (int32) | How many movements one page may hold, echoed from the request; it is 25 unless another value was asked for. A full page is not proof that more exist - compare currentPage with totalPage. | [optional] [example: 25] |
| totalQuantity | Long (int64) | How many movements match the filters in total, across every page. | [optional] [example: 137] |
| totalPage | Integer (int32) | How many pages those movements come to at the current limit. | [optional] [example: 6] |
| currentPage | Integer (int32) | Which of those pages this one is, as the billing service numbers them. Page through by advancing offset rather than this value, which nothing accepts as an argument. | [optional] [example: 1] |
Model ReportWrapper
The successful API response containing the ReportDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | ReportDto | The ReportDto 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 RestrictedModelsResponse
The AI models the portal is not allowed to use.
| Name | Type | Description | Notes |
|---|---|---|---|
| models | List | The identifiers of the models the portal is not allowed to use. | [required] [example: [gpt-4o, claude-3-opus]] [nullable] |
Model RestrictedModelsResponseWrapper
The successful API response containing the RestrictedModelsResponse object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | RestrictedModelsResponse | The RestrictedModelsResponse 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 RoomsNotificationSettingsDto
The rooms the calling user has silenced.
| Name | Type | Description | Notes |
|---|---|---|---|
| disabledRooms | List | The identifiers of the silenced rooms, in the order they were added, and belonging to the caller's own account alone. They are kept as opaque values, so a numeric identifier of a portal room and a string identifier of a room on a connected third-party account both appear here, and an identifier stays on the list after its room is deleted. An empty list means nothing is silenced. | [optional] [example: [1, 2, 3]] [nullable] |
Model RoomsNotificationSettingsWrapper
The successful API response containing the RoomsNotificationSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | RoomsNotificationSettingsDto | The RoomsNotificationSettingsDto 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 RoomsNotificationsSettingsRequestDto
Which single room the calling user silences, and which way.
| Name | Type | Description | Notes |
|---|---|---|---|
| roomsId | oas_any_type_not_mapped | [optional] [nullable] | |
| mute | Boolean | Which way the room goes: true adds it to the caller silenced list, false takes it off again. While a room is silenced its activity is left out of the hourly and daily digests, the letters it would send at once are not sent, and its new-item counters are hidden. | [optional] [example: true] |
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 SalesRequestsDto
Who is writing to the ONLYOFFICE sales team, and what about.
| Name | Type | Description | Notes |
|---|---|---|---|
| userName | String | The name the sales team should address the reply to. It is sent as written and is not matched against any portal account; an empty value fails the request with 400. | [required] [example: John Doe] [minLength: 1] [maxLength: 255] |
| String | The address the answer is sent to. It has to be a well-formed email address and need not be the caller portal address; an empty or malformed value fails the request with 400. | [required] [example: user@example.com] [minLength: 1] [maxLength: 64] | |
| message | String | What is being asked of the sales team - a quote, an invoice, or a plan that cannot be bought online. An empty value fails the request with 400. | [required] [example: I would like to inquire about pricing] [minLength: 1] [maxLength: 255] |
Model SecurityArrayWrapper
The successful API response containing the list of SecurityDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of SecurityDto 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 SecurityDto
How access to one portal module is configured: whether it is restricted, and who is let in.
| Name | Type | Description | Notes |
|---|---|---|---|
| webItemId | String | The module this entry is about, echoed from the identifier that was asked about. When several identifiers are asked about at once, entries come back one per identifier and in the order they were sent, so they can also be matched by position. | [optional] [example: 00000000-0000-0000-0000-000000000000] [nullable] |
| users | List | The individual members the rule was stored for. Members the caller is not allowed to see are left out, so the same module can come back with different lists for different callers and an empty list does not prove that nobody was granted access. | [optional] [example: [{displayName=John Doe}]] [nullable] |
| groups | List | The groups the rule was stored for, listed in full - unlike users, nothing is filtered out of it. | [optional] [example: [{id=00000000-0000-0000-0000-000000000000, name=Administrators}]] [nullable] |
| enabled | Boolean | Whether access to the module is restricted to the subjects listed here. It is false for a module nobody has ever configured, in which case the two lists say nothing about who may open it. | [optional] [example: true] |
| isSubItem | Boolean | Whether the module hangs under another one rather than standing on its own. A sub-module is never returned by GET api/2.0/settings/security/modules, which lists top-level modules only. | [optional] [example: true] |
Model SecurityRequestsDto
Which member is granted or denied the administrator role of which portal module.
| Name | Type | Description | Notes |
|---|---|---|---|
| productId | UUID (uuid) | The module the role applies to, given by its GUID. The all-zero GUID stands for the portal itself and grants or revokes the DocSpace administrator role, which covers every module at once; a GUID that names no module group is stored without effect rather than refused. | [required] [example: 00000000-0000-0000-0000-000000000000] |
| userId | UUID (uuid) | The portal member the role is given to or taken from, by user ID. The member has to exist already - nobody is created here - and promoting a guest or a plain member turns them into a paid one. | [required] [example: 00000000-0000-0000-0000-000000000000] |
| administrator | Boolean | Which way the role goes: true adds the member to the module administrator group, false removes them from it. Taking away the portal-wide role also drops the member from every product group. | [optional] [example: true] |
Model ServicePriceInfo
Represents a price of the service.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The price unique identifier. | [optional] [example: 12345] |
| accountNumber | Integer (int32) | The account number. | [optional] [example: 1010] |
| serviceId | Integer (int32) | The service ID. | [optional] [example: 12345] |
| timeUnit | PriceTimeUnit | The time unit the price is bound to. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6] |
| costPrice | Double (double) | The cost price. | [optional] [example: 1500.75] |
| extraCharge | Double (double) | The extra charge added to the cost price. | [optional] [example: 1500.75] |
| servicePrice | Double (double) | The resulting service price. | [optional] [example: 1500.75] |
| quota | Double (double) | The quota the price is set for. | [optional] [example: 100] [nullable] |
| timeBound | TimeBound | The period the price is effective in. | [optional] |
| status | PriceStatus | The price status. | [optional] [enum: 0, 1, 2] |
| created | Date (date-time) | The date and time when the price was created. | [optional] [example: 2024-01-15T10:30:00Z] |
| discountCategoryId | Integer (int32) | The discount category ID. | [optional] [example: 12345] [nullable] |
| discountCategory | DiscountCategory | The discount category. | [optional] |
Model ServicePriceInfoArrayWrapper
The successful API response containing the list of ServicePriceInfo objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of ServicePriceInfo 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 SetAppEnabledBody
Whether a portal application is switched on.
| Name | Type | Description | Notes |
|---|---|---|---|
| enabled | Boolean | Whether the application is available in this portal. Switching it off leaves its settings document stored, so switching it back on restores the configuration it had; connected clients are told of the new state without a reload. | [optional] [example: true] |
Model SetAppSettingsBody
The configuration document a portal application keeps.
| Name | Type | Description | Notes |
|---|---|---|---|
| settings | SetAppSettingsBody_settings | [optional] |
Model SetAppSettingsBody.settings
The configuration the application reads, as any valid JSON value. Its shape is defined by the application and is neither validated nor interpreted by the portal, which stores it verbatim. It replaces the whole stored document rather than merging into it, and null drops it so the application falls back to its own defaults.
Model SetRestrictedAiModelsRequestDto
The complete set of AI chat models that are to be barred on the portal.
| Name | Type | Description | Notes |
|---|---|---|---|
| models | Set | The identifiers of the models no user of the portal may pick, taken from GET api/2.0/portal/payment/ai-prices. This is the whole set that is to hold afterwards and not a list of additions: send the models already barred together with the new one to add a restriction, leave one out to lift it, and send an empty set to lift them all. | [required] [example: [model1, model2]] |
Model SettingsDto
The general configuration of the current portal, as the client shell needs it before and after sign-in.
| Name | Type | Description | Notes |
|---|---|---|---|
| timezone | String | The portal time zone as an IANA identifier, which is the zone every date this API returns in portal time is expressed in. Filled in for a signed-in caller only. | [optional] [example: UTC] [nullable] |
| trustedDomains | List | The mail domains a new member may register or be invited from without confirming the address. It is filled in for a signed-in caller, and for an anonymous one only while enabledJoin is true; it is empty whenever trustedDomainsType is not Custom. | [optional] [example: [mydomain.com, mydomain1.com]] [nullable] |
| trustedDomainsType | TenantTrustedDomainsType | How the mail domains above are applied: no domain trusted, every domain trusted, or only the listed ones. Filled in under the same conditions as trustedDomains. | [optional] [enum: 0, 1, 2] |
| culture | String | The default language of the portal as a culture name, which is what unauthenticated pages are rendered in. A signed-in member may have a language of their own, and that one is not reported here. | [required] [example: en-US] [nullable] |
| utcOffset | String (date-span) | The portal's offset from UTC as a time span, positive east of UTC. Filled in for a signed-in caller only, and taken at the moment of the call, so it already reflects daylight saving time. | [optional] [example: -08:30:00] |
| utcHoursOffset | Double (double) | The same offset in hours, fractional for a zone that is not on a whole hour. It is there so a client does not have to parse utcOffset. | [optional] [example: -8.5] |
| greetingSettings | String | The portal title shown on the login page and in letters. It falls back to the product name in the portal language while the portal has been given no title of its own. | [optional] [example: Web Office Applications] [nullable] |
| ownerId | UUID (uuid) | The portal owner, the one account that cannot be removed or demoted. Filled in for a signed-in caller only, and the empty GUID for an anonymous one. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| nameSchemaId | String | The naming scheme the portal uses for its own vocabulary - what a member, a group or a room is called in the interface. GET api/2.0/settings/customschemas/{id} spells that vocabulary out. Filled in for a signed-in caller only. | [optional] [example: default] [nullable] |
| enabledJoin | Boolean | Whether someone who is not invited may still register, which is the case when the portal trusts every mail domain or a list of them. It is computed for an anonymous caller only and left out entirely for a signed-in one, so a missing value is not a false. | [optional] [example: true] [nullable] |
| enableAdmMess | Boolean | Whether the login page may offer the form for writing to the portal administrators. It is also true while the portal's payment has lapsed, whatever the setting says, so it can be set on a portal where an administrator switched the form off. | [optional] [example: true] [nullable] |
| thirdpartyEnable | Boolean | Whether the login page may offer sign-in through an external identity provider. It is computed for an anonymous caller only; GET api/2.0/capabilities reports the same thing with the list of providers. | [optional] [example: true] [nullable] |
| docSpace | Boolean | Always true in this product. It exists so a client that also talks to older ONLYOFFICE portals can tell them apart, and is not a feature switch. | [optional] [example: true] |
| standalone | Boolean | Whether this is a server installation someone administers themselves rather than a portal in the cloud. Several fields below and a number of operations behave differently in the two, so a client that has to branch on the deployment reads it here. | [optional] [example: true] |
| isAmi | Boolean | Whether the installation runs from an Amazon machine image, which is a server installation that can read its own instance metadata. It is false on every cloud portal. | [optional] [example: true] |
| baseDomain | String | The domain new portals of this installation are created under, which is what a portal name is checked against and appended to. It is empty on an installation that serves a single portal on a fixed address. | [required] [example: example.com] [nullable] |
| wizardToken | String | The token that authorizes the first-run setup wizard. It is handed out to anonymous callers only, and only while the wizard has not been completed; once it has, the field stays empty for good. | [optional] [example: dGhpc2lzYXRva2Vu...] [nullable] |
| passwordHash | PasswordHasher | The parameters for hashing a password in the client before it is sent - the salt, the iteration count and the hash size. It is filled in for an anonymous caller and, for a signed-in one, only when withPassword=true is asked for. Hash with exactly these parameters and send the result as passwordHash, since the portal cannot reproduce the hash from a different set. | [optional] |
| firebase | FirebaseDto | The Firebase project a mobile or web client sends push registrations to. Filled in for a signed-in caller only, and its own fields are empty strings on an installation that configures no Firebase project. | [optional] |
| version | String | The product version of the portal, empty when the installation does not publish one. It is the version of the server, not of this API, whose own version is fixed at 2.0. | [optional] [example: 12.5.0] [nullable] |
| recaptchaType | RecaptchaType | Which CAPTCHA the login form has to render, decided by the installation's configuration. Computed for an anonymous caller only. | [optional] [enum: 0, 1, 2, 3] |
| recaptchaPublicKey | String | The site key for the CAPTCHA named by recaptchaType, safe to embed in a page. It is empty when the installation configures no CAPTCHA, in which case the login form asks for none. | [optional] [example: abc123def456] [nullable] |
| debugInfo | Boolean | Whether the client may collect and send diagnostic information. Filled in for a signed-in caller only, and false unless the installation switched it on. | [optional] [example: true] |
| socketUrl | String | The address of the socket service that pushes live updates to a client. It is filled in for a signed-in caller and for an anonymous one who arrives with an external sharing link, and is empty when the installation runs no socket service - a client then has to poll. | [optional] [example: https://example.com] [nullable] |
| tenantStatus | TenantStatus | The lifecycle state of the portal. Anything other than active means most operations are refused for the moment, because the portal is being transferred, restored, encrypted or removed. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6] |
| tenantAlias | String | The portal's own name within the installation, which together with baseDomain forms the address it is reached at. PUT api/2.0/portal/portalrename changes it. | [optional] [example: mycompany] [nullable] |
| displayAbout | Boolean | Whether the interface may show the About page. A cloud portal always may; a server installation may unless its plan includes branding and the vendor details hide the page. | [optional] [example: true] |
| domainValidator | TenantDomainValidator | The rules a portal name is checked against - its length limits and the pattern it has to match - so a client can validate a rename before sending it. Filled in for a signed-in caller only. | [optional] |
| zendeskKey | String | The key that lets the client open the vendor's support chat, empty when the installation configures none. Filled in for a signed-in caller only. | [optional] [example: abc123def456] [nullable] |
| tagManagerId | String | The Google Tag Manager container the client should load, empty when the installation configures none. Filled in for a signed-in caller only. | [optional] [example: GTM-XXXXXX] [nullable] |
| cookieSettingsEnabled | Boolean | Whether the portal limits how long an authentication session stays valid. The limit itself is read with GET api/2.0/settings/cookiesettings; while this is false a session is honoured for a year. | [required] [example: true] |
| limitedAccessSpace | Boolean | Whether the space-management section is restricted to the portal owner. Filled in for a signed-in caller only. | [optional] [example: true] |
| limitedAccessDevToolsForUsers | Boolean | Whether the Developer Tools section is hidden from members who are not administrators. Filled in for a signed-in caller only. | [optional] [example: true] |
| displayBanners | Boolean | Whether the interface may show the vendor's promotional banners. A cloud portal always reports true; on a server installation it follows the banner setting. Filled in for a signed-in caller only. | [optional] [example: true] |
| aiEnabled | Boolean | Whether the AI features - chat, agents and vectorisation - may be used on this portal. While it is false the AI Agents folder is hidden and the AI operations are refused. Filled in for a signed-in caller only. | [optional] [example: true] |
| walletLowBalance | Boolean | Whether the portal wallet has already dropped below its low-balance threshold, so a client can warn about AI operations being cut off. It is reported to DocSpace administrators only and left empty for everyone else, which is not the same as a healthy balance. | [optional] [example: false] [nullable] |
| userNameRegex | String | The pattern a member's first and last name has to match, so a client can validate a name before sending it. It is a .NET regular expression and is applied to each name part separately. | [optional] [example: ^[a-zA-Z0-9_]{3,20}$] [nullable] |
| invitationLimit | Integer (int32) | How many invitations the portal may still send in the current window. Filled in for a signed-in caller only, and set to the maximum value of a 32-bit integer on an installation that limits nothing. | [optional] [example: 10] [nullable] |
| plugins | PluginsDto | What the installation allows to be done with web plugins. Filled in for a signed-in caller only, with all three flags false unless the installation switched plugins on. | [optional] |
| deepLink | DeepLinkDto | What a mobile client needs to hand a document link over to the installed application instead of opening it in the browser. Its fields are empty strings when the installation configures no application. | [required] |
| formGallery | FormGalleryDto | Where the ready-made form templates are served from and which extension they carry. Filled in for a signed-in caller only. | [optional] |
| maxImageUploadSize | Long (int64) | The largest image the portal accepts as a logo or an avatar, in bytes. Filled in for a signed-in caller only, and a larger upload is refused rather than resized. | [optional] [example: 10485760] |
| logoText | String | The wordmark to print next to the portal logo. It falls back to the built-in one while the portal has stored no text of its own, so it is never empty. | [optional] [example: Company Name] [nullable] |
| externalResources | CultureSpecificExternalResources | The addresses of the vendor's help, support, forum and video resources, already picked for the portal language. An entry is missing when the installation configures no address for it or the resource is switched off, which GET api/2.0/settings/rebranding/additional reports flag by flag. | [optional] |
| defaultFolderType | FolderType | The section the client should open after sign-in, which is the caller's own preference rather than a portal-wide one. Filled in for a signed-in caller only. | [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] |
| externalDbEnabled | Boolean | Whether the installation has an external database wired up for form results, without which the operations that write form results there are refused. Filled in for a signed-in caller only. | [optional] [example: true] |
Model SettingsWrapper
The successful API response containing the SettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | SettingsDto | The SettingsDto 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 SmtpOperationStatusRequestsDto
The state of the background job that sends the portal SMTP test message.
| Name | Type | Description | Notes |
|---|---|---|---|
| completed | Boolean | Whether the job has finished. This is the field to poll; the first answer that reports it true also discards the job, so read error out of that same answer rather than calling again. | [optional] [example: true] |
| id | String | The identifier of the queued job. A portal only ever has one test job at a time, so it names the run rather than selecting among several. | [optional] [example: smtp-op-123] [nullable] |
| error | String | Why the test failed. It stays empty while the job runs and also once the relay has accepted the message, so an empty value on a finished job is what success looks like; an unreachable relay is reported here after a 30-second connection timeout rather than as a failed request. | [optional] [example: SMTP connection failed.] [nullable] |
| status | String | The step the job has reached, in words - Connect to host or Send test message, for instance. It is meant to be shown to a person and is not a fixed set of values to branch on. | [optional] [example: Completed] [nullable] |
| percents | Integer (int32) | How far the job has got, as a percentage climbing to 100. Reaching 100 says the job ran to the end, not that the message was accepted - that is what an empty error says. | [optional] [example: 1] |
Model SmtpOperationStatusRequestsWrapper
The successful API response containing the SmtpOperationStatusRequestsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | SmtpOperationStatusRequestsDto | The SmtpOperationStatusRequestsDto 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 SmtpSettingsDto
The mail server the portal sends its letters through.
| Name | Type | Description | Notes |
|---|---|---|---|
| host | String | The host name or address of the mail server. On a cloud portal that has saved no relay of its own every field of this object comes back empty, because the installation's own server is not disclosed - only isDefaultSettings is set there. | [optional] [example: mail.example.com] [minLength: 0] [maxLength: 255] [nullable] |
| port | Integer (int32) | The port the mail server is reached on - conventionally 25 or 587 without encryption from the start, 465 with it. It is empty when no port was stored, in which case the portal falls back to its own default. | [optional] [example: 25] [min: 1] [max: 65535] [nullable] |
| senderAddress | String | The address the letters are sent from, which appears in the From header and is what a reply goes to. | [optional] [example: notify@example.com] [minLength: 0] [maxLength: 255] [nullable] |
| senderDisplayName | String | The name shown beside that address in a recipient's mailbox. | [optional] [example: Postman] [minLength: 0] [maxLength: 255] [nullable] |
| credentialsUserName | String | The account the portal signs in to the mail server as, meaningful only while enableAuth is true. | [optional] [example: notify@example.com] [minLength: 0] [maxLength: 255] [nullable] |
| credentialsUserPassword | String | Always empty here: the stored password is never returned, so a client that sends these settings back has to supply it again rather than echoing what it read. | [optional] [nullable] |
| enableSSL | Boolean | Whether the connection to the mail server is encrypted. | [optional] [example: true] |
| enableAuth | Boolean | Whether the portal signs in to the mail server at all. While it is false the credentials above are ignored and the server is expected to accept mail unauthenticated. | [optional] [example: true] |
| useNtlm | Boolean | Always false here: the flag is accepted when settings are saved but is not stored, so it never comes back set and says nothing about how the portal authenticates. | [optional] [example: false] |
| isDefaultSettings | Boolean | Whether the portal is still on the mail configuration of the installation rather than on a relay of its own. DELETE api/2.0/smtpsettings/smtp puts it back to true, and while it is true on a cloud portal the fields above are blank rather than showing the installation's server. | [optional] [example: true] |
Model SmtpSettingsWrapper
The successful API response containing the SmtpSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | SmtpSettingsDto | The SmtpSettingsDto 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 SocketSettingsDto
Where a client connects for the portal's live updates.
| Name | Type | Description | Notes |
|---|---|---|---|
| url | String | The base address of the Socket.IO hub that pushes file changes, presence and quota alerts, always with a trailing slash. It is empty when the installation runs no hub, and a client must then fall back to polling rather than guessing an address. The value comes from the installation's configuration and cannot be changed through this API. | [optional] [example: https://example.com/socket.io/] [nullable] |
Model SocketSettingsWrapper
The successful API response containing the SocketSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | SocketSettingsDto | The SocketSettingsDto 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 SsoBindingTypeDto
The SAML bindings the SSO settings accept.
| Name | Type | Description | Notes |
|---|---|---|---|
| saml20HttpPost | String | The SAML 2.0 HTTP POST binding, which carries the request in a self-submitting form. It is what the built-in configuration uses and the one to pick when requests are signed, since it has no length limit. | [optional] [example: urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST] [nullable] |
| saml20HttpRedirect | String | The SAML 2.0 HTTP redirect binding, which carries the request in the query string and is therefore bound by the length a URL may have. | [optional] [example: urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect] [nullable] |
Model SsoCertificate
The SSO certificate parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| selfSigned | Boolean | Specifies if a certificate is self-signed or not. | [optional] [example: false] |
| crt | String | The CRT certificate file. | [optional] [example: crt file] [nullable] |
| key | String | The certificate key. | [optional] [example: key] [nullable] |
| action | String | The certificate action. | [optional] [example: validate] [nullable] |
| domainName | String | The certificate domain name. | [optional] [example: example.com] [nullable] |
| startDate | Date (date-time) | The certificate start date. | [optional] [example: 2024-01-01T00:00:00Z] |
| expiredDate | Date (date-time) | The certificate expiration date. | [optional] [example: 2024-01-01T00:00:00Z] |
Model SsoEncryptAlgorithmTypeDto
The encryption algorithms the SSO settings accept.
| Name | Type | Description | Notes |
|---|---|---|---|
| aes128 | String | The AES-128-CBC encryption algorithm, which the built-in configuration uses. | [optional] [example: http://www.w3.org/2001/04/xmlenc#aes128-cbc] [nullable] |
| aes256 | String | The AES-256-CBC encryption algorithm, the strongest of the three. | [optional] [example: http://www.w3.org/2001/04/xmlenc#aes256-cbc] [nullable] |
| triDec | String | The Triple DES CBC encryption algorithm, kept for identity providers that support nothing newer. | [optional] [example: http://www.w3.org/2001/04/xmlenc#tripledes-cbc] [nullable] |
Model SsoFieldMapping
The SSO field mapping.
| Name | Type | Description | Notes |
|---|---|---|---|
| firstName | String | The first name. | [optional] [example: givenName] [nullable] |
| lastName | String | The last name. | [optional] [example: sn] [nullable] |
| String (email) | The email address. | [optional] [example: sn@example.com] [nullable] | |
| title | String | The title. | [optional] [example: SN] [nullable] |
| location | String | The location. | [optional] [example: Location] [nullable] |
| phone | String | The phone number. | [optional] [example: +14155552671] [nullable] |
Model SsoIdpCertificateActionTypeDto
What the identity provider's certificate may be used for, as the action of an identity provider certificate.
| Name | Type | Description | Notes |
|---|---|---|---|
| verification | String | The certificate verifies the signatures on what the provider sends, and nothing else - the counterpart of the service provider's signing action. | [optional] [example: verification] [nullable] |
| decrypt | String | The certificate is used to decrypt what the provider sends, but verifies no signature. | [optional] [example: decrypt] [nullable] |
| verificationAndDecrypt | String | The certificate does both, which is what a single provider certificate has to be set to. | [optional] [example: verification and decrypt] [nullable] |
Model SsoIdpCertificateAdvanced
The IdP advanced certificate parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| verifyAlgorithm | String | The certificate verification algorithm. | [optional] [example: rsa-sha256] [nullable] |
| verifyAuthResponsesSign | Boolean | Specifies if the signatures of the SAML authentication responses sent to SP will be verified or not. | [optional] [example: true] |
| verifyLogoutRequestsSign | Boolean | Specifies if the signatures of the SAML logout requests sent to SP will be verified or not. | [optional] [example: true] |
| verifyLogoutResponsesSign | Boolean | Specifies if the signatures of the SAML logout responses sent to SP will be verified or not. | [optional] [example: true] |
| decryptAlgorithm | String | The certificate decryption algorithm. | [optional] [example: aes256-cbc] [nullable] |
| decryptAssertions | Boolean | Specifies if the assertions will be decrypted or not. | [optional] [example: true] |
Model SsoIdpSettings
The SSO IdP settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| entityId | String | The entity ID. | [optional] [example: https://idp.company.com/saml] [nullable] |
| ssoUrl | String | The SSO URL. | [optional] [example: https://idp.example.com/sso] [nullable] |
| ssoBinding | String | The SSO binding. | [optional] [example: urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect] [nullable] |
| sloUrl | String | The SLO URL. | [optional] [example: https://idp.example.com/slo] [nullable] |
| sloBinding | String | The SLO binding. | [optional] [example: urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect] [nullable] |
| nameIdFormat | String | The name ID format. | [optional] [example: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress] [nullable] |
Model SsoNameIdFormatTypeDto
The SAML name ID formats the SSO settings accept.
| Name | Type | Description | Notes |
|---|---|---|---|
| saml11Unspecified | String | The SAML 1.1 unspecified name ID format. | [optional] [example: urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified] [nullable] |
| saml11EmailAddress | String | The SAML 1.1 email address name ID format. | [optional] [example: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress] [nullable] |
| saml20Entity | String | The SAML 2.0 entity name ID format. | [optional] [example: urn:oasis:names:tc:SAML:2.0:nameid-format:entity] [nullable] |
| saml20Transient | String | The SAML 2.0 transient name ID format, whose identifier differs from one session to the next. It is what the built-in configuration uses. | [optional] [example: urn:oasis:names:tc:SAML:2.0:nameid-format:transient] [nullable] |
| saml20Persistent | String | The SAML 2.0 persistent name ID format, whose identifier stays the same for one person across sessions. | [optional] [example: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent] [nullable] |
| saml20Encrypted | String | The SAML 2.0 encrypted name ID format. | [optional] [example: urn:oasis:names:tc:SAML:2.0:nameid-format:encrypted] [nullable] |
| saml20Unspecified | String | The SAML 2.0 unspecified name ID format. | [optional] [example: urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified] [nullable] |
| saml11X509SubjectName | String | The SAML 1.1 X.509 subject name name ID format. | [optional] [example: urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName] [nullable] |
| saml11WindowsDomainQualifiedName | String | The SAML 1.1 Windows domain qualified name name ID format. | [optional] [example: urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName] [nullable] |
| saml20Kerberos | String | The SAML 2.0 Kerberos name ID format. | [optional] [example: urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos] [nullable] |
Model SsoSettingsRequestsDto
The whole SAML Single Sign-On configuration of the portal, carried as a serialised JSON object.
| Name | Type | Description | Notes |
|---|---|---|---|
| serializeSettings | String | The configuration object serialised to a JSON string, not a nested object. It is the complete configuration rather than a patch - fields left out are stored empty - so start from GET api/2.0/settings/ssov2 or GET api/2.0/settings/ssov2/default and send back a changed copy. The identity provider entity ID and sign-in URL are required, the sign-in and sign-out URLs have to be absolute http or https addresses, and the attribute mapping has to name the first name, last name and email fields; the values each SAML field accepts are listed by GET api/2.0/settings/ssov2/constants. An empty string, or a string that carries no configuration object, is refused with 400. | [required] [example: {"enableSso":true,"idpSettings":{"entityId":"https://idp.example.com"}}] [nullable] |
Model SsoSettingsV2
The SSO portal settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
| enableSso | Boolean | Specifies if the SSO settings are enabled or not. | [optional] [example: false] [nullable] |
| idpSettings | SsoIdpSettings | The SSO IdP settings. | [optional] |
| idpCertificates | List | The list of the IdP certificates. | [optional] [example: [{crt=base64-cert-data, key=base64-key-data}]] [nullable] |
| idpCertificateAdvanced | SsoIdpCertificateAdvanced | The IdP advanced certificate. | [optional] |
| spLoginLabel | String | The SP login label. | [optional] [example: Single Sign-on] [nullable] |
| spCertificates | List | The list of the SP certificates. | [optional] [example: [{crt=base64-cert-data, key=base64-key-data}]] [nullable] |
| spCertificateAdvanced | SsoSpCertificateAdvanced | The SP advanced certificate. | [optional] |
| fieldMapping | SsoFieldMapping | The SSO field mapping. | [optional] |
| hideAuthPage | Boolean | Specifies if the authentication page will be hidden or not. | [optional] [example: false] |
| usersType | Integer (int32) | The user type. | [optional] [example: 1] |
| disableEmailVerification | Boolean | Specifies if the email verification is disabled or not. | [optional] [example: false] |
Model SsoSettingsV2ConstantsDto
The SSO settings constants: every value the settings accept, by name.
| Name | Type | Description | Notes |
|---|---|---|---|
| ssoNameIdFormatType | SsoNameIdFormatTypeDto | The values the nameIdFormat of the identity provider settings accepts. The built-in configuration uses the SAML 2.0 transient format. | [optional] |
| ssoBindingType | SsoBindingTypeDto | The values the ssoBinding and sloBinding of the identity provider settings accept - how the portal sends its sign-in and sign-out requests. The built-in configuration uses HTTP POST for both. | [optional] |
| ssoSigningAlgorithmType | SsoSigningAlgorithmTypeDto | The values the signingAlgorithm of the service provider certificate and the verifyAlgorithm of the identity provider certificate accept. The built-in configuration uses RSA-SHA1 for both. | [optional] |
| ssoEncryptAlgorithmType | SsoEncryptAlgorithmTypeDto | The values the encryptAlgorithm and decryptAlgorithm of the certificate settings accept. The built-in configuration uses AES-128 everywhere. | [optional] |
| ssoSpCertificateActionType | SsoSpCertificateActionTypeDto | The values the action of a service provider certificate accepts, which is what the portal's own key pair may be used for. | [optional] |
| ssoIdpCertificateActionType | SsoIdpCertificateActionTypeDto | The values the action of an identity provider certificate accepts, which is what the provider's certificate may be used for - the mirror image of the service provider actions. | [optional] |
Model SsoSettingsV2ConstantsWrapper
The successful API response containing the SsoSettingsV2ConstantsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | SsoSettingsV2ConstantsDto | The SsoSettingsV2ConstantsDto 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 SsoSettingsV2Wrapper
The successful API response containing the SsoSettingsV2 object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | SsoSettingsV2 | The SsoSettingsV2 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 SsoSigningAlgorithmTypeDto
The signing algorithms the SSO settings accept.
| Name | Type | Description | Notes |
|---|---|---|---|
| rsaSha1 | String | The RSA-SHA1 signing algorithm, which the built-in configuration uses. SHA-1 is the weakest of the three and some identity providers no longer accept it. | [optional] [example: http://www.w3.org/2000/09/xmldsig#rsa-sha1] [nullable] |
| rsaSha256 | String | The RSA-SHA256 signing algorithm. | [optional] [example: http://www.w3.org/2001/04/xmldsig-more#rsa-sha256] [nullable] |
| rsaSha512 | String | The RSA-SHA512 signing algorithm. | [optional] [example: http://www.w3.org/2001/04/xmldsig-more#rsa-sha512] [nullable] |
Model SsoSpCertificateActionTypeDto
What the portal's own key pair may be used for, as the action of a service provider certificate.
| Name | Type | Description | Notes |
|---|---|---|---|
| signing | String | The key pair signs the requests the portal sends and nothing else. | [optional] [example: signing] [nullable] |
| encrypt | String | The key pair encrypts what the portal sends and decrypts what comes back, but signs nothing. | [optional] [example: encrypt] [nullable] |
| signingAndEncrypt | String | The key pair does both, which is what one pair configured on its own has to be set to. | [optional] [example: signing and encrypt] [nullable] |
Model SsoSpCertificateAdvanced
The SP advanced certificate parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| signingAlgorithm | String | The certificate signing algorithm. | [optional] [example: rsa-sha256] [nullable] |
| signAuthRequests | Boolean | Specifies if SP will sign the SAML authentication requests sent to IdP or not. | [optional] [example: true] |
| signLogoutRequests | Boolean | Specifies if SP will sign the SAML logout requests sent to IdP or not. | [optional] [example: true] |
| signLogoutResponses | Boolean | Specifies if SP will sign the SAML logout responses sent to IdP or not. | [optional] [example: true] |
| encryptAlgorithm | String | The certificate encryption algorithm. | [optional] [example: aes256-cbc] [nullable] |
| decryptAlgorithm | String | The certificate decryption algorithm. | [optional] [example: aes256-cbc] [nullable] |
| encryptAssertions | Boolean | Specifies if the assertions will be encrypted or not. | [optional] [example: true] |
Model StorageArrayWrapper
The successful API response containing the list of StorageDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of StorageDto 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 StorageDto
One third-party storage provider the portal data can be kept in, with the keys it expects.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The provider's key, which is what PUT api/2.0/settings/storage and its CDN and backup counterparts take as the storage to switch to. The built-in local storage has no entry of its own: a listing in which nothing is current means the data sits locally. | [required] [example: s3] [nullable] |
| title | String | The provider name in the portal language, falling back to id when this build ships no wording for it. | [required] [example: Amazon AWS S3] [nullable] |
| properties | List | The settings the provider expects, each with its key, its localised label and the value the server currently holds. For the entry marked current the values come from the portal's saved storage settings and for the others from the installation configuration, so a setting nobody has configured comes back with an empty value rather than being left out. | [optional] [example: [{name=acesskey, value=AKIAIOSFODNN7EXAMPLE, title=Access key}]] [nullable] |
| current | Boolean | Whether the portal is using this provider right now. At most one entry of a listing has it set. | [required] [example: true] |
| isSet | Boolean | Whether the provider's keys are already filled in on the server, so it could be switched to without sending credentials. It says nothing about whether the credentials still work. | [required] [example: true] |
Model StorageEncryptionRequestsDto
Whether the users are warned before the portals go down for the storage encryption pass.
| Name | Type | Description | Notes |
|---|---|---|---|
| notifyUsers | Boolean | Whether every user of every portal on the server is mailed before the encryption or decryption pass starts. The pass runs either way; the flag only decides whether people are told that their portal is about to become unavailable. | [optional] [example: true] |
Model StorageRequestsDto
Which storage provider the portal is pointed at, and the credentials it needs.
| Name | Type | Description | Notes |
|---|---|---|---|
| module | String | The storage provider to switch to, by the identifier the matching listing operation reports - default for the built-in local storage. The provider has to be available on the server, which that listing reports as isSet, otherwise the request is refused with 400; sending the module already in use changes nothing. | [required] [example: default] [nullable] |
| props | List | The credentials the provider expects, as the name and value pairs it defines - a bucket, a region and an access key for an Amazon S3 storage, for instance. Read the expected names from the entry of that provider in the listing operation; they differ per provider, so there is no fixed set. | [optional] [example: [item1, item2]] [nullable] |
Model StorageSettings
The storage settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| module | String | The storage name. | [optional] [example: LocalStorage] [nullable] |
| props | Map | The storage properties. | [optional] [example: {region=eu-central-1, bucket=tenant-files}] |
| lastModified | Date (date-time) | The date and time when the storage settings were last modified. | [optional] [example: 2025-01-01T12:00:00Z] |
Model StorageSettingsWrapper
The successful API response containing the StorageSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | StorageSettings | The StorageSettings 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 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 StudioDefaultPageSettings
The settings that define the folder opened by default after sign-in.
| Name | Type | Description | Notes |
|---|---|---|---|
| defaultFolderType | FolderType | Specifies the type of the default folder associated with the settings. | [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] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
Model StudioDefaultPageSettingsWrapper
The successful API response containing the StudioDefaultPageSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | StudioDefaultPageSettings | The StudioDefaultPageSettings 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 SubAccount
Represents a sub-account with a specific currency and balance.
| Name | Type | Description | Notes |
|---|---|---|---|
| currency | String | The three-character ISO 4217 currency symbol. | [optional] [example: "USD"] [nullable] |
| amount | Double (double) | The amount in the specified currency. | [optional] [example: 1500.75] |
Model SubscriptionBalanceInfo
The information about the current subscription and its unused balance.
| Name | Type | Description | Notes |
|---|---|---|---|
| totalCost | Double (double) | The total cost of the current billing period (the sum across all subscription items). | [optional] [example: 120.0] |
| currency | String | The three-character ISO 4217 currency symbol of the subscription. | [optional] [example: USD] [nullable] |
| periodStart | Date (date-time) | The start of the current billing period. | [optional] [example: 2026-06-01T00:00:00Z] |
| periodEnd | Date (date-time) | The end of the current billing period. | [optional] [example: 2026-07-01T00:00:00Z] |
| periodUsedUntil | Date (date-time) | The boundary of the used part of the period (the moment of the request). | [optional] [example: 2026-06-23T14:35:00Z] |
| daysElapsed | Integer (int32) | The number of days elapsed since the start of the period (inclusive). | [optional] [example: 23] |
| remainingBalance | Double (double) | The unused balance of the subscription, in the subscription currency. | [optional] [example: 87.74] |
| remainingBalanceInWalletCurrency | Double (double) | The unused balance of the subscription, converted to the wallet currency. | [optional] [example: 87.74] |
| walletCurrency | String | The three-character ISO 4217 currency symbol of the wallet. | [optional] [example: USD] [nullable] |
Model SubscriptionBalanceInfoWrapper
The successful API response containing the SubscriptionBalanceInfo object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | SubscriptionBalanceInfo | The SubscriptionBalanceInfo 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 TariffDto
The subscription this portal runs on: its state, the end of the current period, and the quotas it is made of.
| Name | Type | Description | Notes |
|---|---|---|---|
| openSource | Boolean | Whether the installation runs the open-source build, which has no paid plan at all. This flag and the two below describe the build rather than the subscription, and all three are left empty for a caller without the portal-settings right. | [optional] [example: false] [nullable] |
| enterprise | Boolean | Whether the installation runs on an Enterprise licence file, which is what makes the licence operations under api/2.0/settings/license usable. | [optional] [example: true] [nullable] |
| developer | Boolean | Whether the installation runs on a Developer licence, an Enterprise licence meant for embedding rather than for production use. | [optional] [example: false] [nullable] |
| id | Integer (int32) | The identifier of the subscription record itself, for quoting when a charge has to be traced. It is filled in for a caller with the portal-settings right only, and nothing accepts it as an argument. | [optional] [example: 1] |
| state | TariffState | How the subscription stands: on trial, paid, inside the grace period that follows the due date, or unpaid. It is the one field every caller gets, whatever their role, so a client can warn about payment without needing administrator rights. | [optional] [enum: 0, 1, 2, 3] |
| dueDate | ApiDateTime | When the current period ends, in the portal time zone. It is filled in for a room or DocSpace administrator only, and set to the largest value a date can hold for a subscription that never ends. | [optional] |
| delayDueDate | ApiDateTime | When the grace period after dueDate runs out and the portal is cut off, in the portal time zone. Filled in under the same conditions as dueDate, and equal to it when the plan grants no grace period. | [optional] |
| licenseDate | ApiDateTime | When the licence file behind the subscription was issued, in the portal time zone. It is meaningful on a server installation and filled in for a caller with the portal-settings right only. | [optional] |
| customerId | String | The account in the billing system the subscription is charged to, empty for a portal that has never been billed. Filled in for a caller with the portal-settings right only. | [optional] [example: 00000000-0000-0000-0000-000000000001] [nullable] |
| quotas | List | The quotas the subscription is made of - the plan itself and its add-ons - with the overdue ones listed alongside the current ones, so an entry here is not proof that it is still being paid for; read each entry's own state for that. Filled in for a caller with the portal-settings right only. | [optional] [example: [{id=1, quantity=500}]] [nullable] |
Model TariffQuotaDto
One quota the subscription is made of - the plan itself or an add-on - with its quantity and its own deadline.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The quota this entry stands for. GET api/2.0/portal/payment/quotas describes the quota behind the ID, including what its quantity counts; a negative ID belongs to a built-in quota rather than a purchased one. | [optional] [example: -11] |
| quantity | Integer (int32) | How much of the quota the portal holds, in whatever the quota itself is measured in - seats for a plan, gigabytes for storage. It is 1 for a quota that is simply on or off. | [optional] [example: 500] |
| wallet | Boolean | Whether the quota is paid for out of the portal wallet as it is consumed, rather than being part of the subscription charged per period. | [optional] [example: true] |
| additional | Boolean | Whether this is an add-on bought on top of the plan rather than the plan itself. Exactly one entry of quotas is the plan, and the rest are add-ons. | [optional] [example: true] |
| dueDate | ApiDateTime | When this quota runs out, in the portal time zone. An add-on can end earlier or later than the subscription; a quota with no deadline of its own reports the subscription's dueDate instead of an empty value. | [optional] |
| nextQuantity | Integer (int32) | The quantity the next period is going to be charged for, when a change has been scheduled. It is empty while quantity simply carries over. | [optional] [example: 100] [nullable] |
| nextQuota | Integer (int32) | The quota this one is scheduled to be replaced by at the start of the next period, empty when no such switch is planned. GET api/2.0/portal/tariff/upcoming already reports the charge for the replacement. | [optional] [example: 2] [nullable] |
| state | QuotaState | Whether the quota is still running or its deadline has passed. It is empty for a quota that has no deadline of its own, which means it lasts as long as the subscription does. | [optional] [enum: 0, 1] |
Model TariffState
Possible values:
0— Trial (Trial)1— Paid (Paid)2— Delay (Delay)3— Not paid (NotPaid)
Model TariffWrapper
The successful API response containing the TariffDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TariffDto | The TariffDto 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 TelegramStatusDto
Whether the calling user's account is linked to the portal's Telegram bot.
| Name | Type | Description | Notes |
|---|---|---|---|
| status | RegStatus | Where the caller's own account stands: not linked, linked, or a registration link issued and the portal still waiting for it to be opened in Telegram. The waiting state ends on its own when the link expires, so it is worth polling rather than treating as final. | [required] [enum: 0, 1, 2] |
| username | String | The Telegram handle the account is linked to, without the leading @. It is filled in only while the account is linked and comes back empty in the other two states. | [optional] [example: john_doe] [nullable] |
Model TelegramStatusWrapper
The successful API response containing the TelegramStatusDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TelegramStatusDto | The TelegramStatusDto 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 TenantAiAccessSettings
The tenant-level settings for enabling or disabling all AI functionality in DocSpace.
| Name | Type | Description | Notes |
|---|---|---|---|
| enabled | Boolean | Specifies whether AI functionality is enabled for the tenant. When set to false, all AI features (chat, agents, vectorization) are disabled tenant-wide. | [optional] [example: true] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
Model TenantAiAccessSettingsDto
Whether AI functionality is available on the portal.
| Name | Type | Description | Notes |
|---|---|---|---|
| enabled | Boolean | Whether AI is available on the portal at all - chat, agents and vectorization together. Switching it off hides the AI Agents folder and makes every AI endpoint unreachable for all members at once, not only for the caller, and the change is pushed to connected clients rather than waiting for their next request. | [optional] [example: false] |
Model TenantAiAccessSettingsWrapper
The successful API response containing the TenantAiAccessSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantAiAccessSettings | The TenantAiAccessSettings 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 TenantAiAgentQuotaSettings
The AI agent quota settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| enableQuota | Boolean | Specifies if the quota is enabled for the tenant entity or not. | [optional] |
| defaultQuota | Long (int64) | The default quota of the tenant entity. | [optional] |
| lastRecalculateDate | Date (date-time) | The date of the last quota recalculation. | [optional] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] |
Model TenantAiAgentQuotaSettingsWrapper
The successful API response containing the TenantAiAgentQuotaSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantAiAgentQuotaSettings | The TenantAiAgentQuotaSettings 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 TenantAuditSettings
The tenant audit settings parameters.
| Name | Type | Description | Notes |
|---|---|---|---|
| loginHistoryLifeTime | Integer (int32) | The login history lifetime. | [optional] [example: 180] |
| auditTrailLifeTime | Integer (int32) | The audit trail lifetime. | [optional] [example: 180] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
Model TenantAuditSettingsResponseWrapper
The successful API response containing the TenantAuditSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantAuditSettings | The TenantAuditSettings 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 TenantAuditSettingsWrapper
The tenant audit settings wrapper.
| Name | Type | Description | Notes |
|---|---|---|---|
| settings | TenantAuditSettings | The tenant audit settings parameters. | [optional] |
Model TenantBannerSettings
The visibility settings of the promotional banners.
| Name | Type | Description | Notes |
|---|---|---|---|
| hidden | Boolean | The banners visibility flag. | [optional] [example: false] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
Model TenantBannerSettingsDto
Whether the portal promotional banners are hidden.
| Name | Type | Description | Notes |
|---|---|---|---|
| hidden | Boolean | Whether the promotional banners are hidden from every user of the portal. The flag is only honoured on a self-hosted installation; a SaaS portal keeps showing the banners whatever is stored here. | [optional] [example: true] |
Model TenantBannerSettingsWrapper
The successful API response containing the TenantBannerSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantBannerSettings | The TenantBannerSettings 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 TenantDeepLinkSettings
The deep link settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| handlingMode | DeepLinkHandlingMode | The deep link handling mode. | [optional] [enum: 0, 1, 2] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
Model TenantDeepLinkSettingsWrapper
The successful API response containing the TenantDeepLinkSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantDeepLinkSettings | The TenantDeepLinkSettings 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 TenantDevToolsAccessSettings
The Developer Tools access settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| limitedAccessForUsers | Boolean | Specifies if the Developer Tools access are limited for users or not. | [optional] [example: false] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
Model TenantDevToolsAccessSettingsDto
Whether the User role is barred from the portal developer tools.
| Name | Type | Description | Notes |
|---|---|---|---|
| limitedAccessForUsers | Boolean | Whether members holding the User role are barred from the developer tools - API keys, OAuth applications and webhooks. Room administrators and DocSpace administrators keep their access either way. | [optional] [example: false] |
Model TenantDevToolsAccessSettingsWrapper
The successful API response containing the TenantDevToolsAccessSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantDevToolsAccessSettings | The TenantDevToolsAccessSettings 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 TenantDomainValidator
The domain validator.
| Name | Type | Description | Notes |
|---|---|---|---|
| regex | String | The regex string to validate a domain. | [optional] [example: ^[a-z0-9]([a-z0-9-]){1,61}[a-z0-9]$] [nullable] |
| minLength | Integer (int32) | The minimum length of the valid domain. | [optional] [example: 6] |
| maxLength | Integer (int32) | The maximum length of the valid domain. | [optional] [example: 63] |
Model TenantDto
The record of one portal: its name, owner, language, time zone and lifecycle state.
| Name | Type | Description | Notes |
|---|---|---|---|
| affiliateId | String | The partner the portal was signed up through, empty for a portal that came in directly. It is bookkeeping for the vendor and has no bearing on what the portal may do. | [optional] [example: AFF12345] [nullable] |
| tenantAlias | String | The portal's own name within the installation, which together with the installation's base domain forms the address it is reached at. A caller without the portal-settings right gets tenantId alone, so an empty value here is the sign that the rest of this object was withheld rather than unset. | [optional] [example: my-company] [nullable] |
| calls | Boolean | Whether telephony is switched on for the portal. It is carried over from portal registration and stays false on a DocSpace portal, where the feature does not exist. | [optional] [example: true] |
| campaign | String | The marketing campaign the portal was signed up under, empty for a portal that came in outside one. Like affiliateId, it is bookkeeping only. | [optional] [example: WINTER2024] [nullable] |
| creationDateTime | Date (date-time) | When the portal was created, in UTC rather than in the portal time zone. | [optional] [example: 2024-01-15T10:30:00Z] |
| hostedRegion | String | The data-centre region written on the portal record itself, as opposed to region, which is looked up from the hosting service. It is empty on a server installation. | [optional] [example: EU] [nullable] |
| tenantId | Integer (int32) | The numeric identifier of the portal inside the installation. It is the one field every caller gets, whatever their rights. | [optional] [example: 1] |
| industry | TenantIndustry | The line of business chosen when the portal was created. It only steers what the vendor suggests and restricts nothing. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] |
| language | String | The default language of the portal as a culture name, the same value GET api/2.0/settings reports as culture. A member may have a language of their own, which this does not reflect. | [optional] [example: en-US] [nullable] |
| lastModified | Date (date-time) | When any field of this record last changed, in UTC. It does not move when portal settings outside this record are changed. | [optional] [example: 2024-02-10T14:20:00Z] |
| mappedDomain | String | The custom domain the portal answers on in addition to its own address, empty when none has been set up. | [optional] [example: mycompany.example.com] [nullable] |
| name | String | The portal title as shown to people, which is what GET api/2.0/settings returns as greetingSettings. It is free text, unlike tenantAlias, and empty until someone sets it. | [optional] [example: My Company] [nullable] |
| ownerId | UUID (uuid) | The portal owner, the one account that cannot be removed or demoted. PUT api/2.0/settings/owner hands the role over. | [optional] [example: 00000000-0000-0000-0000-000000000001] |
| paymentId | String | The portal's identifier in the billing system, empty for a portal that has never been billed. The subscription itself is read with GET api/2.0/portal/tariff. | [optional] [example: PAY123456789] [nullable] |
| spam | Boolean | Whether the owner agreed to receive the vendor's newsletter. Despite the name it does not mark the portal as a spammer and affects nothing but marketing mail. | [optional] [example: false] |
| status | TenantStatus | The lifecycle state of the portal. Anything other than active means most operations are refused for the moment, because the portal is being transferred, restored, encrypted or removed. | [optional] [enum: 0, 1, 2, 3, 4, 5, 6] |
| statusChangeDate | Date (date-time) | When status last changed, in UTC. For a portal pending removal it is the moment the countdown to deletion started. | [optional] [example: 2024-01-15T10:30:00Z] |
| timeZone | String | The portal time zone, which is the zone the dates this API calls portal time are expressed in. It may be stored as a Windows identifier here, while GET api/2.0/settings always reports the IANA form. | [optional] [example: America/New_York] [nullable] |
| trustedDomains | List | The mail domains a new member may register or be invited from without confirming the address. It is empty whenever trustedDomainsType is not Custom. | [optional] [example: [example.com, trusted.com]] [nullable] |
| trustedDomainsRaw | String | The same domains as the single stored string they are kept in, separated by commas. Read trustedDomains instead; this one exists because it is what the record holds. | [optional] [example: example.com,trusted.com] [nullable] |
| trustedDomainsType | TenantTrustedDomainsType | How the mail domains are applied: no domain trusted, every domain trusted, or only the listed ones. Only the last of the three makes trustedDomains meaningful. | [optional] [enum: 0, 1, 2] |
| version | Integer (int32) | The identifier of the portal version the installation pins this portal to, which is an internal number and not the product version string that GET api/2.0/settings reports as version. | [optional] [example: 2] |
| versionChanged | Date (date-time) | When version last changed, in UTC. It stays at its zero value on a portal whose version has never been switched. | [optional] [example: 2024-02-01T09:00:00Z] |
| region | String | The data-centre region the portal is actually served from, looked up from the hosting service. It is empty on a server installation and also whenever the installation's portal cache is switched off, so an empty value does not mean the portal has no region - hostedRegion is the value from the record itself. | [optional] [example: us-east-1] [nullable] |
Model TenantEntityQuotaSettings
The tenant entity quota settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| enableQuota | Boolean | Specifies if the quota is enabled for the tenant entity or not. | [optional] [example: true] |
| defaultQuota | Long (int64) | The default quota of the tenant entity. | [optional] [example: 1000] |
| lastRecalculateDate | Date (date-time) | The date of the last quota recalculation. | [optional] [example: 2024-01-01T00:00:00Z] [nullable] |
Model TenantIndustry
Possible values:
0— Other (Other)1— Accounting (Accounting)2— Advertising marketing PR (AdvertisingMarketingPR)3— Banking (Banking)4— Consulting (Consulting)5— Design (Design)6— Education (Education)7— Environment (Environment)8— Financial services (FinancialServices)9— Health care (HealthCare)10— IT (IT)11— Legal (Legal)12— Manufacturing (Manufacturing)13— Public sector (PublicSector)14— Publishing (Publishing)15— Retail sales (RetailSales)16— Telecommunications (Telecommunications)
Model TenantQuota
The current tenant quota.
| Name | Type | Description | Notes |
|---|---|---|---|
| tenantId | Integer (int32) | The tenant ID. | [optional] [example: 1] |
| name | String | The tenant name. | [optional] [example: Default] [nullable] |
| price | Double (double) | The tenant price. | [optional] [example: 10.0] |
| priceCurrencySymbol | String | The tenant price currency symbol. | [optional] [example: $] [nullable] |
| priceISOCurrencySymbol | String | The tenant price three-character ISO 4217 currency symbol. | [optional] [example: USD] [nullable] |
| productId | String | The tenant product ID. | [optional] [example: 64] [nullable] |
| serviceName | String | The service name. | [optional] [example: backup] [nullable] |
| serviceGroup | String | The service group. | [optional] [example: services] [nullable] |
| visible | Boolean | Specifies if the tenant quota is visible or not. | [optional] [example: true] |
| wallet | Boolean | Specifies if the tenant quota applies to the wallet or not | [optional] [example: true] |
| additional | Boolean | Specifies if the tenant quota is primary or additional. | [optional] [example: false] |
| dueDate | Date (date-time) | The quota due date. | [optional] [example: 2021-01-01T00:00:00] [nullable] |
| features | String | The tenant quota features. | [optional] [example: audit,ldap,sso] [nullable] |
| maxFileSize | Long (int64) | The tenant maximum file size. | [optional] [example: 25000000] |
| maxTotalSize | Long (int64) | The tenant maximum total size. | [optional] [example: 25000000000] |
| countUser | Integer (int32) | The number of portal users. | [optional] [example: 100] |
| countRoomAdmin | Integer (int32) | The number of portal room administrators. | [optional] [example: 10] |
| usersInRoom | Integer (int32) | The number of room users. | [optional] [example: 50] |
| countRoom | Integer (int32) | The number of rooms. | [optional] [example: 500] |
| nonProfit | Boolean | Specifies if the tenant quota is nonprofit or not. | [optional] [example: false] |
| trial | Boolean | Specifies if the tenant quota is trial or not. | [optional] [example: false] |
| free | Boolean | Specifies if the tenant quota is free or not. | [optional] [example: false] |
| update | Boolean | Specifies if the tenant quota is updated or not. | [optional] [example: false] |
| audit | Boolean | Specifies if the audit trail is available or not. | [optional] [example: true] |
| docsEdition | Boolean | Specifies if ONLYOFFICE Docs is included in the tenant quota or not. | [optional] [example: true] |
| ldap | Boolean | Specifies if the LDAP settings are available or not. | [optional] [example: true] |
| sso | Boolean | Specifies if the SSO settings are available or not. | [optional] [example: true] |
| statistic | Boolean | Specifies if the statistics settings are available or not. | [optional] [example: true] |
| branding | Boolean | Specifies if the branding settings are available or not. | [optional] [example: true] |
| customization | Boolean | Specifies if the customization settings are available or not. | [optional] [example: true] |
| lifetime | Boolean | Specifies if the license has the lifetime settings or not. | [optional] [example: false] |
| automationApi | Boolean | Specifies if the Automation API is available or not. | [optional] [example: true] |
| custom | Boolean | Specifies if the custom domain URL is available or not. | [optional] [example: false] |
| restore | Boolean | Specifies if the restore is enabled or not. | [optional] [example: true] |
| oauth | Boolean | Specifies if Oauth is available or not. | [optional] [example: true] |
| contentSearch | Boolean | Specifies if the content search is available or not. | [optional] [example: true] |
| thirdParty | Boolean | Specifies if the third-party accounts linking is available or not. | [optional] [example: true] |
| year | Boolean | Specifies if the tenant quota is yearly subscription or not. | [optional] [example: true] |
| countFreeBackup | Integer (int32) | The number of free backups within a month. | [optional] [example: 1] |
| backup | Boolean | Specifies if the backup enabled as a wallet service or not. | [optional] [example: true] |
| countAIAgent | Integer (int32) | The number of AI agents. | [optional] [example: 5] |
| aiTools | Boolean | Specifies if the AI tools enabled as a wallet service or not. | [optional] [example: true] |
| aiSearch | Boolean | Specifies if the AI search enabled as a wallet service or not. | [optional] [example: true] |
| docsCloud | Integer (int32) | The number of Docs Connect users. | [optional] [example: true] |
| docsCloudDevPack | Boolean | Specifies if the Docs Connect Dev Pack enabled or not. | [optional] [example: true] |
| docsCloudTrial | Boolean | Specifies if the Docs Connect trial enabled or not. | [optional] [example: true] |
Model TenantQuotaFeatureDto
One feature a quota switches on, with the limit it grants and how much of that limit is used.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The stable key of the feature - total_size, manager, room, backup and so on. It is the value to branch on, since title is prose in the portal language. | [optional] [example: total_size] [nullable] |
| title | String | The feature described in the portal language, with its limit already substituted into the sentence, so it can be printed as it is. It is empty when this build ships no wording for the feature. | [optional] [example: Premium Storage] [nullable] |
| image | String | The feature's icon as SVG markup to render inline - not a URL to fetch. It is filled in only when the quota comes from the catalogue, and left empty on the quota the portal is actually on, on a feature that this quota switches off, and on a feature that ships no icon. | [optional] [example: <svg viewBox="0 0 24 24"><path d="..."/></svg>] [nullable] |
| value | oas_any_type_not_mapped | [optional] [nullable] | |
| type | String | How to read value and used: size for bytes, count for a number of things, flag for a feature that is merely on or off. | [optional] [example: size] [nullable] |
| used | FeatureUsedDto | How much of the limit is already used. It is present only on the quota the portal is actually on, and only for a feature whose consumption is counted; a guest is shown none of these figures and a plain member only the one for total size, so an absent value can mean the caller may not see it rather than that nothing is used. | [optional] |
| priceTitle | String | What the feature is charged as, in the portal language - for instance the per-unit price of an add-on. It is filled in only for a feature that costs money on top of the plan. | [optional] [example: $9.99/month] [nullable] |
Model TenantQuotaSettings
The tenant quota settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| enableQuota | Boolean | Specifies if the tenant quota is enabled or not. | [optional] [example: true] |
| quota | Long (int64) | The tenant quota. | [optional] [example: 10737418240] |
| lastRecalculateDate | Date (date-time) | The date of the last tenant quota recalculation. | [optional] [example: 1990-01-01T00:00:00Z] [nullable] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
Model TenantQuotaSettingsRequestsDto
The storage limit set on one tenant of a self-hosted installation.
| Name | Type | Description | Notes |
|---|---|---|---|
| tenantId | Integer (int32) | The tenant the limit applies to, by tenant ID. Only a self-hosted installation has more than one, which is why the operation is refused on SaaS. | [required] [example: 1] |
| quota | Long (int64) | The limit in bytes. A negative value is not a smaller limit but the absence of one: it removes whatever limit the tenant had. The value is a ceiling on stored data and says nothing about how much of it is already used. | [optional] [example: 1048576] |
Model TenantQuotaSettingsWrapper
The successful API response containing the TenantQuotaSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantQuotaSettings | The TenantQuotaSettings 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 TenantQuotaWrapper
The successful API response containing the TenantQuota object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantQuota | The TenantQuota 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 TenantRoomQuotaSettings
The room quota settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| enableQuota | Boolean | Specifies if the quota is enabled for the tenant entity or not. | [optional] |
| defaultQuota | Long (int64) | The default quota of the tenant entity. | [optional] |
| lastRecalculateDate | Date (date-time) | The date of the last quota recalculation. | [optional] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] |
Model TenantRoomQuotaSettingsWrapper
The successful API response containing the TenantRoomQuotaSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantRoomQuotaSettings | The TenantRoomQuotaSettings 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 TenantStatus
Possible values:
0— Active (Active)1— Suspended (Suspended)2— Remove pending (RemovePending)3— Transfering (Transfering)4— Restoring (Restoring)5— Migrating (Migrating)6— Encryption (Encryption)
Model TenantTrustedDomainsType
Possible values:
0— None (None)1— Custom (Custom)2— All (All)
Model TenantUserInvitationSettingsDto
Whether the portal currently lets anyone be invited into it, member and guest kept apart.
| Name | Type | Description | Notes |
|---|---|---|---|
| allowInvitingMembers | Boolean | Whether new members may be invited through the Contacts section. Switching it off stops new invitations from being created; links already handed out keep working and members already invited stay. | [required] [example: true] |
| allowInvitingGuests | Boolean | Whether every member, and not only an administrator, may invite an outside guest into a room. It is independent of allowInvitingMembers, and switching it off has the same forward-only effect. | [required] [example: false] |
Model TenantUserInvitationSettingsRequestDto
Whether the portal still lets its members invite new members and new guests.
| Name | Type | Description | Notes |
|---|---|---|---|
| allowInvitingMembers | Boolean | Whether new DocSpace members may be invited through the Contacts section. Switching it off only stops new invitations being created; links already issued keep working and members already invited stay. | [optional] [example: true] |
| allowInvitingGuests | Boolean | Whether every DocSpace member, and not only an administrator, may invite external guests into rooms. Switching it off leaves the guests already invited in place. | [optional] [example: false] |
Model TenantUserInvitationSettingsWrapper
The successful API response containing the TenantUserInvitationSettingsDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantUserInvitationSettingsDto | The TenantUserInvitationSettingsDto 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 TenantUserQuotaSettings
The user quota settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| enableQuota | Boolean | Specifies if the quota is enabled for the tenant entity or not. | [optional] |
| defaultQuota | Long (int64) | The default quota of the tenant entity. | [optional] |
| lastRecalculateDate | Date (date-time) | The date of the last quota recalculation. | [optional] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] |
Model TenantUserQuotaSettingsWrapper
The successful API response containing the TenantUserQuotaSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantUserQuotaSettings | The TenantUserQuotaSettings 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 TenantWalletService
Possible values:
-18— AISearch (AISearch)-16— DocsCloudDevPack (DocsCloudDevPack)-15— DocsCloud (DocsCloud)-14— Admin (Admin)-13— AITools (AITools)-12— Backup (Backup)-11— Storage (Storage)
Model TenantWalletServiceSettings
The wallet services settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| enabledServices | List | The list of the enabled wallet services. | [optional] [example: [-11, -12]] [enum: -18, -16, -15, -14, -13, -12, -11] [nullable] |
| lastModified | Date (date-time) | The date and time when the wallet services settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
Model TenantWalletServiceSettingsWrapper
The successful API response containing the TenantWalletServiceSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantWalletServiceSettings | The TenantWalletServiceSettings 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 TenantWalletSettings
The tenant wallet settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| enabled | Boolean | Specifies whether automatic top-up for the tenant wallet is enabled. | [optional] [example: true] |
| minBalance | Integer (int32) | The minimum wallet balance at which automatic top-up will be triggered. Must be between 5 and 1000. | [optional] [example: 10] [min: 5] [max: 1000] |
| upToBalance | Integer (int32) | The maximum wallet balance at which automatic top-up will be triggered. Must be between 6 and 5000. | [optional] [example: 100] [min: 6] [max: 5000] |
| currency | String | The three-character ISO 4217 currency symbol. | [optional] [example: USD] [nullable] |
| lowBalanceThreshold | Integer (int32) | The wallet balance below which a low-balance notification is sent. Set internally, not user-configurable. | [optional] [example: 1] |
| lowBalanceNotified | Boolean | Specifies whether a low-balance notification has already been sent for the current dip below ASC.Core.Tenants.TenantWalletSettings.LowBalanceThreshold. | [optional] [example: false] |
| lastModified | Date (date-time) | The date and time when the tenant wallet settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
Model TenantWalletSettingsResponseWrapper
The successful API response containing the TenantWalletSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantWalletSettings | The TenantWalletSettings 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 TenantWalletSettingsWrapper
The wrapper for the tenant wallet settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| settings | TenantWalletSettings | The tenant wallet settings. | [optional] |
Model TenantWrapper
The successful API response containing the TenantDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TenantDto | The TenantDto 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 TfaAppCodeArrayWrapper
The successful API response containing the list of TfaAppCodeDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of TfaAppCodeDto 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 TfaAppCodeDto
One backup code of the caller's authenticator credential.
| Name | Type | Description | Notes |
|---|---|---|---|
| isUsed | Boolean | Whether the code has already been spent. A spent code is kept in the list but is no longer accepted, so count the entries where this is false to know how many fallbacks remain. | [optional] [example: true] |
| code | String | The code itself, in the form it is typed at sign-in - six characters with the default configuration. It is stored encrypted and decrypted for this answer, so this is the one place a caller can read it. | [optional] [example: 123456] [nullable] |
Model TfaConfirmDataDto
The confirmation link the caller has to follow to pass the two-factor step, and the cookie it depends on.
| Name | Type | Description | Notes |
|---|---|---|---|
| url | String | The link to open. Its type shows which step it is: phone activation or phone authorization for the SMS method, and authenticator activation or re-verification for the application method. The whole body is empty when the portal requires no second factor of the caller. | [optional] [example: https://example.com/confirm?type=TfaAuth&key=abc123] [nullable] |
| cookieName | String | The name of the confirmation cookie the link is validated against. It is filled in only for the authenticator-application method; the SMS method returns url alone. | [optional] [example: asc_confirm_key_TfaAuth] [nullable] |
| cookieValue | String | The value of that cookie. The call already set it on the response, so it is repeated here only for a client that does not keep cookies of its own; it is filled in under the same condition as cookieName, and a later call to this operation replaces it. | [optional] [example: 1234567890.abcdef] [nullable] |
Model TfaConfirmDataWrapper
The successful API response containing the TfaConfirmDataDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TfaConfirmDataDto | The TfaConfirmDataDto 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 TfaRequestsDto
The portal two-factor policy: which method is in force, who must pass it, and from where it is waived.
| Name | Type | Description | Notes |
|---|---|---|---|
| type | TfaRequestsDtoType | The second factor the portal demands. The two methods are mutually exclusive, so switching one on switches the other off, and any value outside the defined set is read as switching TFA off rather than refused. | [optional] [enum: 0, 1, 2] |
| id | UUID (uuid) | The account the request concerns, by portal user ID. Naming the portal owner is refused unless it is the caller's own account. Where an operation detaches an authenticator application, the empty GUID and the caller's own ID both mean the caller. | [optional] [example: 00000000-0000-0000-0000-000000000000] |
| trustedIps | List | The list of IP addresses that bypass TFA verification. Each entry is a single address, an inclusive from-to range or a CIDR block. This is the whole list that is to hold afterwards, so send the addresses already trusted along with a new one; an entry that cannot be parsed fails the call with 400, and accounts named as mandatory still have to pass the challenge even from a trusted address. | [optional] [example: [192.0.2.1, 198.51.100.1-198.51.100.20, 203.0.113.0/24]] [nullable] |
| mandatoryUsers | List (uuid) | The accounts that must pass the challenge whatever their address, by portal user ID. This is the whole list that is to hold afterwards - leaving it out clears it rather than keeping it - and naming the portal owner is refused unless the caller is the owner. | [optional] [example: [00000000-0000-0000-0000-000000000000]] [nullable] |
| mandatoryGroups | List (uuid) | The groups whose members must pass the challenge whatever their address, by group ID. This is the whole list that is to hold afterwards - leaving it out clears it rather than keeping it. | [optional] [example: [00000000-0000-0000-0000-000000000000]] [nullable] |
Model TfaRequestsDtoType
Possible values:
0— None (None)1— Sms (Sms)2— App (App)
Model TfaSettingsArrayWrapper
The successful API response containing the list of TfaSettingsDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of TfaSettingsDto 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 TfaSettingsDto
One two-factor authentication method the portal offers, with the portal-wide state of that method.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | Which method this entry describes: sms for a code sent by text message, app for a code from an authenticator application. It is the value PUT api/2.0/settings/tfaapp takes as its type, and no other value ever appears here. | [required] [example: app] [nullable] |
| title | String | The label for the method in the portal language, meant for a button or a radio option. It is not stable enough to branch on - match id for that. | [required] [example: Authenticator app] [nullable] |
| enabled | Boolean | Whether this method is the portal's current policy. At most one entry can have it set, and none has it while the portal challenges nobody. It says nothing about the caller's own account, which may be exempt through trustedIps or forced through mandatoryUsers. | [required] [example: true] |
| available | Boolean | Whether the method could be switched on at all. For sms it is false until the installation has a working SMS provider, so a method can be offered here and still be impossible to enable; for app it is always true. | [required] [example: true] |
| trustedIps | List | The addresses that skip the challenge, each either a single address, a from-to pair or a CIDR range. It is empty when no address is exempt, which means every account is challenged. | [optional] [example: [192.0.2.0/24]] [nullable] |
| mandatoryUsers | List (uuid) | The accounts that are challenged even from a trusted address, by user ID. Empty means the exemption in trustedIps holds for everyone. | [optional] [example: [00000000-0000-0000-0000-000000000000]] [nullable] |
| mandatoryGroups | List (uuid) | The groups whose members are challenged even from a trusted address, by group ID, with the same reading of an empty list as mandatoryUsers. | [optional] [example: [00000000-0000-0000-0000-000000000000]] [nullable] |
Model TfaSetupCodeDto
The secret to enrol in an authenticator application, in both of the forms an application can take it.
| Name | Type | Description | Notes |
|---|---|---|---|
| account | String | The label the authenticator application will list the credential under, which is the caller's own email address. It identifies the entry to a person, and no application checks it. | [optional] [example: john.doe@onlyoffice.com] [nullable] |
| manualEntryKey | String | The secret in the base32 form that is typed into an application by hand. It describes the very same credential as qrCodeSetupImageUrl, and repeating the call hands back the same value for the account until the credential is reset. | [optional] [example: JBSWY3DPEHPK3PXP] [nullable] |
| qrCodeSetupImageUrl | String | The same secret as a scannable image, given as a data:image/png;base64, URL that can be rendered directly - it is not a link to fetch. | [optional] [example: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVR4nGMAAgAABAABiCEmiQAAAABJRU5ErkJggg==] [nullable] |
Model TfaSetupCodeWrapper
The successful API response containing the TfaSetupCodeDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | TfaSetupCodeDto | The TfaSetupCodeDto 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 TfaValidateRequestsDto
The one-time code that completes a pending two-factor step, and how long the resulting sign-in lasts.
| Name | Type | Description | Notes |
|---|---|---|---|
| code | String | The code to check - either one from the authenticator application or one of the account's unused backup codes, which is spent by the check. A wrong code is refused with 400 and counts against the portal login attempt limit. | [required] [example: 123456] [nullable] |
| session | Boolean | Whether the sign-in that follows is tied to the browser session. When it is, the session ends with the browser rather than lasting for the portal session lifetime. | [optional] [example: true] |
Model TimeBound
Represents the period the price is effective in.
| Name | Type | Description | Notes |
|---|---|---|---|
| startDate | Date (date-time) | The date and time when the period starts. | [optional] [example: 2024-01-15T10:30:00Z] |
| endDate | Date (date-time) | The date and time when the period ends. | [optional] [example: 2024-01-15T10:30:00Z] [nullable] |
Model TimezonesRequestsArrayWrapper
The successful API response containing the list of TimezonesRequestsDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of TimezonesRequestsDto 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 TimezonesRequestsDto
One time zone the host offers, as its identifier and the label to show for it.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The IANA identifier of the time zone. This is the value the portal time zone is set to, so pass it on unchanged to PUT api/2.0/settings/timeandlanguage. | [required] [example: America/New_York] [nullable] |
| displayName | String | The label to show for the zone, carrying its UTC offset as it stood when the list was built. The offset is a snapshot rather than a rule, so a zone observing daylight saving reads differently at other times of the year; sort and match on id instead. | [required] [example: (UTC-05:00) Eastern Time (US and Canada)] [nullable] |
Model TopUpDepositRequestDto
How much money is charged to the payment method on file and added to the portal wallet.
| Name | Type | Description | Notes |
|---|---|---|---|
| amount | Integer (int32) | The sum to charge, as a whole number of units of currency - 10 means ten dollars and not ten cents. The bounds are what one call may move, not what the wallet may hold, so a larger top-up is made of several calls. | [optional] [example: 1] [min: 1] [max: 999999] |
| currency | String | The currency the charge is made in, as an ISO 4217 code in upper case. It has to be one of the accounting currencies this installation supports, which GET api/2.0/portal/payment/accounting/currencies lists; any other code is refused with 400. The money lands on the wallet sub-account of that currency, so topping up in a second currency does not add to the first one. | [optional] [example: USD] [minLength: 0] [maxLength: 3] [nullable] |
Model TransactionInfo
Represents information about the transaction applied to an account.
| Name | Type | Description | Notes |
|---|---|---|---|
| currency | String | The three-character ISO 4217 currency symbol. | [optional] |
| amount | Double (double) | The amount in the specified currency. | [optional] |
| date | Date (date-time) | The date and time when the credit transaction occurred. | [optional] |
Model TurnOnAdminMessageSettingsRequestDto
Whether the sign-in page offers the form for writing to the portal administrators.
| Name | Type | Description | Notes |
|---|---|---|---|
| turnOn | Boolean | Whether the form is offered. Switching it off hides the form for everybody and makes the operation that submits it refuse new messages; letters already sent are untouched. | [optional] [example: true] |
Model UnknownNullableWrapper
The successful API response.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | oas_any_type_not_mapped | [optional] [nullable] | |
| 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 UpcomingPaymentArrayWrapper
The successful API response containing the list of UpcomingPaymentDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of UpcomingPaymentDto 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 UpcomingPaymentDto
One charge the portal is going to be billed for at the start of the next period.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The quota that is going to be charged. When a switch to another quota is scheduled, this is the quota being switched to, so it can differ from what GET api/2.0/portal/tariff reports for today. | [optional] [example: -11] |
| name | String | The quota's stable key, which is the same identifier the wallet operations use for a service. | [optional] [example: storage] [nullable] |
| title | String | The quota name in the portal language, meant to be printed on an invoice preview. | [optional] [example: Business plan] [nullable] |
| unitOfMeasure | String | What quantity counts, in the portal language - seats, administrators, gigabytes. It is empty for a quota that is simply on or off. | [optional] [example: admins] [nullable] |
| quantity | Integer (int32) | How much is going to be charged for, which is the quantity scheduled for the next period when one has been scheduled and today's quantity otherwise. | [optional] [example: 100] |
| wallet | Boolean | Whether the charge is paid out of the portal wallet rather than from the subscription. | [optional] [example: true] |
| dueDate | ApiDateTime | When the charge falls due, in the portal time zone. | [optional] |
| amount | Double (double) | What the charge comes to: the unit price of the quota multiplied by quantity. Taxes are not part of it, and a quota with no price of its own is not listed at all rather than listed with a zero. | [optional] [example: 14] |
| currency | String | The currency amount is expressed in, as a three-letter ISO 4217 code. It follows the portal's billing account, so every entry of one answer carries the same code. | [optional] [example: USD] [nullable] |
Model UpdateWebhooksConfigRequestsDto
The webhook subscription being changed, with the parameters it is to have afterwards.
| Name | Type | Description | Notes |
|---|---|---|---|
| name | String | The label the subscription is listed under. It is for the administrator reading the list and is never sent to the target; it does not have to be unique. | [required] [minLength: 0] [maxLength: 50] |
| uri | String | The address the portal posts the event payload to. It has to be an absolute http or https address outside the installation own network, and it is probed before anything is stored: it must answer a HEAD request with a success code, and a redirect does not count as one. | [required] [minLength: 1] |
| secretKey | String | The shared secret the payload signature is computed with, so the receiver can tell a genuine call from a forged one. It has to satisfy the portal password rules published by GET api/2.0/settings/security/password, and it is never echoed back by any operation. On an update an empty value keeps the secret already stored. | [optional] [minLength: 0] [maxLength: 50] |
| enabled | Boolean | Whether the subscription delivers at all. While it is off the matching events are dropped rather than queued, so nothing from that period arrives once it is switched on again. | [optional] |
| ssl | Boolean | Whether the target certificate is verified. Setting it demands an https target with a valid certificate; leaving it off delivers without checking the certificate at all. | [optional] |
| triggers | WebhookTrigger | The events the subscription listens for, as a bitmask combining the flags; 0 subscribes to all of them. Take the flags the caller role is allowed to use from GET api/2.0/settings/webhook/triggers, since a flag beyond that set is refused with 400. A subscription still only fires for events its creator may see. | [optional] [enum: 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824] |
| targetId | String | The single entity the subscription is narrowed to, by its identifier - a room or a file, for instance. Leaving it out delivers events about every entity the subscribed triggers cover. | [optional] [minLength: 0] [maxLength: 255] |
| id | Integer (int32) | The subscription to act on, by the id that GET api/2.0/settings/webhook reports. It travels in the body rather than in the path, and an id that exists in no portal subscription answers 404. | [required] |
Model UsageSpaceStatItemArrayWrapper
The successful API response containing the list of UsageSpaceStatItemDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of UsageSpaceStatItemDto 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 UsageSpaceStatItemDto
The storage one category of a portal module occupies, in the form a statistics page prints it.
| Name | Type | Description | Notes |
|---|---|---|---|
| name | String | The category name in the portal language, HTML-escaped and ready to be rendered as text. What a category stands for depends on the module asked about - for the Documents module it is a room type. | [optional] [example: Collaboration rooms] [nullable] |
| icon | String | The path of the icon to render beside the name, relative to the portal address. It is empty for a category that ships no icon. | [optional] [example: /images/icons/rooms.svg] [nullable] |
| disabled | Boolean | Whether the category is switched off for this portal. A disabled category still reports the space it occupies, so it is worth showing greyed out rather than dropping. | [optional] [example: true] |
| size | String | The occupied space already formatted for display, with its unit and in the portal language - 0 Byte for an empty category. It is not a byte count and must not be parsed; the raw numbers live in the quota reported by GET api/2.0/portal/quota. | [optional] [example: 1.5 GB] [nullable] |
| url | String | The portal page that lists the contents of this category, relative to the portal address, so a statistics page can link through to it. It is empty for a category with no page of its own. | [optional] [example: /rooms/shared] [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 UserInfoWrapper
The successful API response containing the UserInfo object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | UserInfo | The UserInfo 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 ValidationResult
Possible values:
0— Ok (Ok)1— Invalid (Invalid)2— Expired (Expired)3— Tariff limit (TariffLimit)4— User existed (UserExisted)5— User excluded (UserExcluded)6— Quota failed (QuotaFailed)
Model WalletQuantityRequestDto
The wallet service being bought or scheduled, and the way its quantity is applied.
| Name | Type | Description | Notes |
|---|---|---|---|
| quantity | Map (int32) | The wallet service and the number of units of it, as a single pair. The key is the serviceName of a service from GET api/2.0/portal/payment/walletservices, and the value is read according to productQuantityType: the units to add, or the total the service is to have in the next period. Minimum quantities apply per service - disk storage starts at 100 units, the Docs Connect Dev Pack at 10, and the administrators may not be fewer than the portal already has. Exactly one pair is accepted, and a null or zero value cancels a change scheduled earlier rather than buying nothing. | [required] [example: {admin=1}] |
| productQuantityType | ProductQuantityType | How the number in quantity is applied. Add buys the units straight away and charges them to the portal wallet, while Set charges nothing now and records the quantity the service is to have from the next period. Only these two are accepted here; Sub and Renew are refused with 400. | [optional] [enum: 0, 1, 2, 3] |
Model WalletServiceArrayWrapper
The successful API response containing the list of WalletServiceDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of WalletServiceDto 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 WalletServiceDto
One service the portal can pay for out of its wallet: a quota sold per unit rather than per period.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The identifier of the quota, which is what the tariff reports as a quota id and what a purchase names. A negative value belongs to a built-in quota rather than one on the price list. | [required] |
| title | String | The quota name in the portal language, for printing rather than matching. It is empty when this build ships no wording for the quota, which is normal for a quota that is not on the public price list. | [optional] |
| price | PriceDto | What the quota costs, in the currency resolved for the request. Its value is empty for a quota that is not sold for money, which is what free, trial and nonProfit describe. | [required] |
| nonProfit | Boolean | Whether this is the non-profit quota, which is granted rather than bought. A portal on it cannot buy any other plan, so a catalogue asked for plans returns this one alone. | [required] |
| free | Boolean | Whether this is the free quota a portal falls back to when nothing is paid for. It has no end date and the tightest limits of any quota. | [required] |
| trial | Boolean | Whether this is the trial quota, which grants the paid limits for a while and then expires. A trial is not extended by paying - a plan has to be bought instead. | [required] |
| features | List | The features the quota switches on, each with the limit it grants and, on the quota the portal is actually on, how much of that limit is already used. A feature that is absent is off, so the list is the whole truth about what the quota includes. | [required] |
| usersQuota | TenantEntityQuotaSettings | The per-member storage allowance an administrator has set on top of the quota, and whether it is applied at all. It describes the live portal rather than this quota, so every entry of a catalogue listing repeats the same values, and it is empty unless the portal is a server installation or its plan includes statistics. | [optional] |
| roomsQuota | TenantEntityQuotaSettings | The same kind of per-room storage override, filled in and read the same way as usersQuota. | [optional] |
| aiAgentsQuota | TenantEntityQuotaSettings | The same kind of per-agent storage override for AI agents, filled in and read the same way as usersQuota. | [optional] |
| tenantCustomQuota | TenantQuotaSettings | The storage allowance an administrator has set for the portal as a whole, which caps it below what the quota grants. Filled in under the same conditions as usersQuota. | [optional] |
| dueDate | Date (date-time) | When the quota runs out, in UTC. It is empty on a quota from the catalogue, which has no date until it is bought, and on a quota that never expires. | [optional] |
| innerServices | List | The variants of this service that are folded into it, so a client renders one card per group instead of one per variant. It is empty when the service has no variants, and always empty in the answer of GET api/2.0/portal/payment/walletservice, which looks one service up on its own. | [optional] [nullable] |
| serviceName | String | The stable key of the service, which is what the wallet operations take as their service argument and what the usage reports key their entries by. | [optional] [nullable] |
Model WalletServiceWrapper
The successful API response containing the WalletServiceDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | WalletServiceDto | The WalletServiceDto 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 WebItemSecurityRequestsDto
The access rule stored for one portal module: whether it may be opened, and by whom.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The module the rule applies to, given as a GUID. A value that is not a GUID fails the request as invalid. | [required] [example: 00000000-0000-0000-0000-000000000000] [nullable] |
| enabled | Boolean | Whether the module may be opened. It decides the outcome only while subjects names somebody: an empty subjects array is stored as access for everyone whatever this flag says. | [optional] [example: true] |
| subjects | List (uuid) | The users and groups the rule is stored for, given by their IDs. This is the whole allow-list that is to hold afterwards and not a list of additions - what was stored before is dropped. Leaving it out applies enabled to everyone and skips the audit trail entry, while sending it empty stores access for everyone. | [optional] [example: [00000000-0000-0000-0000-000000000000]] [nullable] |
Model WebItemsSecurityRequestsDto
The modules switched on or off together, one entry per module.
| Name | Type | Description | Notes |
|---|---|---|---|
| items | List | The modules to switch, each entry pairing a module GUID as its key with the new enabled flag as its value. A key that is not a GUID fails the whole request as invalid, and a module listed twice is applied once, from its first entry. No allow-list travels here: switching a product module on restores the users and groups it was last restricted to, and everything else is stored as a plain allow or deny for everyone. | [optional] [example: [{key=00000000-0000-0000-0000-000000000000, value=true}]] [nullable] |
Model WebPluginArrayWrapper
The successful API response containing the list of WebPluginDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of WebPluginDto 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 WebPluginDto
One web plugin available to the portal: its manifest, where to load it from, and the state the portal keeps.
| Name | Type | Description | Notes |
|---|---|---|---|
| name | String | The plugin's manifest name, which is what every other operation of this group addresses it by and what makes it unique within the portal - an installation-wide plugin wins the name over a portal one. | [required] [example: Example Plugin] [nullable] |
| version | String | The plugin's own version from its manifest. The portal does not compare it against anything; it is there for a person to read. | [required] [example: 1.0.0] [nullable] |
| minDocSpaceVersion | String | The oldest portal version the plugin declares it works with. It is a claim from the manifest and is not enforced, so a plugin can be loaded on an older portal and simply misbehave; compare it with the version of GET api/2.0/settings. | [optional] [example: 12.0.0] [nullable] |
| description | String | The plugin's description from its manifest, in the language the manifest was written in. The translations of it are in descriptionLocale. | [required] [example: A plugin that provides additional functionality] [nullable] |
| license | String | The licence the plugin is published under, as its manifest states it. Nothing checks it. | [required] [example: MIT] [nullable] |
| author | String | Who wrote the plugin, as its manifest states it - not the portal member who uploaded it, who is createBy. | [required] [example: ONLYOFFICE] [nullable] |
| homePage | String | The plugin's own page, for a person to read more about it. It is empty when the manifest names none. | [required] [example: https://example.com] [nullable] |
| pluginName | String | The global the plugin registers itself under in the browser once its script has run, which is how a client reaches it. It is distinct from name, the identifier the portal uses. | [required] [example: examplePlugin] [nullable] |
| scopes | String | Which parts of the interface the plugin hooks into, as one comma-separated string rather than a list. | [required] [example: Files,Rooms] [nullable] |
| image | String | The plugin's icon exactly as its manifest declares it, which is normally a file name inside the plugin's own package rather than an absolute address - resolve it against the directory url points into. | [required] [example: icon.svg] [nullable] |
| createBy | EmployeeDto | The portal member who uploaded the plugin. For a plugin that ships with the installation it is an empty profile, since no member put it there. | [required] |
| createOn | Date (date-time) | When the plugin was uploaded. It stays at its zero value for a plugin that ships with the installation. | [required] [example: 2024-01-15T10:30:00Z] |
| enabled | Boolean | Whether the portal loads the plugin. It is the state this portal stored, so an installation-wide plugin can be on for one portal and off for another. | [required] [example: true] |
| system | Boolean | Whether the plugin ships with the installation rather than having been uploaded here. A system plugin cannot be deleted through DELETE api/2.0/settings/webplugins/{name}, only switched off. | [required] [example: false] |
| url | String | The address of the plugin's script, which a client loads to run it. It ends in a hash query taken from version, so the address changes whenever the plugin is updated and an old one may be cached. | [required] [example: https://example.com/plugin.js] [nullable] |
| cssUrl | String | The absolute address of the plugin's stylesheet, empty for a plugin that ships none. | [required] [example: https://example.com/plugin.css] [nullable] |
| settings | String | The settings string the portal keeps for the plugin, stored and returned verbatim - only the plugin knows its shape. It is empty until PUT api/2.0/settings/webplugins/{name} saves one. | [required] [example: {"theme":"dark"}] [nullable] |
| nameLocale | Map | The plugin's name translated, keyed by culture name. A culture that is missing falls back to name, and the whole map is empty for a plugin that ships no translations. | [optional] [example: {en-US=Example plugin, de-DE=Beispiel-Plugin}] |
| descriptionLocale | Map | The plugin's description translated, keyed the same way as nameLocale and falling back to description. | [optional] [example: {en-US=Adds extra actions, de-DE=Fugt Aktionen hinzu}] |
| runtime | String | How the script at url is to be loaded - as an ES module or as a classic script. It is empty for a plugin whose manifest does not say, which a client treats as a classic script. | [optional] [example: module] [nullable] |
Model WebPluginRequests
The state the portal keeps for an installed web plugin: whether it runs, and its own settings blob.
| Name | Type | Description | Notes |
|---|---|---|---|
| enabled | Boolean | Whether the plugin runs in this portal. Switching it on adds the domains its manifest declares to the portal Content Security Policy and switching it off takes them away again; connected clients are told of the new state without a reload. | [optional] [example: true] |
| settings | String | The configuration the plugin reads at run time, as a JSON document serialised into a string. Its shape is defined by the plugin and not by the portal, which stores it encrypted for this portal alone. It replaces whatever was stored rather than merging into it, so send {} when there is nothing to keep. | [required] [example: {"theme":"dark","autoSave":true}] [minLength: 0] [maxLength: 255] [nullable] |
Model WebPluginWrapper
The successful API response containing the WebPluginDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | WebPluginDto | The WebPluginDto 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 WebhookGroupStatus
Possible values:
0— None (None)1— Not sent (NotSent)2— Status2xx (Status2xx)4— Status3xx (Status3xx)8— Status4xx (Status4xx)16— Status5xx (Status5xx)
Model WebhookRetryRequestsDto
Which past webhook deliveries are sent again.
| Name | Type | Description | Notes |
|---|---|---|---|
| ids | List (int32) | The delivery records to send again, by the identifiers GET api/2.0/settings/webhooks/log reports. An identifier that exists nowhere, and one belonging to another member subscription when the caller is not a DocSpace administrator, is skipped in silence rather than failing the call, so compare the number of records that come back against the number sent. An empty list is accepted and queues nothing. | [optional] [example: [1, 2, 3]] [nullable] |
Model WebhookTrigger
Possible values:
0— *1— user.created2— user.invited4— user.updated8— user.deleted16— group.created32— group.updated64— group.deleted128— file.created256— file.uploaded512— file.updated1024— file.trashed2048— file.deleted4096— file.restored8192— file.copied16384— file.moved32768— folder.created65536— folder.updated131072— folder.trashed262144— folder.deleted524288— folder.restored1048576— folder.copied2097152— folder.moved4194304— room.created8388608— room.updated16777216— room.archived33554432— room.deleted67108864— room.restored134217728— room.copied268435456— form.submit536870912— form.filled.out1073741824— form.stopped
Model WebhookTriggerArrayWrapper
The successful API response containing the list of WebhookTriggerDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of WebhookTriggerDto 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 WebhookTriggerDto
One event a webhook can listen to, with the bit that selects it and whether the caller may subscribe to it.
| Name | Type | Description | Notes |
|---|---|---|---|
| name | String | The event name exactly as it appears in a delivered payload, so a receiver can match on it. The entry named * is not an event but the catch-all. | [optional] [example: file.created] [nullable] |
| id | Long (int64) | The bit that stands for this event in the triggers bitmask of a subscription. Add the bits of the wanted events together; the catch-all entry has the value 0 and is used on its own rather than added to anything. | [optional] [example: 128] |
| available | Boolean | Whether the caller's own role may subscribe to this event - a plain member cannot subscribe to user, group or room creation, where a room administrator can. An unavailable event is listed all the same, and sending its bit to POST api/2.0/settings/webhook is refused as an invalid request. | [optional] [example: true] |
Model WebhooksConfigDto
One webhook subscription of the portal: where deliveries go, which events they cover, and how they have fared.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The identifier of the subscription, which is what PUT api/2.0/settings/webhook, DELETE api/2.0/settings/webhook/{id} and the configId filter of the delivery log address it by. | [required] [example: 1] |
| name | String | The label the subscription was given, free text with no meaning to the portal. | [optional] [example: Room activity] [nullable] |
| uri | String | The address every delivery is posted to. The signing secret that lets the receiver verify a delivery is never part of this answer, so it has to be kept from the moment the subscription was created. | [optional] [example: https://example.com/hooks/docspace] [nullable] |
| enabled | Boolean | Whether the subscription is delivering. While it is false events are dropped rather than queued, so nothing arrives late after it is switched back on. | [optional] [example: true] |
| ssl | Boolean | Whether the certificate of uri is verified before a delivery. While it is false a self-signed certificate is accepted as well. | [optional] [example: true] |
| triggers | WebhookTrigger | The events the subscription covers, as the bits of GET api/2.0/settings/webhook/triggers added together. 0 is the catch-all and means every event, not none. | [optional] [enum: 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824] |
| targetId | String | The single room or file the subscription is narrowed to, empty for a subscription that covers the whole portal. It is kept as an opaque value, so both a numeric and a third-party identifier can appear. | [optional] [example: 00000000-0000-0000-0000-000000000001] [nullable] |
| createdBy | EmployeeDto | The member who created the subscription, which is also who a non-administrator is limited to seeing. It is empty for a subscription created by a portal background job. | [optional] |
| createdOn | Date (date-time) | When the subscription was created, in the portal time zone. | [optional] [example: 2024-01-15T10:30:00Z] [nullable] |
| modifiedBy | EmployeeDto | The member who last changed the subscription, empty while nobody has changed it since it was created. | [optional] |
| modifiedOn | Date (date-time) | When it was last changed, in the portal time zone, and empty under the same condition as modifiedBy. | [optional] [example: 2024-01-15T10:30:00Z] [nullable] |
| lastFailureOn | Date (date-time) | When a delivery last failed, in the portal time zone. It is empty for a subscription that has never failed, and it is not cleared by a later success - compare it with lastSuccessOn to see which came last. | [optional] [example: 2024-01-15T10:30:00Z] [nullable] |
| lastFailureContent | String | What the target answered on that failure, truncated, for diagnosing without opening the delivery log. It is empty when the failure produced no body at all, a timeout for instance. | [optional] [example: 502 Bad Gateway] [nullable] |
| lastSuccessOn | Date (date-time) | When a delivery last succeeded, in the portal time zone, empty for a subscription that has never delivered. Both this and lastFailureOn being empty means nothing has been attempted yet. | [optional] [example: 2024-01-15T10:30:00Z] [nullable] |
Model WebhooksConfigWithStatusArrayWrapper
The successful API response containing the list of WebhooksConfigWithStatusDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of WebhooksConfigWithStatusDto 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 WebhooksConfigWithStatusDto
A webhook subscription together with how its last delivery ended.
| Name | Type | Description | Notes |
|---|---|---|---|
| configs | WebhooksConfigDto | The subscription itself. Despite the plural name it is one subscription, not a list. | [optional] |
| status | Integer (int32) | The HTTP status code the target answered on the last attempt. 0 means nothing has been delivered yet, which is not the same as a failure. | [optional] [example: 200] |
Model WebhooksConfigWrapper
The successful API response containing the WebhooksConfigDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | WebhooksConfigDto | The WebhooksConfigDto 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 WebhooksLogArrayWrapper
The successful API response containing the list of WebhooksLogDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of WebhooksLogDto 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 WebhooksLogDto
One delivery attempt of a webhook: what was sent where, and what came back.
| Name | Type | Description | Notes |
|---|---|---|---|
| id | Integer (int32) | The identifier of this attempt, which is what the eventId filter of GET api/2.0/settings/webhooks/log picks one record by and what PUT api/2.0/settings/webhook/{id}/retry re-sends. A retry produces a new record with a new identifier and leaves this one as it is. | [required] [example: 1] |
| configName | String | The name of the subscription the attempt belongs to. It is the name as it stands now, so it follows a later rename of the subscription rather than recording what it was called at the time. | [optional] [example: Room activity] [nullable] |
| trigger | WebhookTrigger | The event that caused the attempt, as a single bit rather than a mask - a delivery is always for one event, even though a subscription covers several. | [optional] [enum: 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824] |
| creationTime | Date (date-time) | When the attempt was queued, as a UTC instant - unlike the dates of the subscription itself, which come in the portal time zone. Records come back newest first by this moment. | [optional] [example: 2024-01-15T10:30:00Z] |
| method | String | The HTTP method the delivery was sent with, which is POST for every webhook the portal sends. | [optional] [example: POST] [nullable] |
| route | String | The address the delivery was sent to, which is the subscription's URL as it stood at the time - so an older record can name an address the subscription no longer uses. | [optional] [example: https://example.com/hooks/docspace] [nullable] |
| requestHeaders | String | The headers the portal sent, serialised as one string, including the signature header a receiver verifies the payload with. | [optional] [example: {"x-docspace-signature":"9f86d081884c7d65"}] [nullable] |
| requestPayload | String | The body the portal sent, which is the event payload as JSON text. It is stored as it was sent, so it still describes the entity as it looked at the time of the event. | [optional] [example: {"id":42,"title":"report.docx"}] [nullable] |
| responseHeaders | String | The headers the target answered with, serialised the same way as requestHeaders. It is empty while the attempt is still on its way and on an attempt that never reached the target. | [optional] [example: {"content-type":"application/json"}] [nullable] |
| responsePayload | String | The body the target answered with, truncated for storage. Empty under the same conditions as responseHeaders, and also for a target that answers with no body at all. | [optional] [example: {"ok":true}] [nullable] |
| status | Integer (int32) | The HTTP status code the target answered. It is 0 while the attempt is still on its way and on one that never reached the target, so 0 is not a failure code - it is the absence of an answer. | [optional] [example: 200] |
| delivery | Date (date-time) | When the answer came back, as a UTC instant like creationTime. It is empty while the attempt is still on its way, which together with status is how a pending record is told from a finished one. | [optional] [example: 2024-01-15T10:30:00Z] [nullable] |
Model WebhooksLogWrapper
The successful API response containing the WebhooksLogDto object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | WebhooksLogDto | The WebhooksLogDto 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 WhiteLabelItemArrayWrapper
The successful API response containing the list of WhiteLabelItemDto objects.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | List | The list of WhiteLabelItemDto 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 WhiteLabelItemDto
One branding logo slot of the portal: the size it is drawn at, and where its images are served from.
| Name | Type | Description | Notes |
|---|---|---|---|
| type | WhiteLabelLogoType | Which branding slot this entry describes. Notification is part of the type but never appears here: that logo is derived from the login-page one and used only in letters. | [optional] [enum: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] |
| name | String | The stable name of the same slot, which is what GET api/2.0/settings/whitelabel/logos/isdefault keys its entries by. It is a name to match on, not a file name. | [optional] [example: LightSmall] [nullable] |
| size | WhiteLabelItemSizeDto | The pixel box the slot is drawn in. Only width and height carry information here; the resize flags and offsets alongside them are left at their defaults and say nothing about how an uploaded image is treated. | [optional] |
| path | WhiteLabelItemPathDto | The absolute URLs to render the slot from, one per theme. | [optional] |
Model WhiteLabelItemPathDto
The image URLs of one logo slot, per interface theme.
| Name | Type | Description | Notes |
|---|---|---|---|
| light | String | The absolute URL of the image to render on a light background. It is filled in unless the request asked for the dark theme alone with isDark=true, in which case only dark comes back. | [optional] [example: /images/logo-light.png] [nullable] |
| dark | String | The absolute URL of the image to render on a dark background. When both themes are asked for it comes back empty for a slot that has no separate dark image, meaning the light one is to be used for both; when isDark=false was passed it is left out entirely. | [optional] [example: /images/logo-dark.png] [nullable] |
Model WhiteLabelItemSizeDto
The pixel box a logo slot is drawn in, in the shape the imaging library reports a geometry.
| Name | Type | Description | Notes |
|---|---|---|---|
| aspectRatio | Boolean | Whether the numbers are to be read as an aspect ratio rather than as pixels. Always false on the sizes this API reports. | [optional] [example: false] |
| fillArea | Boolean | Whether an image would be scaled to cover the box rather than to fit inside it. Always false here. | [optional] [example: false] |
| greater | Boolean | Whether scaling would apply only to an image larger than the box. Always false here. | [optional] [example: false] |
| height | Integer (int32) | The height of the box in pixels - one of the two fields of this object that carry information. | [optional] [example: 48] |
| ignoreAspectRatio | Boolean | Whether scaling would be allowed to distort the image. Always false here. | [optional] [example: false] |
| isPercentage | Boolean | Whether width and height are to be read as percentages. Always false here, so both are pixels. | [optional] [example: false] |
| less | Boolean | Whether scaling would apply only to an image smaller than the box. Always false here. | [optional] [example: false] |
| limitPixels | Boolean | Whether the box is to be read as a total pixel-area budget instead of as two dimensions. Always false here. | [optional] [example: false] |
| width | Integer (int32) | The width of the box in pixels - the other field of this object that carries information. | [optional] [example: 422] |
| x | Integer (int32) | The horizontal offset of the box from the origin. Always 0 here. | [optional] [example: 0] |
| y | Integer (int32) | The vertical offset of the box from the origin. Always 0 here. | [optional] [example: 0] |
Model WhiteLabelLogoType
Possible values:
1— Light small (LightSmall)2— Login page (LoginPage)3— Favicon (Favicon)4— Docs editor (DocsEditor)5— Docs editor embed (DocsEditorEmbed)6— Left menu (LeftMenu)7— About page (AboutPage)8— Notification (Notification)9— Spreadsheet editor (SpreadsheetEditor)10— Spreadsheet editor embed (SpreadsheetEditorEmbed)11— Presentation editor (PresentationEditor)12— Presentation editor embed (PresentationEditorEmbed)13— Pdf editor (PdfEditor)14— Pdf editor embed (PdfEditorEmbed)15— Diagram editor (DiagramEditor)16— Diagram editor embed (DiagramEditorEmbed)
Model WhiteLabelRequestsDto
The branding a portal is given: the wordmark, the logo images, or both.
| Name | Type | Description | Notes |
|---|---|---|---|
| logoText | String | The wordmark printed next to or instead of a logo image, on the login page, in the editors and in notification letters. An empty or blank value, and the built-in ONLYOFFICE itself, clear the setting rather than store it. The text is not rendered into the logo images, which carry their own wordmark. | [optional] [example: Company Name] [minLength: 0] [maxLength: 40] [nullable] |
| logo | List | The logo images to store, each entry naming a logo slot in its key - the numeric type published by GET api/2.0/settings/whitelabel/logos - and carrying the two theme images in its value. A slot left out of the list keeps the image it has, so this is a partial update rather than a replacement of the whole branding. Saving the login-page slot also rebuilds the notification logo from it. | [optional] [example: [item1, item2]] [nullable] |
Model WizardRequestsDto
What the initial setup wizard needs to finish a new portal: the owner credentials and the portal locale.
| Name | Type | Description | Notes |
|---|---|---|---|
| String (email) | The address the portal owner account is created with, which is also the address every administrative letter goes to afterwards. It has to be a well-formed email address; a malformed one leaves the wizard unfinished. | [required] [example: user@example.com] [nullable] | |
| passwordHash | String | The owner password, already hashed in the client rather than sent in the clear. Hash it with the salt, iteration count and hash size that GET api/2.0/settings?withpassword=true publishes, so the portal can recognise it later; an empty value leaves the wizard unfinished. | [required] [example: 2DYmIoA/aYKEksFocEf6uw==] [nullable] |
| lng | String | The portal interface language, as a culture name such as en-US. It has to be one of the cultures enabled for the installation, and an unknown one leaves the shipped default in place instead of failing the wizard. | [optional] [example: en-US] [nullable] |
| timeZone | String | The time zone every portal date is rendered in, as an IANA identifier such as Europe/Riga. A value that matches nothing falls back to UTC rather than failing the wizard. | [optional] [example: UTC] [nullable] |
| amiId | String | The identifier of the Amazon Machine Image the portal was launched from, for an installation started from an AWS image. It is recorded for the installation record only and changes nothing about the portal; leave it out anywhere else. | [optional] [example: 00000000-0000-0000-0000-000000000001] [nullable] |
| subscribeFromSite | Boolean | Whether the owner agrees to receive product news at the address in email. It is a mailing consent and has no bearing on the portal notifications, which are subscribed separately. | [optional] [example: true] |
Model WizardSettings
The Wizard settings.
| Name | Type | Description | Notes |
|---|---|---|---|
| completed | Boolean | Specifies if the Wizard settings are completed or not | [optional] [example: true] |
| lastModified | Date (date-time) | The timestamp indicating when the settings were last modified. | [optional] [example: 1990-01-01T00:00:00Z] |
Model WizardSettingsWrapper
The successful API response containing the WizardSettings object.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | WizardSettings | The WizardSettings 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 getPortalPrices 200 response
The successful API response.
| Name | Type | Description | Notes |
|---|---|---|---|
| response | Map (double) | 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 getPortalPrices 200 response.links item
| Name | Type | Description | Notes |
|---|---|---|---|
| href | String | URL of the link | [optional] |
| action | String | Action associated with the link | [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: