Errors

The Files.com Go SDK will return errors from function/method calls using the standard Go error handling pattern.

The returned errors fall into basic categories:

  1. error - errors that originate in the SDK or standard libraries.
  2. ResponseError - errors that occur due to the response from the Files.com API.

The error type are errors that implement the type error interface and the error specifics can be accessed with the Error() method.

ResponseError also implements the type error interface but is a custom error with additional data.

The additional data includes:

  • Type - the type of error returned by the Files.com API
  • Title - a description of the error returned by the Files.com API
  • ErrorMessage - additional error information

Example Error Handling

import (
    "fmt"
    "errors"

    files_sdk "github.com/Files-com/files-sdk-go/v3"
    "github.com/Files-com/files-sdk-go/v3/session"
)

thisSession, err := session.Create(files_sdk.SessionCreateParams{ Username: "USERNAME", Password: "BADPASSWORD" })
if err != nil {
    var respErr files_sdk.ResponseError
    if errors.As(err, &respErr) {
        fmt.Println("Response Error Occurred (" + respErr.Type + "): " + respErr.ErrorMessage)
    } else {
        fmt.Printf("Unexpected Error: %s\n", err.Error())
    }
}

ResponseError Types

ResponseError errors have additional data returned from the Files.com API to help determine the cause of the error.

Example ResponseError Type Matching

if err != nil {
    if errors.Is(err, files_sdk.ErrInvalidUsernameOrPassword) {
        fmt.Println("Bad username/password")
    } else if files_sdk.IsNotFound(err) {
        fmt.Println("Resource not found")
    }

    var responseErr files_sdk.ResponseError
    if errors.As(err, &responseErr) {
        fmt.Println(responseErr.Title)
    }
}
TypeGo ErrorTitle
bad-requestErrBadRequestBad Request
bad-request/agent-upgrade-requiredErrAgentUpgradeRequiredAgent Upgrade Required
bad-request/attachment-too-largeErrAttachmentTooLargeAttachment Too Large
bad-request/cannot-download-directoryErrCannotDownloadDirectoryCannot Download Directory
bad-request/cant-move-with-multiple-locationsErrCantMoveWithMultipleLocationsCant Move With Multiple Locations
bad-request/datetime-parseErrDatetimeParseDatetime Parse
bad-request/destination-sameErrDestinationSameDestination Same
bad-request/destination-site-mismatchErrDestinationSiteMismatchDestination Site Mismatch
bad-request/does-not-support-sortingErrDoesNotSupportSortingDoes Not Support Sorting
bad-request/folder-must-not-be-a-fileErrFolderMustNotBeAFileFolder Must Not Be A File
bad-request/folders-not-allowedErrFoldersNotAllowedFolders Not Allowed
bad-request/internal-general-errorErrInternalGeneralErrorInternal General Error
bad-request/invalid-bodyErrInvalidBodyInvalid Body
bad-request/invalid-cursorErrInvalidCursorInvalid Cursor
bad-request/invalid-cursor-type-for-sortErrInvalidCursorTypeForSortInvalid Cursor Type For Sort
bad-request/invalid-etagsErrInvalidEtagsInvalid Etags
bad-request/invalid-filter-alias-combinationErrInvalidFilterAliasCombinationInvalid Filter Alias Combination
bad-request/invalid-filter-fieldErrInvalidFilterFieldInvalid Filter Field
bad-request/invalid-filter-paramErrInvalidFilterParamInvalid Filter Param
bad-request/invalid-filter-param-formatErrInvalidFilterParamFormatInvalid Filter Param Format
bad-request/invalid-filter-param-valueErrInvalidFilterParamValueInvalid Filter Param Value
bad-request/invalid-input-encodingErrInvalidInputEncodingInvalid Input Encoding
bad-request/invalid-interfaceErrInvalidInterfaceInvalid Interface
bad-request/invalid-oauth-providerErrInvalidOauthProviderInvalid Oauth Provider
bad-request/invalid-pathErrInvalidPathInvalid Path
bad-request/invalid-return-to-urlErrInvalidReturnToUrlInvalid Return To Url
bad-request/invalid-search-queryErrInvalidSearchQueryInvalid Search Query
bad-request/invalid-sort-fieldErrInvalidSortFieldInvalid Sort Field
bad-request/invalid-sort-filter-combinationErrInvalidSortFilterCombinationInvalid Sort Filter Combination
bad-request/invalid-upload-offsetErrInvalidUploadOffsetInvalid Upload Offset
bad-request/invalid-upload-part-gapErrInvalidUploadPartGapInvalid Upload Part Gap
bad-request/invalid-upload-part-sizeErrInvalidUploadPartSizeInvalid Upload Part Size
bad-request/invalid-workspace-id-headerErrInvalidWorkspaceIdHeaderInvalid Workspace Id Header
bad-request/method-not-allowedErrMethodNotAllowedMethod Not Allowed
bad-request/multiple-sort-params-not-allowedErrMultipleSortParamsNotAllowedMultiple Sort Params Not Allowed
bad-request/no-valid-input-paramsErrNoValidInputParamsNo Valid Input Params
bad-request/offset-upload-not-allowed-with-malware-scanningErrOffsetUploadNotAllowedWithMalwareScanningOffset Upload Not Allowed With Malware Scanning
bad-request/part-number-too-largeErrPartNumberTooLargePart Number Too Large
bad-request/path-cannot-have-trailing-whitespaceErrPathCannotHaveTrailingWhitespacePath Cannot Have Trailing Whitespace
bad-request/reauthentication-needed-fieldsErrReauthenticationNeededFieldsReauthentication Needed Fields
bad-request/request-body-too-largeErrRequestBodyTooLargeRequest Body Too Large
bad-request/request-params-contain-invalid-characterErrRequestParamsContainInvalidCharacterRequest Params Contain Invalid Character
bad-request/request-params-invalidErrRequestParamsInvalidRequest Params Invalid
bad-request/request-params-requiredErrRequestParamsRequiredRequest Params Required
bad-request/search-all-on-child-pathErrSearchAllOnChildPathSearch All On Child Path
bad-request/unrecognized-sort-indexErrUnrecognizedSortIndexUnrecognized Sort Index
bad-request/unsupported-currencyErrUnsupportedCurrencyUnsupported Currency
bad-request/unsupported-http-response-formatErrUnsupportedHttpResponseFormatUnsupported Http Response Format
bad-request/unsupported-media-typeErrUnsupportedMediaTypeUnsupported Media Type
bad-request/user-id-invalidErrUserIdInvalidUser Id Invalid
bad-request/user-id-on-user-endpointErrUserIdOnUserEndpointUser Id On User Endpoint
bad-request/user-requiredErrUserRequiredUser Required
not-authenticated/additional-authentication-requiredErrAdditionalAuthenticationRequiredAdditional Authentication Required
not-authenticated/api-key-sessions-not-supportedErrApiKeySessionsNotSupportedApi Key Sessions Not Supported
not-authenticated/authentication-requiredErrAuthenticationRequiredAuthentication Required
not-authenticated/bundle-registration-code-failedErrBundleRegistrationCodeFailedBundle Registration Code Failed
not-authenticated/files-agent-token-failedErrFilesAgentTokenFailedFiles Agent Token Failed
not-authenticated/inbox-registration-code-failedErrInboxRegistrationCodeFailedInbox Registration Code Failed
not-authenticated/invalid-credentialsErrInvalidCredentialsInvalid Credentials
not-authenticated/invalid-oauthErrInvalidOauthInvalid Oauth
not-authenticated/invalid-or-expired-codeErrInvalidOrExpiredCodeInvalid Or Expired Code
not-authenticated/invalid-sessionErrInvalidSessionInvalid Session
not-authenticated/invalid-username-or-passwordErrInvalidUsernameOrPasswordInvalid Username Or Password
not-authenticated/locked-outErrLockedOutLocked Out
not-authenticated/lockout-region-mismatchErrLockoutRegionMismatchLockout Region Mismatch
not-authenticated/one-time-password-incorrectErrOneTimePasswordIncorrectOne Time Password Incorrect
not-authenticated/two-factor-authentication-errorErrTwoFactorAuthenticationErrorTwo Factor Authentication Error
not-authenticated/two-factor-authentication-setup-expiredErrTwoFactorAuthenticationSetupExpiredTwo Factor Authentication Setup Expired
not-authorized/api-key-is-disabledErrApiKeyIsDisabledApi Key Is Disabled
not-authorized/api-key-is-path-restrictedErrApiKeyIsPathRestrictedApi Key Is Path Restricted
not-authorized/api-key-only-for-desktop-appErrApiKeyOnlyForDesktopAppApi Key Only For Desktop App
not-authorized/api-key-only-for-mobile-appErrApiKeyOnlyForMobileAppApi Key Only For Mobile App
not-authorized/api-key-only-for-office-integrationErrApiKeyOnlyForOfficeIntegrationApi Key Only For Office Integration
not-authorized/billing-information-hiddenErrBillingInformationHiddenBilling Information Hidden
not-authorized/billing-permission-requiredErrBillingPermissionRequiredBilling Permission Required
not-authorized/bundle-maximum-uses-reachedErrBundleMaximumUsesReachedBundle Maximum Uses Reached
not-authorized/bundle-permission-requiredErrBundlePermissionRequiredBundle Permission Required
not-authorized/cannot-login-while-using-keyErrCannotLoginWhileUsingKeyCannot Login While Using Key
not-authorized/cant-act-for-other-userErrCantActForOtherUserCant Act For Other User
not-authorized/contact-admin-for-password-change-helpErrContactAdminForPasswordChangeHelpContact Admin For Password Change Help
not-authorized/files-agent-failed-authorizationErrFilesAgentFailedAuthorizationFiles Agent Failed Authorization
not-authorized/folder-admin-or-billing-permission-requiredErrFolderAdminOrBillingPermissionRequiredFolder Admin Or Billing Permission Required
not-authorized/folder-admin-permission-requiredErrFolderAdminPermissionRequiredFolder Admin Permission Required
not-authorized/full-permission-requiredErrFullPermissionRequiredFull Permission Required
not-authorized/history-permission-requiredErrHistoryPermissionRequiredHistory Permission Required
not-authorized/in-app-ai-assistant-unavailableErrInAppAiAssistantUnavailableIn App Ai Assistant Unavailable
not-authorized/insufficient-permission-for-paramsErrInsufficientPermissionForParamsInsufficient Permission For Params
not-authorized/insufficient-permission-for-siteErrInsufficientPermissionForSiteInsufficient Permission For Site
not-authorized/mover-access-deniedErrMoverAccessDeniedMover Access Denied
not-authorized/mover-package-requiredErrMoverPackageRequiredMover Package Required
not-authorized/must-authenticate-with-api-keyErrMustAuthenticateWithApiKeyMust Authenticate With Api Key
not-authorized/need-admin-permission-for-inboxErrNeedAdminPermissionForInboxNeed Admin Permission For Inbox
not-authorized/non-admins-must-query-by-folder-or-pathErrNonAdminsMustQueryByFolderOrPathNon Admins Must Query By Folder Or Path
not-authorized/not-allowed-to-create-bundleErrNotAllowedToCreateBundleNot Allowed To Create Bundle
not-authorized/not-enqueuable-syncErrNotEnqueuableSyncNot Enqueuable Sync
not-authorized/password-change-not-requiredErrPasswordChangeNotRequiredPassword Change Not Required
not-authorized/password-change-requiredErrPasswordChangeRequiredPassword Change Required
not-authorized/payment-method-errorErrPaymentMethodErrorPayment Method Error
not-authorized/preview-only-permission-cannot-downloadErrPreviewOnlyPermissionCannotDownloadPreview Only Permission Cannot Download
not-authorized/read-only-sessionErrReadOnlySessionRead Only Session
not-authorized/read-permission-requiredErrReadPermissionRequiredRead Permission Required
not-authorized/reauthentication-failedErrReauthenticationFailedReauthentication Failed
not-authorized/reauthentication-failed-finalErrReauthenticationFailedFinalReauthentication Failed Final
not-authorized/reauthentication-needed-actionErrReauthenticationNeededActionReauthentication Needed Action
not-authorized/recaptcha-failedErrRecaptchaFailedRecaptcha Failed
not-authorized/remote-desktop-debug-logging-disabledErrRemoteDesktopDebugLoggingDisabledRemote Desktop Debug Logging Disabled
not-authorized/root-folder-behavior-site-admin-requiredErrRootFolderBehaviorSiteAdminRequiredRoot Folder Behavior Site Admin Required
not-authorized/root-folder-behavior-skip-site-admin-requiredErrRootFolderBehaviorSkipSiteAdminRequiredRoot Folder Behavior Skip Site Admin Required
not-authorized/self-managed-requiredErrSelfManagedRequiredSelf Managed Required
not-authorized/site-admin-or-partner-admin-permission-requiredErrSiteAdminOrPartnerAdminPermissionRequiredSite Admin Or Partner Admin Permission Required
not-authorized/site-admin-or-workspace-admin-or-folder-admin-permission-requiredErrSiteAdminOrWorkspaceAdminOrFolderAdminPermissionRequiredSite Admin Or Workspace Admin Or Folder Admin Permission Required
not-authorized/site-admin-or-workspace-admin-or-partner-admin-or-folder-admin-permission-requiredErrSiteAdminOrWorkspaceAdminOrPartnerAdminOrFolderAdminPermissionRequiredSite Admin Or Workspace Admin Or Partner Admin Or Folder Admin Permission Required
not-authorized/site-admin-or-workspace-admin-or-partner-admin-permission-requiredErrSiteAdminOrWorkspaceAdminOrPartnerAdminPermissionRequiredSite Admin Or Workspace Admin Or Partner Admin Permission Required
not-authorized/site-admin-or-workspace-admin-permission-requiredErrSiteAdminOrWorkspaceAdminPermissionRequiredSite Admin Or Workspace Admin Permission Required
not-authorized/site-admin-requiredErrSiteAdminRequiredSite Admin Required
not-authorized/site-files-are-immutableErrSiteFilesAreImmutableSite Files Are Immutable
not-authorized/two-factor-authentication-requiredErrTwoFactorAuthenticationRequiredTwo Factor Authentication Required
not-authorized/user-id-without-site-adminErrUserIdWithoutSiteAdminUser Id Without Site Admin
not-authorized/write-and-bundle-permission-requiredErrWriteAndBundlePermissionRequiredWrite And Bundle Permission Required
not-authorized/write-permission-requiredErrWritePermissionRequiredWrite Permission Required
not-foundErrNotFoundNot Found
not-found/api-key-not-foundErrApiKeyNotFoundApi Key Not Found
not-found/bundle-path-not-foundErrBundlePathNotFoundBundle Path Not Found
not-found/bundle-registration-not-foundErrBundleRegistrationNotFoundBundle Registration Not Found
not-found/code-not-foundErrCodeNotFoundCode Not Found
not-found/file-not-foundErrFileNotFoundFile Not Found
not-found/file-upload-not-foundErrFileUploadNotFoundFile Upload Not Found
not-found/group-not-foundErrGroupNotFoundGroup Not Found
not-found/inbox-not-foundErrInboxNotFoundInbox Not Found
not-found/nested-not-foundErrNestedNotFoundNested Not Found
not-found/plan-not-foundErrPlanNotFoundPlan Not Found
not-found/site-not-foundErrSiteNotFoundSite Not Found
not-found/user-not-foundErrUserNotFoundUser Not Found
processing-failureErrProcessingFailureProcessing Failure
processing-failure/agent-push-update-blockedErrAgentPushUpdateBlockedAgent Push Update Blocked
processing-failure/agent-unavailableErrAgentUnavailableAgent Unavailable
processing-failure/ai-task-cannot-be-run-manuallyErrAiTaskCannotBeRunManuallyAi Task Cannot Be Run Manually
processing-failure/already-completedErrAlreadyCompletedAlready Completed
processing-failure/automation-cannot-be-run-manuallyErrAutomationCannotBeRunManuallyAutomation Cannot Be Run Manually
processing-failure/behavior-not-allowed-on-remote-serverErrBehaviorNotAllowedOnRemoteServerBehavior Not Allowed On Remote Server
processing-failure/buffered-upload-disabled-for-this-destinationErrBufferedUploadDisabledForThisDestinationBuffered Upload Disabled For This Destination
processing-failure/bundle-only-allows-previewsErrBundleOnlyAllowsPreviewsBundle Only Allows Previews
processing-failure/bundle-operation-requires-subfolderErrBundleOperationRequiresSubfolderBundle Operation Requires Subfolder
processing-failure/configuration-locked-pathErrConfigurationLockedPathConfiguration Locked Path
processing-failure/could-not-create-parentErrCouldNotCreateParentCould Not Create Parent
processing-failure/destination-existsErrDestinationExistsDestination Exists
processing-failure/destination-folder-limitedErrDestinationFolderLimitedDestination Folder Limited
processing-failure/destination-parent-conflictErrDestinationParentConflictDestination Parent Conflict
processing-failure/destination-parent-does-not-existErrDestinationParentDoesNotExistDestination Parent Does Not Exist
processing-failure/exceeded-runtime-limitErrExceededRuntimeLimitExceeded Runtime Limit
processing-failure/expectation-already-has-open-windowErrExpectationAlreadyHasOpenWindowExpectation Already Has Open Window
processing-failure/expectation-not-manual-triggerErrExpectationNotManualTriggerExpectation Not Manual Trigger
processing-failure/expired-private-keyErrExpiredPrivateKeyExpired Private Key
processing-failure/expired-public-keyErrExpiredPublicKeyExpired Public Key
processing-failure/export-failureErrExportFailureExport Failure
processing-failure/export-not-readyErrExportNotReadyExport Not Ready
processing-failure/failed-to-change-passwordErrFailedToChangePasswordFailed To Change Password
processing-failure/file-lockedErrFileLockedFile Locked
processing-failure/file-not-uploadedErrFileNotUploadedFile Not Uploaded
processing-failure/file-pending-processingErrFilePendingProcessingFile Pending Processing
processing-failure/file-processing-errorErrFileProcessingErrorFile Processing Error
processing-failure/file-too-big-to-decryptErrFileTooBigToDecryptFile Too Big To Decrypt
processing-failure/file-too-big-to-encryptErrFileTooBigToEncryptFile Too Big To Encrypt
processing-failure/file-uploaded-to-wrong-regionErrFileUploadedToWrongRegionFile Uploaded To Wrong Region
processing-failure/filename-too-longErrFilenameTooLongFilename Too Long
processing-failure/folder-lockedErrFolderLockedFolder Locked
processing-failure/folder-not-emptyErrFolderNotEmptyFolder Not Empty
processing-failure/history-unavailableErrHistoryUnavailableHistory Unavailable
processing-failure/invalid-bundle-codeErrInvalidBundleCodeInvalid Bundle Code
processing-failure/invalid-file-typeErrInvalidFileTypeInvalid File Type
processing-failure/invalid-filenameErrInvalidFilenameInvalid Filename
processing-failure/invalid-priority-colorErrInvalidPriorityColorInvalid Priority Color
processing-failure/invalid-rangeErrInvalidRangeInvalid Range
processing-failure/invalid-siteErrInvalidSiteInvalid Site
processing-failure/invalid-zip-fileErrInvalidZipFileInvalid Zip File
processing-failure/metadata-not-supported-on-remotesErrMetadataNotSupportedOnRemotesMetadata Not Supported On Remotes
processing-failure/model-save-errorErrModelSaveErrorModel Save Error
processing-failure/multiple-processing-errorsErrMultipleProcessingErrorsMultiple Processing Errors
processing-failure/path-too-longErrPathTooLongPath Too Long
processing-failure/recipient-already-sharedErrRecipientAlreadySharedRecipient Already Shared
processing-failure/remote-server-errorErrRemoteServerErrorRemote Server Error
processing-failure/resource-belongs-to-parent-siteErrResourceBelongsToParentSiteResource Belongs To Parent Site
processing-failure/resource-lockedErrResourceLockedResource Locked
processing-failure/subfolder-lockedErrSubfolderLockedSubfolder Locked
processing-failure/sync-in-progressErrSyncInProgressSync In Progress
processing-failure/two-factor-authentication-code-already-sentErrTwoFactorAuthenticationCodeAlreadySentTwo Factor Authentication Code Already Sent
processing-failure/two-factor-authentication-country-blacklistedErrTwoFactorAuthenticationCountryBlacklistedTwo Factor Authentication Country Blacklisted
processing-failure/two-factor-authentication-general-errorErrTwoFactorAuthenticationGeneralErrorTwo Factor Authentication General Error
processing-failure/two-factor-authentication-method-unsupported-errorErrTwoFactorAuthenticationMethodUnsupportedErrorTwo Factor Authentication Method Unsupported Error
processing-failure/two-factor-authentication-unsubscribed-recipientErrTwoFactorAuthenticationUnsubscribedRecipientTwo Factor Authentication Unsubscribed Recipient
processing-failure/updates-not-allowed-for-remotesErrUpdatesNotAllowedForRemotesUpdates Not Allowed For Remotes
rate-limited/duplicate-share-recipientErrDuplicateShareRecipientDuplicate Share Recipient
rate-limited/reauthentication-rate-limitedErrReauthenticationRateLimitedReauthentication Rate Limited
rate-limited/too-many-concurrent-loginsErrTooManyConcurrentLoginsToo Many Concurrent Logins
rate-limited/too-many-concurrent-requestsErrTooManyConcurrentRequestsToo Many Concurrent Requests
rate-limited/too-many-login-attemptsErrTooManyLoginAttemptsToo Many Login Attempts
rate-limited/too-many-requestsErrTooManyRequestsToo Many Requests
rate-limited/too-many-sharesErrTooManySharesToo Many Shares
service-unavailable/automations-unavailableErrAutomationsUnavailableAutomations Unavailable
service-unavailable/migration-in-progressErrMigrationInProgressMigration In Progress
service-unavailable/site-disabledErrSiteDisabledSite Disabled
service-unavailable/uploads-unavailableErrUploadsUnavailableUploads Unavailable
site-configuration/account-already-existsErrAccountAlreadyExistsAccount Already Exists
site-configuration/account-overdueErrAccountOverdueAccount Overdue
site-configuration/no-account-for-siteErrNoAccountForSiteNo Account For Site
site-configuration/site-was-removedErrSiteWasRemovedSite Was Removed
site-configuration/trial-expiredErrTrialExpiredTrial Expired
site-configuration/trial-lockedErrTrialLockedTrial Locked
site-configuration/user-requests-enabled-requiredErrUserRequestsEnabledRequiredUser Requests Enabled Required

ResponseError Helpers

Helpers are provided for matching error families.

Error Type PrefixGo ErrorHelper
bad-requestErrBadRequestIsBadRequest
not-authenticatedErrNotAuthenticatedIsAuthenticationError
not-authorizedErrNotAuthorizedIsAuthorizationError
not-foundErrNotFoundIsNotFound
processing-failureErrProcessingFailureIsProcessingFailure
rate-limitedErrRateLimitedIsRateLimited
service-unavailableErrServiceUnavailableIsServiceUnavailable
site-configurationErrSiteConfigurationIsSiteConfiguration