From e08a3303bf8580803b68aa13b86f4eeb101f93d2 Mon Sep 17 00:00:00 2001 From: MaxJa4 <74194322+MaxJa4@users.noreply.github.com> Date: Thu, 24 Aug 2023 19:33:47 +0200 Subject: [PATCH] Add new storage backend: Dropbox (#103) (#251) * Add new storage backend: Dropbox (#103) * Remove duplicate check * Add concurrency level for parallel upload to dropbox. * Fixed some instabilites. Changed default concurrency to 6. * Added some env config vars to readme. WIP * Wrap errors for storage backend creation. * Fixed token issue, added OAuth2 including recipe and docs. * Readme typo fix * Test for dropbox integration * Update info and TOC * Missed a file * Docker-compose fix * Fix endpoint connection * Fix container names * Fix log fetching * Fix log fetching (again) * Print command output to logs * Addressing comments part 1 * Address comments part 2 * OpenAPI Mock spec path adjusted * Dropbox FileMetadata reflection refactored * NaturalNumber type added * Add OAuth2 mock server for CI testing * Fix env name of oauth2 endpoint * Remove hostname * Add forgotten change to commit... * Fix oauth2 endpoint "Worked on my machine" * Try again * Try suggested hostname again * Fix docker internal DNS resolving issues (as suggested by oauth2 mock docs) * Add docker network, remove hostname * Network not external * Last hostname try * Add more delay, add oauth2 endpoint log * Temp CI log output of command even when failing * Try different config and method * Add custom server-hostname. Rename test folder to accellerate debugging * Try that fix again * Adding quotes * Port fix attempt * Try localhost * Try extra hosts * Change network mode * Undo some changes * Use static IP * Remove specific IP binding * Change to default net driver * Fix static IP * Squash for revert * Revert "Squash for revert" This reverts commit e9b617be9a15016f8abb724709a6a1aef321cdb9. * Actual fix for CI testing from #257 --- README.md | 81 +- cmd/backup/config.go | 26 + cmd/backup/script.go | 37 +- go.mod | 8 + go.sum | 4 + internal/storage/dropbox/dropbox.go | 260 + test/dropbox/docker-compose.yml | 57 + test/dropbox/oauth2_config.json | 37 + test/dropbox/run.sh | 40 + test/dropbox/user_v2.yaml | 12753 ++++++++++++++++++++++++++ 10 files changed, 13292 insertions(+), 11 deletions(-) create mode 100644 internal/storage/dropbox/dropbox.go create mode 100644 test/dropbox/docker-compose.yml create mode 100644 test/dropbox/oauth2_config.json create mode 100644 test/dropbox/run.sh create mode 100644 test/dropbox/user_v2.yaml diff --git a/README.md b/README.md index 71bb79c..cb20830 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,10 @@ # docker-volume-backup -Backup Docker volumes locally or to any S3, WebDAV, Azure Blob Storage or SSH compatible storage. +Backup Docker volumes locally or to any S3, WebDAV, Azure Blob Storage, Dropbox or SSH compatible storage. The [offen/docker-volume-backup](https://hub.docker.com/r/offen/docker-volume-backup) Docker image can be used as a lightweight (below 15MB) sidecar container to an existing Docker setup. -It handles __recurring or one-off backups of Docker volumes__ to a __local directory__, __any S3, WebDAV, Azure Blob Storage or SSH compatible storage (or any combination) and rotates away old backups__ if configured. It also supports __encrypting your backups using GPG__ and __sending notifications for failed backup runs__. +It handles __recurring or one-off backups of Docker volumes__ to a __local directory__, __any S3, WebDAV, Azure Blob Storage, Dropbox or SSH compatible storage (or any combination) and rotates away old backups__ if configured. It also supports __encrypting your backups using GPG__ and __sending notifications for failed backup runs__. @@ -36,6 +36,7 @@ It handles __recurring or one-off backups of Docker volumes__ to a __local direc - [Define different retention schedules](#define-different-retention-schedules) - [Use special characters in notification URLs](#use-special-characters-in-notification-urls) - [Handle file uploads using third party tools](#handle-file-uploads-using-third-party-tools) + - [Setup Dropbox storage backend](#setup-dropbox-storage-backend) - [Recipes](#recipes) - [Backing up to AWS S3](#backing-up-to-aws-s3) - [Backing up to Filebase](#backing-up-to-filebase) @@ -44,6 +45,7 @@ It handles __recurring or one-off backups of Docker volumes__ to a __local direc - [Backing up to WebDAV](#backing-up-to-webdav) - [Backing up to SSH](#backing-up-to-ssh) - [Backing up to Azure Blob Storage](#backing-up-to-azure-blob-storage) + - [Backing up to Dropbox](#backing-up-to-dropbox) - [Backing up locally](#backing-up-locally) - [Backing up to AWS S3 as well as locally](#backing-up-to-aws-s3-as-well-as-locally) - [Running on a custom cron schedule](#running-on-a-custom-cron-schedule) @@ -356,6 +358,26 @@ You can populate below template according to your requirements and use it as you # AZURE_STORAGE_ENDPOINT="https://{{ .AccountName }}.blob.core.windows.net/" +# Absolute remote path in your Dropbox where the backups shall be stored. +# Note: Use your app's subpath in Dropbox, if it doesn't have global access. +# Consulte the README for further information. + +# DROPBOX_REMOTE_PATH="/my/directory" + +# Number of concurrent chunked uploads for Dropbox. +# Values above 6 usually result in no enhancements. + +# DROPBOX_CONCURRENCY_LEVEL="6" + +# App key and app secret from your app created at https://www.dropbox.com/developers/apps/info + +# DROPBOX_APP_KEY="" +# DROPBOX_APP_SECRET="" + +# Refresh token to request new short-lived tokens (OAuth2). Consult README to see how to get one. + +# DROPBOX_REFRESH_TOKEN="" + # In addition to storing backups remotely, you can also keep local copies. # Pass a container-local path to store your backups if needed. You also need to # mount a local folder or Docker volume into that location (`/archive` @@ -1020,6 +1042,37 @@ volumes: Commands will be invoked with the filepath of the tar archive passed as `COMMAND_RUNTIME_BACKUP_FILEPATH`. +### Setup Dropbox storage backend + +#### Auth-Setup: + +1. Create a new Dropbox App in the [App Console](https://www.dropbox.com/developers/apps) +2. Open your new Dropbox App and set `DROPBOX_APP_KEY` and `DROPBOX_APP_SECRET` in your environment (e.g. docker-compose.yml) accordingly +3. Click on `Permissions` in your app and make sure, that the following permissions are cranted (or more): + - `files.metadata.write` + - `files.metadata.read` + - `files.content.write` + - `files.content.read` +4. Replace APPKEY in `https://www.dropbox.com/oauth2/authorize?client_id=APPKEY&token_access_type=offline&response_type=code` with the app key from step 2 +5. Visit the URL and confirm the access of your app. This gives you an `auth code` -> save it somewhere! +6. Replace AUTHCODE, APPKEY, APPSECRET accordingly and perform the request: +``` +curl https://api.dropbox.com/oauth2/token \ + -d code=AUTHCODE \ + -d grant_type=authorization_code \ + -d client_id=APPKEY \ + -d client_secret=APPSECRET +``` +7. Execute the request. You will get a JSON formatted reply. Use the value of the `refresh_token` for the last environment variable `DROPBOX_REFRESH_TOKEN` +8. You should now have `DROPBOX_APP_KEY`, `DROPBOX_APP_SECRET` and `DROPBOX_REFRESH_TOKEN` set. These don't expire. + +Note: Using the "Generated access token" in the app console is not supported, as it is only very short lived and therefore not suitable for an automatic backup solution. The refresh token handles this automatically - the setup procedure above is only needed once. + +#### Other parameters + +Important: If you chose `App folder` access during the creation of your Dropbox app in step 1 above, you can only write in the app's directory! +This means, that `DROPBOX_REMOTE_PATH` must start with e.g. `/Apps/YOUR_APP_NAME` or `/Apps/YOUR_APP_NAME/some_sub_dir` + ## Recipes This section lists configuration for some real-world use cases that you can mix and match according to your needs. @@ -1187,6 +1240,30 @@ volumes: data: ``` +### Backing up to Dropbox + +See [Dropbox Setup](#setup-dropbox-storage-backend) on how to get the appropriate environment values. + +```yml +version: '3' + +services: + # ... define other services using the `data` volume here + backup: + image: offen/docker-volume-backup:v2 + environment: + DROPBOX_REFRESH_TOKEN: REFRESH_KEY # replace + DROPBOX_APP_KEY: APP_KEY # replace + DROPBOX_APP_SECRET: APP_SECRET # replace + DROPBOX_REMOTE_PATH: /Apps/my-test-app/some_subdir # replace + volumes: + - data:/backup/my-app-backup:ro + - /var/run/docker.sock:/var/run/docker.sock:ro + +volumes: + data: +``` + ### Backing up locally ```yml diff --git a/cmd/backup/config.go b/cmd/backup/config.go index 7f62afe..b7ea5d1 100644 --- a/cmd/backup/config.go +++ b/cmd/backup/config.go @@ -10,6 +10,7 @@ import ( "io/ioutil" "os" "regexp" + "strconv" "time" ) @@ -70,6 +71,13 @@ type Config struct { AzureStorageContainerName string `split_words:"true"` AzureStoragePath string `split_words:"true"` AzureStorageEndpoint string `split_words:"true" default:"https://{{ .AccountName }}.blob.core.windows.net/"` + DropboxEndpoint string `split_words:"true" default:"https://api.dropbox.com/"` + DropboxOAuth2Endpoint string `envconfig:"DROPBOX_OAUTH2_ENDPOINT" default:"https://api.dropbox.com/"` + DropboxRefreshToken string `split_words:"true"` + DropboxAppKey string `split_words:"true"` + DropboxAppSecret string `split_words:"true"` + DropboxRemotePath string `split_words:"true"` + DropboxConcurrencyLevel NaturalNumber `split_words:"true" default:"6"` } func (c *Config) resolveSecret(envVar string, secretPath string) (string, error) { @@ -135,3 +143,21 @@ func (r *RegexpDecoder) Decode(v string) error { *r = RegexpDecoder{Re: re} return nil } + +type NaturalNumber int + +func (n *NaturalNumber) Decode(v string) error { + asInt, err := strconv.Atoi(v) + if err != nil { + return fmt.Errorf("config: error converting %s to int", v) + } + if asInt <= 0 { + return fmt.Errorf("config: expected a natural number, got %d", asInt) + } + *n = NaturalNumber(asInt) + return nil +} + +func (n *NaturalNumber) Int() int { + return int(*n) +} diff --git a/cmd/backup/script.go b/cmd/backup/script.go index adbf4cd..cd09776 100644 --- a/cmd/backup/script.go +++ b/cmd/backup/script.go @@ -19,6 +19,7 @@ import ( "github.com/offen/docker-volume-backup/internal/storage" "github.com/offen/docker-volume-backup/internal/storage/azure" + "github.com/offen/docker-volume-backup/internal/storage/dropbox" "github.com/offen/docker-volume-backup/internal/storage/local" "github.com/offen/docker-volume-backup/internal/storage/s3" "github.com/offen/docker-volume-backup/internal/storage/ssh" @@ -70,11 +71,12 @@ func newScript() (*script, error) { StartTime: time.Now(), LogOutput: logBuffer, Storages: map[string]StorageStats{ - "S3": {}, - "WebDAV": {}, - "SSH": {}, - "Local": {}, - "Azure": {}, + "S3": {}, + "WebDAV": {}, + "SSH": {}, + "Local": {}, + "Azure": {}, + "Dropbox": {}, }, }, } @@ -155,7 +157,7 @@ func newScript() (*script, error) { PartSize: s.c.AwsPartSize, } if s3Backend, err := s3.NewStorageBackend(s3Config, logFunc); err != nil { - return nil, err + return nil, fmt.Errorf("newScript: error creating s3 storage backend: %w", err) } else { s.storages = append(s.storages, s3Backend) } @@ -170,7 +172,7 @@ func newScript() (*script, error) { RemotePath: s.c.WebdavPath, } if webdavBackend, err := webdav.NewStorageBackend(webDavConfig, logFunc); err != nil { - return nil, err + return nil, fmt.Errorf("newScript: error creating webdav storage backend: %w", err) } else { s.storages = append(s.storages, webdavBackend) } @@ -187,7 +189,7 @@ func newScript() (*script, error) { RemotePath: s.c.SSHRemotePath, } if sshBackend, err := ssh.NewStorageBackend(sshConfig, logFunc); err != nil { - return nil, err + return nil, fmt.Errorf("newScript: error creating ssh storage backend: %w", err) } else { s.storages = append(s.storages, sshBackend) } @@ -212,11 +214,28 @@ func newScript() (*script, error) { } azureBackend, err := azure.NewStorageBackend(azureConfig, logFunc) if err != nil { - return nil, err + return nil, fmt.Errorf("newScript: error creating azure storage backend: %w", err) } s.storages = append(s.storages, azureBackend) } + if s.c.DropboxRefreshToken != "" && s.c.DropboxAppKey != "" && s.c.DropboxAppSecret != "" { + dropboxConfig := dropbox.Config{ + Endpoint: s.c.DropboxEndpoint, + OAuth2Endpoint: s.c.DropboxOAuth2Endpoint, + RefreshToken: s.c.DropboxRefreshToken, + AppKey: s.c.DropboxAppKey, + AppSecret: s.c.DropboxAppSecret, + RemotePath: s.c.DropboxRemotePath, + ConcurrencyLevel: s.c.DropboxConcurrencyLevel.Int(), + } + dropboxBackend, err := dropbox.NewStorageBackend(dropboxConfig, logFunc) + if err != nil { + return nil, fmt.Errorf("newScript: error creating dropbox storage backend: %w", err) + } + s.storages = append(s.storages, dropboxBackend) + } + if s.c.EmailNotificationRecipient != "" { emailURL := fmt.Sprintf( "smtp://%s:%s@%s:%d/?from=%s&to=%s", diff --git a/go.mod b/go.mod index 3b75292..61e11b9 100644 --- a/go.mod +++ b/go.mod @@ -20,6 +20,13 @@ require ( golang.org/x/sync v0.3.0 ) +require ( + github.com/golang/protobuf v1.5.2 // indirect + golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/protobuf v1.28.1 // indirect +) + require ( github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect @@ -28,6 +35,7 @@ require ( github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.4.0 // indirect + github.com/dropbox/dropbox-sdk-go-unofficial/v6 v6.0.5 github.com/dustin/go-humanize v1.0.1 // indirect github.com/fatih/color v1.13.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/go.sum b/go.sum index a9aba53..44e1ac1 100644 --- a/go.sum +++ b/go.sum @@ -257,6 +257,8 @@ github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKoh github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dropbox/dropbox-sdk-go-unofficial/v6 v6.0.5 h1:FT+t0UEDykcor4y3dMVKXIiWJETBpRgERYTGlmMd7HU= +github.com/dropbox/dropbox-sdk-go-unofficial/v6 v6.0.5/go.mod h1:rSS3kM9XMzSQ6pw91Qgd6yB5jdt70N4OdtrAf74As5M= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= @@ -785,6 +787,7 @@ golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7Lm golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 h1:nt+Q6cXKz4MosCSpnbMtqiQ8Oz0pxTef2B4Vca2lvfk= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1046,6 +1049,7 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= diff --git a/internal/storage/dropbox/dropbox.go b/internal/storage/dropbox/dropbox.go new file mode 100644 index 0000000..954c638 --- /dev/null +++ b/internal/storage/dropbox/dropbox.go @@ -0,0 +1,260 @@ +package dropbox + +import ( + "bytes" + "context" + "fmt" + "net/url" + "os" + "path" + "path/filepath" + "strings" + "sync" + "time" + + "github.com/dropbox/dropbox-sdk-go-unofficial/v6/dropbox" + "github.com/dropbox/dropbox-sdk-go-unofficial/v6/dropbox/files" + "github.com/offen/docker-volume-backup/internal/storage" + "golang.org/x/oauth2" +) + +type dropboxStorage struct { + *storage.StorageBackend + client files.Client + concurrencyLevel int +} + +// Config allows to configure a Dropbox storage backend. +type Config struct { + Endpoint string + OAuth2Endpoint string + RefreshToken string + AppKey string + AppSecret string + RemotePath string + ConcurrencyLevel int +} + +// NewStorageBackend creates and initializes a new Dropbox storage backend. +func NewStorageBackend(opts Config, logFunc storage.Log) (storage.Backend, error) { + tokenUrl, _ := url.JoinPath(opts.OAuth2Endpoint, "oauth2/token") + + conf := &oauth2.Config{ + ClientID: opts.AppKey, + ClientSecret: opts.AppSecret, + Endpoint: oauth2.Endpoint{ + TokenURL: tokenUrl, + }, + } + + logFunc(storage.LogLevelInfo, "Dropbox", "Fetching fresh access token for Dropbox storage backend.") + tkSource := conf.TokenSource(context.Background(), &oauth2.Token{RefreshToken: opts.RefreshToken}) + token, err := tkSource.Token() + if err != nil { + return nil, fmt.Errorf("(*dropboxStorage).NewStorageBackend: Error refreshing token: %w", err) + } + + dbxConfig := dropbox.Config{ + Token: token.AccessToken, + } + + if opts.Endpoint != "https://api.dropbox.com/" { + dbxConfig.URLGenerator = func(hostType string, namespace string, route string) string { + return fmt.Sprintf("%s/%d/%s/%s", opts.Endpoint, 2, namespace, route) + } + } + + client := files.New(dbxConfig) + + if opts.ConcurrencyLevel < 1 { + logFunc(storage.LogLevelWarning, "Dropbox", "Concurrency level must be at least 1! Using 1 instead of %d.", opts.ConcurrencyLevel) + opts.ConcurrencyLevel = 1 + } + + return &dropboxStorage{ + StorageBackend: &storage.StorageBackend{ + DestinationPath: opts.RemotePath, + Log: logFunc, + }, + client: client, + concurrencyLevel: opts.ConcurrencyLevel, + }, nil +} + +// Name returns the name of the storage backend +func (b *dropboxStorage) Name() string { + return "Dropbox" +} + +// Copy copies the given file to the WebDav storage backend. +func (b *dropboxStorage) Copy(file string) error { + _, name := path.Split(file) + + folderArg := files.NewCreateFolderArg(b.DestinationPath) + if _, err := b.client.CreateFolderV2(folderArg); err != nil { + switch err := err.(type) { + case files.CreateFolderV2APIError: + if err.EndpointError.Path.Tag != files.WriteErrorConflict { + return fmt.Errorf("(*dropboxStorage).Copy: Error creating directory '%s' in Dropbox: %w", b.DestinationPath, err) + } + b.Log(storage.LogLevelInfo, b.Name(), "Destination path '%s' already exists in Dropbox, no new directory required.", b.DestinationPath) + default: + return fmt.Errorf("(*dropboxStorage).Copy: Error creating directory '%s' in Dropbox: %w", b.DestinationPath, err) + } + } + + r, err := os.Open(file) + if err != nil { + return fmt.Errorf("(*dropboxStorage).Copy: Error opening the file to be uploaded: %w", err) + } + defer r.Close() + + // Start new upload session and get session id + + b.Log(storage.LogLevelInfo, b.Name(), "Starting upload session for backup '%s' to Dropbox at path '%s'.", file, b.DestinationPath) + + var sessionId string + uploadSessionStartArg := files.NewUploadSessionStartArg() + uploadSessionStartArg.SessionType = &files.UploadSessionType{Tagged: dropbox.Tagged{Tag: files.UploadSessionTypeConcurrent}} + if res, err := b.client.UploadSessionStart(uploadSessionStartArg, nil); err != nil { + return fmt.Errorf("(*dropboxStorage).Copy: Error starting the upload session: %w", err) + } else { + sessionId = res.SessionId + } + + // Send the file in 148MB chunks (Dropbox API limit is 150MB, concurrent upload requires a multiple of 4MB though) + // Last append can be any size <= 150MB with Close=True + + const chunkSize = 148 * 1024 * 1024 // 148MB + var offset uint64 = 0 + var guard = make(chan struct{}, b.concurrencyLevel) + var errorChn = make(chan error, b.concurrencyLevel) + var EOFChn = make(chan bool, b.concurrencyLevel) + var mu sync.Mutex + var wg sync.WaitGroup + +loop: + for { + guard <- struct{}{} // limit concurrency + select { + case err := <-errorChn: // error from goroutine + return err + case <-EOFChn: // EOF from goroutine + wg.Wait() // wait for all goroutines to finish + break loop + default: + } + + go func() { + defer func() { + wg.Done() + <-guard + }() + wg.Add(1) + chunk := make([]byte, chunkSize) + + mu.Lock() // to preserve offset of chunks + + select { + case <-EOFChn: + EOFChn <- true // put it back for outer loop + mu.Unlock() + return // already EOF + default: + } + + bytesRead, err := r.Read(chunk) + if err != nil { + errorChn <- fmt.Errorf("(*dropboxStorage).Copy: Error reading the file to be uploaded: %w", err) + mu.Unlock() + return + } + chunk = chunk[:bytesRead] + + uploadSessionAppendArg := files.NewUploadSessionAppendArg( + files.NewUploadSessionCursor(sessionId, offset), + ) + isEOF := bytesRead < chunkSize + uploadSessionAppendArg.Close = isEOF + if isEOF { + EOFChn <- true + } + offset += uint64(bytesRead) + + mu.Unlock() + + if err := b.client.UploadSessionAppendV2(uploadSessionAppendArg, bytes.NewReader(chunk)); err != nil { + errorChn <- fmt.Errorf("(*dropboxStorage).Copy: Error appending the file to the upload session: %w", err) + return + } + }() + } + + // Finish the upload session, commit the file (no new data added) + + _, err = b.client.UploadSessionFinish( + files.NewUploadSessionFinishArg( + files.NewUploadSessionCursor(sessionId, 0), + files.NewCommitInfo(filepath.Join(b.DestinationPath, name)), + ), nil) + if err != nil { + return fmt.Errorf("(*dropboxStorage).Copy: Error finishing the upload session: %w", err) + } + + b.Log(storage.LogLevelInfo, b.Name(), "Uploaded a copy of backup '%s' to Dropbox at path '%s'.", file, b.DestinationPath) + + return nil +} + +// Prune rotates away backups according to the configuration and provided deadline for the Dropbox storage backend. +func (b *dropboxStorage) Prune(deadline time.Time, pruningPrefix string) (*storage.PruneStats, error) { + var entries []files.IsMetadata + res, err := b.client.ListFolder(files.NewListFolderArg(b.DestinationPath)) + if err != nil { + return nil, fmt.Errorf("(*webDavStorage).Prune: Error looking up candidates from remote storage: %w", err) + } + entries = append(entries, res.Entries...) + + for res.HasMore { + res, err = b.client.ListFolderContinue(files.NewListFolderContinueArg(res.Cursor)) + if err != nil { + return nil, fmt.Errorf("(*webDavStorage).Prune: Error looking up candidates from remote storage: %w", err) + } + entries = append(entries, res.Entries...) + } + + var matches []*files.FileMetadata + var lenCandidates int + for _, candidate := range entries { + switch candidate := candidate.(type) { + case *files.FileMetadata: + if !strings.HasPrefix(candidate.Name, pruningPrefix) { + continue + } + lenCandidates++ + if candidate.ServerModified.Before(deadline) { + matches = append(matches, candidate) + } + default: + continue + } + } + + stats := &storage.PruneStats{ + Total: uint(lenCandidates), + Pruned: uint(len(matches)), + } + + if err := b.DoPrune(b.Name(), len(matches), lenCandidates, "Dropbox backup(s)", func() error { + for _, match := range matches { + if _, err := b.client.DeleteV2(files.NewDeleteArg(filepath.Join(b.DestinationPath, match.Name))); err != nil { + return fmt.Errorf("(*dropboxStorage).Prune: Error removing file from Dropbox storage: %w", err) + } + } + return nil + }); err != nil { + return stats, err + } + + return stats, nil +} diff --git a/test/dropbox/docker-compose.yml b/test/dropbox/docker-compose.yml new file mode 100644 index 0000000..6307e56 --- /dev/null +++ b/test/dropbox/docker-compose.yml @@ -0,0 +1,57 @@ +version: '3' + +services: + openapi_mock: + image: muonsoft/openapi-mock + environment: + OPENAPI_MOCK_USE_EXAMPLES: if_present + OPENAPI_MOCK_SPECIFICATION_URL: '/etc/openapi/user_v2.yaml' + ports: + - 8080:8080 + volumes: + - ./user_v2.yaml:/etc/openapi/user_v2.yaml + + oauth2_mock: + image: ghcr.io/navikt/mock-oauth2-server:1.0.0 + ports: + - 8090:8090 + environment: + PORT: 8090 + JSON_CONFIG_PATH: '/etc/oauth2/config.json' + volumes: + - ./oauth2_config.json:/etc/oauth2/config.json + + backup: + image: offen/docker-volume-backup:${TEST_VERSION:-canary} + hostname: hostnametoken + depends_on: + - openapi_mock + - oauth2_mock + restart: always + environment: + BACKUP_FILENAME_EXPAND: 'true' + BACKUP_FILENAME: test-$$HOSTNAME.tar.gz + BACKUP_CRON_EXPRESSION: 0 0 5 31 2 ? + BACKUP_RETENTION_DAYS: ${BACKUP_RETENTION_DAYS:-7} + BACKUP_PRUNING_LEEWAY: 5s + BACKUP_PRUNING_PREFIX: test + DROPBOX_ENDPOINT: http://openapi_mock:8080 + DROPBOX_OAUTH2_ENDPOINT: http://oauth2_mock:8090 + DROPBOX_REFRESH_TOKEN: test + DROPBOX_APP_KEY: test + DROPBOX_APP_SECRET: test + DROPBOX_REMOTE_PATH: /test + DROPBOX_CONCURRENCY_LEVEL: 6 + volumes: + - app_data:/backup/app_data:ro + - /var/run/docker.sock:/var/run/docker.sock + + offen: + image: offen/offen:latest + labels: + - docker-volume-backup.stop-during-backup=true + volumes: + - app_data:/var/opt/offen + +volumes: + app_data: diff --git a/test/dropbox/oauth2_config.json b/test/dropbox/oauth2_config.json new file mode 100644 index 0000000..0927bc1 --- /dev/null +++ b/test/dropbox/oauth2_config.json @@ -0,0 +1,37 @@ +{ + "interactiveLogin": true, + "httpServer": "NettyWrapper", + "tokenCallbacks": [ + { + "issuerId": "issuer1", + "tokenExpiry": 120, + "requestMappings": [ + { + "requestParam": "scope", + "match": "scope1", + "claims": { + "sub": "subByScope", + "aud": [ + "audByScope" + ] + } + } + ] + }, + { + "issuerId": "issuer2", + "requestMappings": [ + { + "requestParam": "someparam", + "match": "somevalue", + "claims": { + "sub": "subBySomeParam", + "aud": [ + "audBySomeParam" + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/dropbox/run.sh b/test/dropbox/run.sh new file mode 100644 index 0000000..e581c12 --- /dev/null +++ b/test/dropbox/run.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +set -e + +cd "$(dirname "$0")" +. ../util.sh +current_test=$(basename $(pwd)) + +docker compose up -d +sleep 5 + +logs=$(docker compose exec -T backup backup) + +sleep 5 + +expect_running_containers "4" + +echo "$logs" +if echo "$logs" | grep -q "ERROR"; then + fail "Backup failed, errors reported: $dvb_logs" +else + pass "Backup succeeded, no errors reported." +fi + +# The second part of this test checks if backups get deleted when the retention +# is set to 0 days (which it should not as it would mean all backups get deleted) +# TODO: find out if we can test actual deletion without having to wait for a day +BACKUP_RETENTION_DAYS="0" docker compose up -d +sleep 5 + +logs=$(docker compose exec -T backup backup) + +echo "$logs" +if echo "$logs" | grep -q "Refusing to do so, please check your configuration"; then + pass "Remote backups have not been deleted." +else + fail "Remote backups would have been deleted: $dvb_logs" +fi + +docker compose down --volumes diff --git a/test/dropbox/user_v2.yaml b/test/dropbox/user_v2.yaml new file mode 100644 index 0000000..a17db7e --- /dev/null +++ b/test/dropbox/user_v2.yaml @@ -0,0 +1,12753 @@ +openapi: 3.0.1 +info: + title: Dropbox User API v2 + description: >- + The Dropbox API allows developers to work with files in Dropbox, including + advanced functionality like full-text search, thumbnails, and sharing. + version: 1.0.0 +servers: + - url: //api.dropbox.com/2 +paths: + /files/properties/update: + post: + summary: Files - Properties - Update + operationId: FilesPropertiesUpdate + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdatePropertiesArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/UpdatePropertiesError' + x-codegen-request-body-name: body + /files/move: + post: + summary: Files - Move + description: |- + Move a file or folder to a different location in the user's Dropbox. + If the source path is a folder all its contents will be moved. + operationId: FilesMove + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationError' + x-codegen-request-body-name: body + /sharing/relinquish_file_membership: + post: + summary: Sharing - Relinquish File Membership + description: >- + The current user relinquishes their membership in the designated file. + Note that the current user may still have inherited access to this file + through the parent folder. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingRelinquishFileMembership + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RelinquishFileMembershipArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/RelinquishFileMembershipError' + x-codegen-request-body-name: body + /sharing/list_folder_members: + post: + summary: Sharing - List Folder Members + description: |- + Returns shared folder membership by its folder ID. + Apps must have full Dropbox access to use this endpoint. + operationId: SharingListFolderMembers + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderMembersArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SharedFolderMembers' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/SharedFolderAccessError' + x-codegen-request-body-name: body + /sharing/get_folder_metadata: + post: + summary: Sharing - Get Folder Metadata + description: |- + Returns shared folder metadata by its folder ID. + Apps must have full Dropbox access to use this endpoint. + operationId: SharingGetFolderMetadata + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetMetadataArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SharedFolderMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/SharedFolderAccessError' + x-codegen-request-body-name: body + /users/get_current_account: + post: + summary: Users - Get Current Account + description: Get information about the current user's account. + operationId: UsersGetCurrentAccount + requestBody: + content: + application/json: {} + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FullAccount' + default: + description: Error + content: {} + x-codegen-request-body-name: body + /paper/docs/users/list: + post: + summary: Paper - Docs - Users - List + description: >- + Lists all users who visited the Paper doc or users with explicit access. + This call excludes users who have been removed. The list is sorted by + the date of the visit or the share date. + + The list will include both users, the explicitly shared ones as well as + those who came in using the Paper url link. + operationId: PaperDocsUsersList + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersOnPaperDocArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersOnPaperDocResponse' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DocLookupError' + x-codegen-request-body-name: body + /sharing/unshare_file: + post: + summary: Sharing - Unshare File + description: Remove all members from this file. Does not remove inherited members. + operationId: SharingUnshareFile + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UnshareFileArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/UnshareFileError' + x-codegen-request-body-name: body + /sharing/revoke_shared_link: + post: + summary: Sharing - Revoke Shared Link + description: >- + Revoke a shared link. + + Note that even after revoking a shared link to a file, the file may be + accessible if there are shared links leading to any of the file parent + folders. To list all shared links that enable access to a specific file, + you can use the :route:`list_shared_links` with the file as the + :field:`ListSharedLinksArg.path` argument. + operationId: SharingRevokeSharedLink + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RevokeSharedLinkArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/RevokeSharedLinkError' + x-codegen-request-body-name: body + /sharing/check_remove_member_job_status: + post: + summary: Sharing - Check Remove Member Job Status + description: |- + Returns the status of an asynchronous job for sharing a folder. + Apps must have full Dropbox access to use this endpoint. + operationId: SharingCheckRemoveMemberJobStatus + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PollArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/RemoveMemberJobStatus' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PollError' + x-codegen-request-body-name: body + /sharing/update_file_member: + post: + summary: Sharing - Update File Member + description: Changes a member's access on a shared file. + operationId: SharingUpdateFileMember + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateFileMemberArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/MemberAccessLevelResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/FileMemberActionError' + x-codegen-request-body-name: body + /files/upload_session/finish_batch/check: + post: + summary: Files - Upload Session - Finish Batch - Check + description: >- + Returns the status of an asynchronous job for + :route:`upload_session/finish_batch`. If success, it returns list of + result for each entry. + operationId: FilesUploadSessionFinishBatchCheck + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PollArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/UploadSessionFinishBatchJobStatus' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PollError' + x-codegen-request-body-name: body + /files/delete_batch: + post: + summary: Files - Delete Batch + description: >- + Delete multiple files/folders at once. + + This route is asynchronous, which returns a job ID immediately and runs + the delete batch asynchronously. Use :route:`delete_batch/check` to + check the job status. + operationId: FilesDeleteBatch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteBatchArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteBatchLaunch' + default: + description: Error + content: {} + x-codegen-request-body-name: body + /files/create_folder_batch/check: + post: + summary: Files - Create Folder Batch - Check + description: >- + Returns the status of an asynchronous job for + :route:`create_folder_batch`. If success, it returns list of result for + each entry. + operationId: FilesCreateFolderBatchCheck + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PollArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFolderBatchJobStatus' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PollError' + x-codegen-request-body-name: body + /sharing/mount_folder: + post: + summary: Sharing - Mount Folder + description: >- + The current user mounts the designated folder. + + Mount a shared folder for a user after they have been added as a member. + Once mounted, the shared folder will appear in their Dropbox. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingMountFolder + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MountFolderArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SharedFolderMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/MountFolderError' + x-codegen-request-body-name: body + /files/restore: + post: + summary: Files - Restore + description: Restore a file to a specific revision. + operationId: FilesRestore + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RestoreArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FileMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/RestoreError' + x-codegen-request-body-name: body + /file_requests/update: + post: + summary: File Requests - Update + description: Update a file request. + operationId: FileRequestsUpdate + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateFileRequestArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FileRequest' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateFileRequestError' + x-codegen-request-body-name: body + /file_properties/templates/remove_for_team: + post: + summary: File Properties - Templates - Remove For Team + description: >- + Permanently removes the specified template created from + :route:`templates/add_for_user`. All properties associated with the + template will also be removed. This action cannot be undone. + operationId: FilePropertiesTemplatesRemoveForTeam + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RemoveTemplateArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateError' + x-codegen-request-body-name: body + /files/properties/template/get: + post: + summary: Files - Properties - Template - Get + operationId: FilesPropertiesTemplateGet + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetTemplateArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/GetTemplateResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateError' + x-codegen-request-body-name: body + /paper/docs/get_folder_info: + post: + summary: Paper - Docs - Get Folder Info + description: >- + Retrieves folder information for the given Paper doc. This includes: + - folder sharing policy; permissions for subfolders are set by the top-level folder. + - full 'filepath', i.e. the list of folders (both folderId and folderName) from the root folder to the folder directly containing the Paper doc. + + Note: If the Paper doc is not in any folder (aka unfiled) the response + will be empty. + operationId: PaperDocsGetFolderInfo + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RefPaperDoc' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FoldersContainingPaperDoc' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DocLookupError' + x-codegen-request-body-name: body + /files/copy_batch: + post: + summary: Files - Copy Batch + description: >- + Copy multiple files or folders to different locations at once in the + user's Dropbox. + + If :field:`RelocationBatchArg.allow_shared_folder` is false, this route + is atomic. If on entry failes, the whole transaction will abort. If + :field:`RelocationBatchArg.allow_shared_folder` is true, not atomicity + is guaranteed, but you will be able to copy the contents of shared + folders to new locations. + + This route will return job ID immediately and do the async copy job in + background. Please use :route:`copy_batch/check` to check the job + status. + operationId: FilesCopyBatch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationBatchArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationBatchLaunch' + default: + description: Error + content: {} + x-codegen-request-body-name: body + /file_properties/properties/search: + post: + summary: File Properties - Properties - Search + description: Search across property templates for particular property field values. + operationId: FilePropertiesPropertiesSearch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PropertiesSearchArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/PropertiesSearchResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PropertiesSearchError' + x-codegen-request-body-name: body + /files/delete: + post: + summary: Files - Delete + description: >- + Delete the file or folder at a given path. + + If the path is a folder, all its contents will be deleted too. + + A successful response indicates that the file or folder was deleted. The + returned metadata will be the corresponding :type:`FileMetadata` or + :type:`FolderMetadata` for the item at time of deletion, and not a + :type:`DeletedMetadata` object. + operationId: FilesDelete + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteError' + x-codegen-request-body-name: body + /files/properties/add: + post: + summary: Files - Properties - Add + operationId: FilesPropertiesAdd + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AddPropertiesArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/AddPropertiesError' + x-codegen-request-body-name: body + /sharing/check_share_job_status: + post: + summary: Sharing - Check Share Job Status + description: |- + Returns the status of an asynchronous job for sharing a folder. + Apps must have full Dropbox access to use this endpoint. + operationId: SharingCheckShareJobStatus + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PollArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ShareFolderJobStatus' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PollError' + x-codegen-request-body-name: body + /files/get_thumbnail_batch: + post: + summary: Files - Get Thumbnail Batch + description: >- + Get thumbnails for a list of images. We allow up to 25 thumbnails in a + single batch. + + This method currently supports files with the following file extensions: + jpg, jpeg, png, tiff, tif, gif and bmp. Photos that are larger than 20MB + in size won't be converted to a thumbnail. + operationId: FilesGetThumbnailBatch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetThumbnailBatchArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/GetThumbnailBatchResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/GetThumbnailBatchError' + x-codegen-request-body-name: body + /sharing/remove_folder_member: + post: + summary: Sharing - Remove Folder Member + description: >- + Allows an owner or editor (if the ACL update policy allows) of a shared + folder to remove another member. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingRemoveFolderMember + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RemoveFolderMemberArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/LaunchResultBase' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/RemoveFolderMemberError' + x-codegen-request-body-name: body + /sharing/update_folder_member: + post: + summary: Sharing - Update Folder Member + description: >- + Allows an owner or editor of a shared folder to update another member's + permissions. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingUpdateFolderMember + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateFolderMemberArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/MemberAccessLevelResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateFolderMemberError' + x-codegen-request-body-name: body + /sharing/create_shared_link_with_settings: + post: + summary: Sharing - Create Shared Link With Settings + description: >- + Create a shared link with custom settings. If no settings are given then + the default visibility is :field:`RequestedVisibility.public` (The + resolved visibility, though, may depend on other aspects such as team + and shared folder settings). + operationId: SharingCreateSharedLinkWithSettings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSharedLinkWithSettingsArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SharedLinkMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSharedLinkWithSettingsError' + x-codegen-request-body-name: body + /file_properties/properties/update: + post: + summary: File Properties - Properties - Update + description: >- + Add, update or remove properties associated with the supplied file and + templates. This endpoint should be used instead of + :route:`properties/overwrite` when property groups are being updated via + a "delta" instead of via a "snapshot" . In other words, this endpoint + will not delete any omitted fields from a property group, whereas + :route:`properties/overwrite` will delete any fields that are omitted + from a property group. + operationId: FilePropertiesPropertiesUpdate + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdatePropertiesArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/UpdatePropertiesError' + x-codegen-request-body-name: body + /sharing/unmount_folder: + post: + summary: Sharing - Unmount Folder + description: >- + The current user unmounts the designated folder. They can re-mount the + folder at a later time using :route:`mount_folder`. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingUnmountFolder + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UnmountFolderArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/UnmountFolderError' + x-codegen-request-body-name: body + /sharing/list_received_files: + post: + summary: Sharing - List Received Files + description: |- + Returns a list of all files shared with current user. + Does not include files the user has received via shared folders, and does not include unclaimed invitations. + operationId: SharingListReceivedFiles + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFilesArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListFilesResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/SharingUserError' + x-codegen-request-body-name: body + /paper/docs/sharing_policy/set: + post: + summary: Paper - Docs - Sharing Policy - Set + description: >- + Sets the default sharing policy for the given Paper doc. The default + 'team_sharing_policy' can be changed only by teams, omit this field for + personal accounts. + + + Note: 'public_sharing_policy' cannot be set to the value 'disabled' + because this setting can be changed only via the team admin console. + operationId: PaperDocsSharingPolicySet + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PaperDocSharingPolicy' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DocLookupError' + x-codegen-request-body-name: body + /files/properties/remove: + post: + summary: Files - Properties - Remove + operationId: FilesPropertiesRemove + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RemovePropertiesArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/RemovePropertiesError' + x-codegen-request-body-name: body + /files/copy_batch/check: + post: + summary: Files - Copy Batch - Check + description: >- + Returns the status of an asynchronous job for :route:`copy_batch`. If + success, it returns list of results for each entry. + operationId: FilesCopyBatchCheck + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PollArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationBatchJobStatus' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PollError' + x-codegen-request-body-name: body + /files/move_batch/check: + post: + summary: Files - Move Batch - Check + description: >- + Returns the status of an asynchronous job for :route:`move_batch`. If + success, it returns list of results for each entry. + operationId: FilesMoveBatchCheck + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PollArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationBatchJobStatus' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PollError' + x-codegen-request-body-name: body + /files/list_folder/get_latest_cursor: + post: + summary: Files - List Folder - Get Latest Cursor + description: >- + A way to quickly get a cursor for the folder's state. Unlike + :route:`list_folder`, :route:`list_folder/get_latest_cursor` doesn't + return any entries. This endpoint is for app which only needs to know + about new files and modifications and doesn't need to know about files + that already exist in Dropbox. + operationId: FilesListFolderGetLatestCursor + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderGetLatestCursorResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderError' + x-codegen-request-body-name: body + /paper/docs/sharing_policy/get: + post: + summary: Paper - Docs - Sharing Policy - Get + description: Gets the default sharing policy for the given Paper doc. + operationId: PaperDocsSharingPolicyGet + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RefPaperDoc' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SharingPolicy' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DocLookupError' + x-codegen-request-body-name: body + /sharing/share_folder: + post: + summary: Sharing - Share Folder + description: >- + Share a folder with collaborators. + + Most sharing will be completed synchronously. Large folders will be + completed asynchronously. To make testing the async case repeatable, set + `ShareFolderArg.force_async`. + + If a :field:`ShareFolderLaunch.async_job_id` is returned, you'll need to + call :route:`check_share_job_status` until the action completes to get + the metadata for the folder. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingShareFolder + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ShareFolderArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ShareFolderLaunch' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ShareFolderError' + x-codegen-request-body-name: body + /files/save_url/check_job_status: + post: + summary: Files - Save Url - Check Job Status + description: Check the status of a :route:`save_url` job. + operationId: FilesSaveUrlCheckJobStatus + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PollArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SaveUrlJobStatus' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PollError' + x-codegen-request-body-name: body + /paper/docs/users/add: + post: + summary: Paper - Docs - Users - Add + description: >- + Allows an owner or editor to add users to a Paper doc or change their + permissions using their email address or Dropbox account ID. + + + Note: The Doc owner's permissions cannot be changed. + operationId: PaperDocsUsersAdd + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AddPaperDocUser' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AddPaperDocUserMemberResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DocLookupError' + x-codegen-request-body-name: body + /files/copy_reference/save: + post: + summary: Files - Copy Reference - Save + description: >- + Save a copy reference returned by :route:`copy_reference/get` to the + user's Dropbox. + operationId: FilesCopyReferenceSave + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SaveCopyReferenceArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SaveCopyReferenceResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/SaveCopyReferenceError' + x-codegen-request-body-name: body + /sharing/add_file_member: + post: + summary: Sharing - Add File Member + description: Adds specified members to a file. + operationId: SharingAddFileMember + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AddFileMemberArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/FileMemberActionResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/AddFileMemberError' + x-codegen-request-body-name: body + /sharing/list_folders/continue: + post: + summary: Sharing - List Folders - Continue + description: >- + Once a cursor has been retrieved from :route:`list_folders`, use this to + paginate through all shared folders. The cursor must come from a + previous call to :route:`list_folders` or + :route:`list_folders/continue`. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingListFoldersContinue + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFoldersContinueArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListFoldersResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListFoldersContinueError' + x-codegen-request-body-name: body + /files/alpha/upload: + post: + summary: Files - Alpha - Upload + description: >- + Create a new file with the contents provided in the request. Note that + this endpoint is part of the properties API alpha and is slightly + different from :route:`upload`. + + Do not use this to upload a file larger than 150 MB. Instead, create an + upload session with :route:`upload_session/start`. + operationId: FilesAlphaUpload + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CommitInfoWithProperties' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FileMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/UploadErrorWithProperties' + x-codegen-request-body-name: body + /files/list_folder/longpoll: + post: + summary: Files - List Folder - Longpoll + description: >- + A longpoll endpoint to wait for changes on an account. In conjunction + with :route:`list_folder/continue`, this call gives you a low-latency + way to monitor an account for file changes. The connection will block + until there are changes available or a timeout occurs. This endpoint is + useful mostly for client-side apps. If you're looking for server-side + notifications, check out our :link:`webhooks documentation + https://www.dropbox.com/developers/reference/webhooks`. + operationId: FilesListFolderLongpoll + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderLongpollArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderLongpollResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderLongpollError' + x-codegen-request-body-name: body + /file_properties/templates/remove_for_user: + post: + summary: File Properties - Templates - Remove For User + description: >- + Permanently removes the specified template created from + :route:`templates/add_for_user`. All properties associated with the + template will also be removed. This action cannot be undone. + operationId: FilePropertiesTemplatesRemoveForUser + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RemoveTemplateArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateError' + x-codegen-request-body-name: body + /files/get_temporary_link: + post: + summary: Files - Get Temporary Link + description: >- + Get a temporary link to stream content of a file. This link will expire + in four hours and afterwards you will get 410 Gone. Content-Type of the + link is determined automatically by the file's mime type. + operationId: FilesGetTemporaryLink + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetTemporaryLinkArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/GetTemporaryLinkResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/GetTemporaryLinkError' + x-codegen-request-body-name: body + /sharing/list_folder_members/continue: + post: + summary: Sharing - List Folder Members - Continue + description: >- + Once a cursor has been retrieved from :route:`list_folder_members`, use + this to paginate through all shared folder members. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingListFolderMembersContinue + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderMembersContinueArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SharedFolderMembers' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderMembersContinueError' + x-codegen-request-body-name: body + /file_properties/templates/add_for_user: + post: + summary: File Properties - Templates - Add For User + description: >- + Add a template associated with a user. See :route:`properties/add` to + add properties to a file. This endpoint can't be called on a team member + or admin's behalf. + operationId: FilePropertiesTemplatesAddForUser + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AddTemplateArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/AddTemplateResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ModifyTemplateError' + x-codegen-request-body-name: body + /files/upload_session/finish_batch: + post: + summary: Files - Upload Session - Finish Batch + description: >- + This route helps you commit many files at once into a user's Dropbox. + Use :route:`upload_session/start` and :route:`upload_session/append_v2` + to upload file contents. We recommend uploading many files in parallel + to increase throughput. Once the file contents have been uploaded, + rather than calling :route:`upload_session/finish`, use this route to + finish all your upload sessions in a single request. + + :field:`UploadSessionStartArg.close` or + :field:`UploadSessionAppendArg.close` needs to be true for the last + :route:`upload_session/start` or :route:`upload_session/append_v2` call. + The maximum size of a file one can upload to an upload session is 350 + GB. + + This route will return a job_id immediately and do the async commit job + in background. Use :route:`upload_session/finish_batch/check` to check + the job status. + + For the same account, this route should be executed serially. That means + you should not start the next job before current job finishes. We allow + up to 1000 entries in a single request. + operationId: FilesUploadSessionFinishBatch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UploadSessionFinishBatchArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/UploadSessionFinishBatchLaunch' + default: + description: Error + content: {} + x-codegen-request-body-name: body + /files/upload_session/append_v2: + post: + summary: Files - Upload Session - Append V2 + description: >- + Append more data to an upload session. + + When the parameter close is set, this call will close the session. + + A single request should not upload more than 150 MB. The maximum size of + a file one can upload to an upload session is 350 GB. + operationId: FilesUploadSessionAppendV2 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UploadSessionAppendArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/UploadSessionLookupError' + x-codegen-request-body-name: body + /files/create_folder_v2: + post: + summary: Files - Create Folder V2 + description: Create a folder at a given path. + operationId: FilesCreateFolderV2 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFolderArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFolderResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFolderError' + x-codegen-request-body-name: body + /files/copy_reference/get: + post: + summary: Files - Copy Reference - Get + description: >- + Get a copy reference to a file or folder. This reference string can be + used to save that file or folder to another user's Dropbox by passing it + to :route:`copy_reference/save`. + operationId: FilesCopyReferenceGet + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetCopyReferenceArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/GetCopyReferenceResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/GetCopyReferenceError' + x-codegen-request-body-name: body + /paper/docs/users/list/continue: + post: + summary: Paper - Docs - Users - List - Continue + description: >- + Once a cursor has been retrieved from :route:`docs/users/list`, use this + to paginate through all users on the Paper doc. + operationId: PaperDocsUsersListContinue + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersOnPaperDocContinueArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersOnPaperDocResponse' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersCursorError' + x-codegen-request-body-name: body + /file_properties/properties/search/continue: + post: + summary: File Properties - Properties - Search - Continue + description: >- + Once a cursor has been retrieved from :route:`properties/search`, use + this to paginate through all search results. + operationId: FilePropertiesPropertiesSearchContinue + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PropertiesSearchContinueArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/PropertiesSearchResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PropertiesSearchContinueError' + x-codegen-request-body-name: body + /files/list_folder: + post: + summary: Files - List Folder + description: >- + Starts returning the contents of a folder. If the result's + :field:`ListFolderResult.has_more` field is :val:`true`, call + :route:`list_folder/continue` with the returned + :field:`ListFolderResult.cursor` to retrieve more entries. + + If you're using :field:`ListFolderArg.recursive` set to :val:`true` to + keep a local cache of the contents of a Dropbox account, iterate through + each entry in order and process them as follows to keep your local state + in sync: + + For each :type:`FileMetadata`, store the new entry at the given path in + your local state. If the required parent folders don't exist yet, create + them. If there's already something else at the given path, replace it + and remove all its children. + + For each :type:`FolderMetadata`, store the new entry at the given path + in your local state. If the required parent folders don't exist yet, + create them. If there's already something else at the given path, + replace it but leave the children as they are. Check the new entry's + :field:`FolderSharingInfo.read_only` and set all its children's + read-only statuses to match. + + For each :type:`DeletedMetadata`, if your local state has something at + the given path, remove it and all its children. If there's nothing at + the given path, ignore this entry. + + Note: :type:`auth.RateLimitError` may be returned if multiple + :route:`list_folder` or :route:`list_folder/continue` calls with same + parameters are made simultaneously by same API app for same user. If + your app implements retry logic, please hold off the retry until the + previous request finishes. + operationId: FilesListFolder + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderResult' + examples: + Testexample: + value: { "cursor": "ZtkX9_EHj3x7PMkVuFIhwKYXEpwpLwyxp9vMKomUhllil9q7eWiAu", "entries": [ { ".tag": "file", "client_modified": "2015-05-12T15:50:38Z", "content_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "file_lock_info": { "created": "2015-05-12T15:50:38Z", "is_lockholder": true, "lockholder_name": "Imaginary User" }, "has_explicit_shared_members": false, "id": "id:a4ayc_80_OEAAAAAAAAAXw", "is_downloadable": true, "name": "test-2021-08-29T04-00-00.tar.gz", "path_display": "/somepath/test-2021-08-29T04-00-00.tar.gz", "path_lower": "/somepath/test-2021-08-29T04-00-00.tar.gz", "property_groups": [ { "fields": [ { "name": "Security Policy", "value": "Confidential" } ], "template_id": "ptid:1a5n2i6d3OYEAAAAAAAAAYa" } ], "rev": "a1c10ce0dd78", "server_modified": "2015-05-12T15:50:38Z", "sharing_info": { "modified_by": "dbid:AAH4f99T0taONIb-OurWxbNQ6ywGRopQngc", "parent_shared_folder_id": "84528192421", "read_only": true }, "size": 7212 }, { ".tag": "folder", "id": "id:a4ayc_80_OEAAAAAAAAAXz", "name": "math", "path_display": "/Homework/math", "path_lower": "/homework/math", "property_groups": [ { "fields": [ { "name": "Security Policy", "value": "Confidential" } ], "template_id": "ptid:1a5n2i6d3OYEAAAAAAAAAYa" } ], "sharing_info": { "no_access": false, "parent_shared_folder_id": "84528192421", "read_only": false, "traverse_only": false } } ], "has_more": true } + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderError' + x-codegen-request-body-name: body + /files/upload_session/finish: + post: + summary: Files - Upload Session - Finish + description: >- + Finish an upload session and save the uploaded data to the given file + path. + + A single request should not upload more than 150 MB. The maximum size of + a file one can upload to an upload session is 350 GB. + operationId: FilesUploadSessionFinish + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UploadSessionFinishArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FileMetadata' + examples: + Testexample: + value: { "name": "Prime_Numbers.txt", "id": "id:a4ayc_80_OEAAAAAAAAAXw", "client_modified": "2023-08-22T16:59:57Z", "server_modified": "2023-08-22T16:59:57Z", "rev": "a1c10ce0dd78", "size": 7212, "is_downloadable": true } + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/UploadSessionFinishError' + x-codegen-request-body-name: body + /sharing/get_shared_links: + post: + summary: Sharing - Get Shared Links + description: >- + Returns a list of :type:`LinkMetadata` objects for this user, including + collection links. + + If no path is given, returns a list of all shared links for the current + user, including collection links, up to a maximum of 1000 links. + + If a non-empty path is given, returns a list of all shared links that + allow access to the given path. Collection links are never returned in + this case. + + Note that the url field in the response is never the shortened URL. + operationId: SharingGetSharedLinks + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetSharedLinksArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/GetSharedLinksResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/GetSharedLinksError' + x-codegen-request-body-name: body + /files/move_batch: + post: + summary: Files - Move Batch + description: >- + Move multiple files or folders to different locations at once in the + user's Dropbox. + + This route is 'all or nothing', which means if one entry fails, the + whole transaction will abort. + + This route will return job ID immediately and do the async moving job in + background. Please use :route:`move_batch/check` to check the job + status. + operationId: FilesMoveBatch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationBatchArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationBatchLaunch' + default: + description: Error + content: {} + x-codegen-request-body-name: body + /files/list_folder/continue: + post: + summary: Files - List Folder - Continue + description: >- + Once a cursor has been retrieved from :route:`list_folder`, use this to + paginate through all files and retrieve updates to the folder, following + the same rules as documented for :route:`list_folder`. + operationId: FilesListFolderContinue + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderContinueArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderResult' + examples: + Testexample: + value: { "cursor": "ZtkX9_EHj3x7PMkVuFIhwKYXEpwpLwyxp9vMKomUhllil9q7eWiAu", "entries": [ { ".tag": "file", "client_modified": "2015-05-12T15:50:38Z", "content_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "file_lock_info": { "created": "2015-05-12T12:50:38Z", "is_lockholder": true, "lockholder_name": "Imaginary User" }, "has_explicit_shared_members": false, "id": "id:a4ayc_80_OEAAAAAAAAAXw", "is_downloadable": true, "name": "test-2021-08-29T02-00-00.tar.gz", "path_display": "/somepath/test-2021-08-29T02-00-00.tar.gz", "path_lower": "/somepath/test-2021-08-29T02-00-00.tar.gz", "property_groups": [ { "fields": [ { "name": "Security Policy", "value": "Confidential" } ], "template_id": "ptid:1a5n2i6d3OYEAAAAAAAAAYa" } ], "rev": "a1c10ce0dd78", "server_modified": "2015-05-12T12:50:38Z", "sharing_info": { "modified_by": "dbid:AAH4f99T0taONIb-OurWxbNQ6ywGRopQngc", "parent_shared_folder_id": "84528192421", "read_only": true }, "size": 7212 } ], "has_more": false } + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListFolderContinueError' + x-codegen-request-body-name: body + /paper/docs/permanently_delete: + post: + summary: Paper - Docs - Permanently Delete + description: >- + Permanently deletes the given Paper doc. This operation is final as the + doc cannot be recovered. + + + Note: This action can be performed only by the doc owner. + operationId: PaperDocsPermanentlyDelete + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RefPaperDoc' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DocLookupError' + x-codegen-request-body-name: body + /users/get_space_usage: + post: + summary: Users - Get Space Usage + description: Get the space usage information for the current user's account. + operationId: UsersGetSpaceUsage + requestBody: + content: + application/json: {} + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SpaceUsage' + default: + description: Error + content: {} + x-codegen-request-body-name: body + /file_properties/properties/add: + post: + summary: File Properties - Properties - Add + description: >- + Add property groups to a Dropbox file. See + :route:`templates/add_for_user` or :route:`templates/add_for_team` to + create new templates. + operationId: FilePropertiesPropertiesAdd + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AddPropertiesArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/AddPropertiesError' + x-codegen-request-body-name: body + /sharing/add_folder_member: + post: + summary: Sharing - Add Folder Member + description: >- + Allows an owner or editor (if the ACL update policy allows) of a shared + folder to add another member. + + For the new member to get access to all the functionality for this + folder, you will need to call :route:`mount_folder` on their behalf. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingAddFolderMember + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AddFolderMemberArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/AddFolderMemberError' + x-codegen-request-body-name: body + /sharing/list_shared_links: + post: + summary: Sharing - List Shared Links + description: >- + List shared links of this user. + + If no path is given, returns a list of all shared links for the current + user. + + If a non-empty path is given, returns a list of all shared links that + allow access to the given path - direct links to the given path and + links to parent folders of the given path. Links to parent folders can + be suppressed by setting direct_only to true. + operationId: SharingListSharedLinks + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListSharedLinksArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListSharedLinksResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListSharedLinksError' + x-codegen-request-body-name: body + /files/upload: + post: + summary: Files - Upload + description: >- + Create a new file with the contents provided in the request. + + Do not use this to upload a file larger than 150 MB. Instead, create an + upload session with :route:`upload_session/start`. + operationId: FilesUpload + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CommitInfo' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FileMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/UploadError' + x-codegen-request-body-name: body + /file_properties/templates/update_for_user: + post: + summary: File Properties - Templates - Update For User + description: >- + Update a template associated with a user. This route can update the + template name, the template description and add optional properties to + templates. This endpoint can't be called on a team member or admin's + behalf. + operationId: FilePropertiesTemplatesUpdateForUser + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateTemplateArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateTemplateResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ModifyTemplateError' + x-codegen-request-body-name: body + /sharing/list_received_files/continue: + post: + summary: Sharing - List Received Files - Continue + description: Get more results with a cursor from :route:`list_received_files`. + operationId: SharingListReceivedFilesContinue + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFilesContinueArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListFilesResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListFilesContinueError' + x-codegen-request-body-name: body + /files/download_zip: + post: + summary: Files - Download Zip + description: >- + Download a folder from the user's Dropbox, as a zip file. The folder + must be less than 1 GB in size and have fewer than 10,000 total files. + The input cannot be a single file. + operationId: FilesDownloadZip + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadZipArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadZipResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadZipError' + x-codegen-request-body-name: body + /sharing/change_file_member_access: + post: + summary: Sharing - Change File Member Access + description: Identical to update_file_member but with less information returned. + operationId: SharingChangeFileMemberAccess + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ChangeFileMemberAccessArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FileMemberActionResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/FileMemberActionError' + x-codegen-request-body-name: body + /file_properties/templates/add_for_team: + post: + summary: File Properties - Templates - Add For Team + description: >- + Add a template associated with a team. See :route:`properties/add` to + add properties to a file or folder. + + Note: this endpoint will create team-owned templates. + operationId: FilePropertiesTemplatesAddForTeam + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AddTemplateArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/AddTemplateResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ModifyTemplateError' + x-codegen-request-body-name: body + /sharing/modify_shared_link_settings: + post: + summary: Sharing - Modify Shared Link Settings + description: >- + Modify the shared link's settings. + + If the requested visibility conflict with the shared links policy of the + team or the shared folder (in case the linked file is part of a shared + folder) then the :field:`LinkPermissions.resolved_visibility` of the + returned :type:`SharedLinkMetadata` will reflect the actual visibility + of the shared link and the :field:`LinkPermissions.requested_visibility` + will reflect the requested visibility. + operationId: SharingModifySharedLinkSettings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ModifySharedLinkSettingsArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SharedLinkMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ModifySharedLinkSettingsError' + x-codegen-request-body-name: body + /sharing/create_shared_link: + post: + summary: Sharing - Create Shared Link + description: >- + Create a shared link. + + If a shared link already exists for the given path, that link is + returned. + + Note that in the returned :type:`PathLinkMetadata`, the + :field:`PathLinkMetadata.url` field is the shortened URL if + :field:`CreateSharedLinkArg.short_url` argument is set to :val:`true`. + + Previously, it was technically possible to break a shared link by moving + or renaming the corresponding file or folder. In the future, this will + no longer be the case, so your app shouldn't rely on this behavior. + Instead, if your app needs to revoke a shared link, use + :route:`revoke_shared_link`. + operationId: SharingCreateSharedLink + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSharedLinkArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/PathLinkMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSharedLinkError' + x-codegen-request-body-name: body + /sharing/remove_file_member: + post: + summary: Sharing - Remove File Member + description: Identical to remove_file_member_2 but with less information returned. + operationId: SharingRemoveFileMember + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RemoveFileMemberArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FileMemberActionIndividualResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/RemoveFileMemberError' + x-codegen-request-body-name: body + /auth/token/revoke: + post: + summary: Auth - Token - Revoke + description: Disables the access token used to authenticate the call. + operationId: AuthTokenRevoke + requestBody: + content: + application/json: {} + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: {} + x-codegen-request-body-name: body + /files/copy: + post: + summary: Files - Copy + description: |- + Copy a file or folder to a different location in the user's Dropbox. + If the source path is a folder all its contents will be copied. + operationId: FilesCopy + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationError' + x-codegen-request-body-name: body + /sharing/get_shared_link_metadata: + post: + summary: Sharing - Get Shared Link Metadata + description: Get the shared link's metadata. + operationId: SharingGetSharedLinkMetadata + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetSharedLinkMetadataArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SharedLinkMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/SharedLinkError' + x-codegen-request-body-name: body + /file_properties/properties/overwrite: + post: + summary: File Properties - Properties - Overwrite + description: >- + Overwrite property groups associated with a file. This endpoint should + be used instead of :route:`properties/update` when property groups are + being updated via a "snapshot" instead of via a "delta". In other words, + this endpoint will delete all omitted fields from a property group, + whereas :route:`properties/update` will only delete fields that are + explicitly marked for deletion. + operationId: FilePropertiesPropertiesOverwrite + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OverwritePropertyGroupArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/InvalidPropertyGroupError' + x-codegen-request-body-name: body + /files/permanently_delete: + post: + summary: Files - Permanently Delete + description: >- + Permanently delete the file or folder at a given path (see + https://www.dropbox.com/en/help/40). + + Note: This endpoint is only available for Dropbox Business apps. + operationId: FilesPermanentlyDelete + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteError' + x-codegen-request-body-name: body + /sharing/unshare_folder: + post: + summary: Sharing - Unshare Folder + description: >- + Allows a shared folder owner to unshare the folder. + + You'll need to call :route:`check_job_status` to determine if the action + has completed successfully. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingUnshareFolder + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UnshareFolderArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/LaunchEmptyResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/UnshareFolderError' + x-codegen-request-body-name: body + /sharing/list_mountable_folders/continue: + post: + summary: Sharing - List Mountable Folders - Continue + description: >- + Once a cursor has been retrieved from :route:`list_mountable_folders`, + use this to paginate through all mountable shared folders. The cursor + must come from a previous call to :route:`list_mountable_folders` or + :route:`list_mountable_folders/continue`. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingListMountableFoldersContinue + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFoldersContinueArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListFoldersResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListFoldersContinueError' + x-codegen-request-body-name: body + /file_properties/templates/get_for_team: + post: + summary: File Properties - Templates - Get For Team + description: Get the schema for a specified template. + operationId: FilePropertiesTemplatesGetForTeam + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetTemplateArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/GetTemplateResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateError' + x-codegen-request-body-name: body + /sharing/relinquish_folder_membership: + post: + summary: Sharing - Relinquish Folder Membership + description: >- + The current user relinquishes their membership in the designated shared + folder and will no longer have access to the folder. A folder owner + cannot relinquish membership in their own folder. + + This will run synchronously if leave_a_copy is false, and asynchronously + if leave_a_copy is true. Apps must have full Dropbox access to use this + endpoint. + operationId: SharingRelinquishFolderMembership + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RelinquishFolderMembershipArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/LaunchEmptyResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/RelinquishFolderMembershipError' + x-codegen-request-body-name: body + /files/download: + post: + summary: Files - Download + description: Download a file from a user's Dropbox. + operationId: FilesDownload + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FileMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadError' + x-codegen-request-body-name: body + /files/search: + post: + summary: Files - Search + description: >- + Searches for files and folders. + + Note: Recent changes may not immediately be reflected in search results + due to a short delay in indexing. + operationId: FilesSearch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SearchArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SearchResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/SearchError' + x-codegen-request-body-name: body + /sharing/get_file_metadata: + post: + summary: Sharing - Get File Metadata + description: Returns shared file metadata. + operationId: SharingGetFileMetadata + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetFileMetadataArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SharedFileMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/GetFileMetadataError' + x-codegen-request-body-name: body + /sharing/list_mountable_folders: + post: + summary: Sharing - List Mountable Folders + description: >- + Return the list of all shared folders the current user can mount or + unmount. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingListMountableFolders + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFoldersArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListFoldersResult' + default: + description: Error + content: {} + x-codegen-request-body-name: body + /file_properties/templates/list_for_team: + post: + summary: File Properties - Templates - List For Team + description: >- + Get the template identifiers for a team. To get the schema of each + template use :route:`templates/get_for_team`. + operationId: FilePropertiesTemplatesListForTeam + requestBody: + content: + application/json: {} + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListTemplateResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateError' + x-codegen-request-body-name: body + /file_properties/properties/remove: + post: + summary: File Properties - Properties - Remove + description: >- + Permanently removes the specified property group from the file. To + remove specific property field key value pairs, see + :route:`properties/update`. To update a template, see + :route:`templates/update_for_user` or + :route:`templates/update_for_team`. To remove a template, see + :route:`templates/remove_for_user` or + :route:`templates/remove_for_team`. + operationId: FilePropertiesPropertiesRemove + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RemovePropertiesArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/RemovePropertiesError' + x-codegen-request-body-name: body + /files/create_folder: + post: + summary: Files - Create Folder + description: Create a folder at a given path. + operationId: FilesCreateFolder + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFolderArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FolderMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFolderError' + x-codegen-request-body-name: body + /file_requests/list: + post: + summary: File Requests - List + description: >- + Returns a list of file requests owned by this user. For apps with the + app folder permission, this will only return file requests with + destinations in the app folder. + operationId: FileRequestsList + requestBody: + content: + application/json: {} + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListFileRequestsResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListFileRequestsError' + x-codegen-request-body-name: body + /paper/docs/archive: + post: + summary: Paper - Docs - Archive + description: >- + Marks the given Paper doc as archived. + + Note: This action can be performed or undone by anyone with edit + permissions to the doc. + operationId: PaperDocsArchive + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RefPaperDoc' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DocLookupError' + x-codegen-request-body-name: body + /users/get_account_batch: + post: + summary: Users - Get Account Batch + description: >- + Get information about multiple user accounts. At most 300 accounts may + be queried per request. + operationId: UsersGetAccountBatch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetAccountBatchArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/BasicAccount' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/GetAccountBatchError' + x-codegen-request-body-name: body + /file_requests/create: + post: + summary: File Requests - Create + description: Creates a file request for this user. + operationId: FileRequestsCreate + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFileRequestArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FileRequest' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFileRequestError' + x-codegen-request-body-name: body + /sharing/list_file_members: + post: + summary: Sharing - List File Members + description: >- + Use to obtain the members who have been invited to a file, both + inherited and uninherited members. + operationId: SharingListFileMembers + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFileMembersArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SharedFileMembers' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListFileMembersError' + x-codegen-request-body-name: body + /file_properties/templates/update_for_team: + post: + summary: File Properties - Templates - Update For Team + description: >- + Update a template associated with a team. This route can update the + template name, the template description and add optional properties to + templates. + operationId: FilePropertiesTemplatesUpdateForTeam + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateTemplateArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateTemplateResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ModifyTemplateError' + x-codegen-request-body-name: body + /sharing/list_file_members/continue: + post: + summary: Sharing - List File Members - Continue + description: >- + Once a cursor has been retrieved from :route:`list_file_members` or + :route:`list_file_members/batch`, use this to paginate through all + shared file members. + operationId: SharingListFileMembersContinue + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFileMembersContinueArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SharedFileMembers' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListFileMembersContinueError' + x-codegen-request-body-name: body + /paper/docs/update: + post: + summary: Paper - Docs - Update + description: Updates an existing Paper doc with the provided content. + operationId: PaperDocsUpdate + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PaperDocUpdateArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/PaperDocCreateUpdateResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PaperDocUpdateError' + x-codegen-request-body-name: body + /auth/token/from_oauth1: + post: + summary: Auth - Token - From Oauth1 + description: >- + Creates an OAuth 2.0 access token from the supplied OAuth 1.0 access + token. + operationId: AuthTokenFromOauth1 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenFromOAuth1Arg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/TokenFromOAuth1Result' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/TokenFromOAuth1Error' + x-codegen-request-body-name: body + /files/properties/overwrite: + post: + summary: Files - Properties - Overwrite + operationId: FilesPropertiesOverwrite + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OverwritePropertyGroupArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/InvalidPropertyGroupError' + x-codegen-request-body-name: body + /file_requests/get: + post: + summary: File Requests - Get + description: Returns the specified file request. + operationId: FileRequestsGet + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetFileRequestArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FileRequest' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/GetFileRequestError' + x-codegen-request-body-name: body + /paper/docs/list/continue: + post: + summary: Paper - Docs - List - Continue + description: >- + Once a cursor has been retrieved from :route:`docs/list`, use this to + paginate through all Paper doc. + operationId: PaperDocsListContinue + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListPaperDocsContinueArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListPaperDocsResponse' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListDocsCursorError' + x-codegen-request-body-name: body + /files/get_thumbnail: + post: + summary: Files - Get Thumbnail + description: >- + Get a thumbnail for an image. + + This method currently supports files with the following file extensions: + jpg, jpeg, png, tiff, tif, gif and bmp. Photos that are larger than 20MB + in size won't be converted to a thumbnail. + operationId: FilesGetThumbnail + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ThumbnailArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FileMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ThumbnailError' + x-codegen-request-body-name: body + /sharing/update_folder_policy: + post: + summary: Sharing - Update Folder Policy + description: >- + Update the sharing policies for a shared folder. + + User must have :field:`AccessLevel.owner` access to the shared folder to + update its policies. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingUpdateFolderPolicy + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateFolderPolicyArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SharedFolderMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateFolderPolicyError' + x-codegen-request-body-name: body + /sharing/set_access_inheritance: + post: + summary: Sharing - Set Access Inheritance + description: >- + Change the inheritance policy of an existing Shared Folder. Only + permitted for shared folders in a shared team root. + + If a :field:`ShareFolderLaunch.async_job_id` is returned, you'll need to + call :route:`check_share_job_status` until the action completes to get + the metadata for the folder. + operationId: SharingSetAccessInheritance + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SetAccessInheritanceArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ShareFolderLaunch' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/SetAccessInheritanceError' + x-codegen-request-body-name: body + /files/save_url: + post: + summary: Files - Save Url + description: >- + Save a specified URL into a file in user's Dropbox. If the given path + already exists, the file will be renamed to avoid the conflict (e.g. + myfile (1).txt). + operationId: FilesSaveUrl + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SaveUrlArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SaveUrlResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/SaveUrlError' + x-codegen-request-body-name: body + /files/alpha/get_metadata: + post: + summary: Files - Alpha - Get Metadata + description: >- + Returns the metadata for a file or folder. This is an alpha endpoint + compatible with the properties API. + + Note: Metadata for the root folder is unsupported. + operationId: FilesAlphaGetMetadata + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AlphaGetMetadataArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/AlphaGetMetadataError' + x-codegen-request-body-name: body + /sharing/remove_file_member_2: + post: + summary: Sharing - Remove File Member 2 + description: Removes a specified member from the file. + operationId: SharingRemoveFileMember2 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RemoveFileMemberArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FileMemberRemoveActionResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/RemoveFileMemberError' + x-codegen-request-body-name: body + /files/copy_v2: + post: + summary: Files - Copy V2 + description: |- + Copy a file or folder to a different location in the user's Dropbox. + If the source path is a folder all its contents will be copied. + operationId: FilesCopyV2 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationError' + x-codegen-request-body-name: body + /files/upload_session/start: + post: + summary: Files - Upload Session - Start + description: >- + Upload sessions allow you to upload a single file in one or more + requests, for example where the size of the file is greater than 150 + MB. This call starts a new upload session with the given data. You can + then use :route:`upload_session/append_v2` to add more data and + :route:`upload_session/finish` to save all the data to a file in + Dropbox. + + A single request should not upload more than 150 MB. The maximum size of + a file one can upload to an upload session is 350 GB. + + An upload session can be used for a maximum of 48 hours. Attempting to + use an :field:`UploadSessionStartResult.session_id` with + :route:`upload_session/append_v2` or :route:`upload_session/finish` more + than 48 hours after its creation will return a + :field:`UploadSessionLookupError.not_found`. + operationId: FilesUploadSessionStart + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UploadSessionStartArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/UploadSessionStartResult' + default: + description: Error + content: {} + x-codegen-request-body-name: body + /file_properties/templates/list_for_user: + post: + summary: File Properties - Templates - List For User + description: >- + Get the template identifiers for a team. To get the schema of each + template use :route:`templates/get_for_user`. This endpoint can't be + called on a team member or admin's behalf. + operationId: FilePropertiesTemplatesListForUser + requestBody: + content: + application/json: {} + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListTemplateResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateError' + x-codegen-request-body-name: body + /files/create_folder_batch: + post: + summary: Files - Create Folder Batch + description: >- + Create multiple folders at once. + + This route is asynchronous for large batches, which returns a job ID + immediately and runs the create folder batch asynchronously. Otherwise, + creates the folders and returns the result synchronously for smaller + inputs. You can force asynchronous behaviour by using the + :field:`CreateFolderBatchArg.force_async` flag. Use + :route:`create_folder_batch/check` to check the job status. + operationId: FilesCreateFolderBatch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFolderBatchArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/CreateFolderBatchLaunch' + default: + description: Error + content: {} + x-codegen-request-body-name: body + /users/get_account: + post: + summary: Users - Get Account + description: Get information about a user's account. + operationId: UsersGetAccount + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetAccountArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/BasicAccount' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/GetAccountError' + x-codegen-request-body-name: body + /files/move_v2: + post: + summary: Files - Move V2 + description: |- + Move a file or folder to a different location in the user's Dropbox. + If the source path is a folder all its contents will be moved. + operationId: FilesMoveV2 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/RelocationError' + x-codegen-request-body-name: body + /paper/docs/folder_users/list/continue: + post: + summary: Paper - Docs - Folder Users - List - Continue + description: >- + Once a cursor has been retrieved from :route:`docs/folder_users/list`, + use this to paginate through all users on the Paper folder. + operationId: PaperDocsFolderUsersListContinue + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersOnFolderContinueArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersOnFolderResponse' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersCursorError' + x-codegen-request-body-name: body + /sharing/get_file_metadata/batch: + post: + summary: Sharing - Get File Metadata - Batch + description: Returns shared file metadata. + operationId: SharingGetFileMetadataBatch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetFileMetadataBatchArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/GetFileMetadataBatchResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/SharingUserError' + x-codegen-request-body-name: body + /paper/docs/users/remove: + post: + summary: Paper - Docs - Users - Remove + description: >- + Allows an owner or editor to remove users from a Paper doc using their + email address or Dropbox account ID. + + + Note: Doc owner cannot be removed. + operationId: PaperDocsUsersRemove + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RemovePaperDocUser' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DocLookupError' + x-codegen-request-body-name: body + /paper/docs/folder_users/list: + post: + summary: Paper - Docs - Folder Users - List + description: >- + Lists the users who are explicitly invited to the Paper folder in which + the Paper doc is contained. For private folders all users (including + owner) shared on the folder are listed and for team folders all non-team + users shared on the folder are returned. + operationId: PaperDocsFolderUsersList + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersOnFolderArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersOnFolderResponse' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DocLookupError' + x-codegen-request-body-name: body + /files/upload_session/append: + post: + summary: Files - Upload Session - Append + description: >- + Append more data to an upload session. + + A single request should not upload more than 150 MB. The maximum size of + a file one can upload to an upload session is 350 GB. + operationId: FilesUploadSessionAppend + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UploadSessionCursor' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/UploadSessionLookupError' + x-codegen-request-body-name: body + /sharing/list_folders: + post: + summary: Sharing - List Folders + description: |- + Return the list of all shared folders the current user has access to. + Apps must have full Dropbox access to use this endpoint. + operationId: SharingListFolders + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFoldersArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListFoldersResult' + default: + description: Error + content: {} + x-codegen-request-body-name: body + /files/get_metadata: + post: + summary: Files - Get Metadata + description: |- + Returns the metadata for a file or folder. + Note: Metadata for the root folder is unsupported. + operationId: FilesGetMetadata + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetMetadataArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/GetMetadataError' + x-codegen-request-body-name: body + /sharing/list_file_members/batch: + post: + summary: Sharing - List File Members - Batch + description: >- + Get members of multiple files at once. The arguments to this route are + more limited, and the limit on query result size per file is more + strict. To customize the results more, use the individual file endpoint. + + Inherited users and groups are not included in the result, and + permissions are not returned for this endpoint. + operationId: SharingListFileMembersBatch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListFileMembersBatchArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ListFileMembersBatchResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/SharingUserError' + x-codegen-request-body-name: body + /sharing/transfer_folder: + post: + summary: Sharing - Transfer Folder + description: >- + Transfer ownership of a shared folder to a member of the shared folder. + + User must have :field:`AccessLevel.owner` access to the shared folder to + perform a transfer. + + Apps must have full Dropbox access to use this endpoint. + operationId: SharingTransferFolder + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TransferFolderArg' + required: false + responses: + '200': + description: Success + content: {} + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/TransferFolderError' + x-codegen-request-body-name: body + /file_properties/templates/get_for_user: + post: + summary: File Properties - Templates - Get For User + description: >- + Get the schema for a specified template. This endpoint can't be called + on a team member or admin's behalf. + operationId: FilePropertiesTemplatesGetForUser + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetTemplateArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/GetTemplateResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateError' + x-codegen-request-body-name: body + /files/list_revisions: + post: + summary: Files - List Revisions + description: >- + Returns revisions for files based on a file path or a file id. The file + path or file id is identified from the latest file entry at the given + file path or id. This end point allows your app to query either by file + path or file id by setting the mode parameter appropriately. + + In the :field:`ListRevisionsMode.path` (default) mode, all revisions at + the same file path as the latest file entry are returned. If revisions + with the same file id are desired, then mode must be set to + :field:`ListRevisionsMode.id`. The :field:`ListRevisionsMode.id` mode is + useful to retrieve revisions for a given file across moves or renames. + operationId: FilesListRevisions + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListRevisionsArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListRevisionsResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/ListRevisionsError' + x-codegen-request-body-name: body + /files/get_preview: + post: + summary: Files - Get Preview + description: >- + Get a preview for a file. + + Currently, PDF previews are generated for files with the following + extensions: .ai, .doc, .docm, .docx, .eps, .odp, .odt, .pps, .ppsm, + .ppsx, .ppt, .pptm, .pptx, .rtf. + + HTML previews are generated for files with the following extensions: + .csv, .ods, .xls, .xlsm, .xlsx. + + Other formats will return an unsupported extension error. + operationId: FilesGetPreview + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PreviewArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/FileMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PreviewError' + x-codegen-request-body-name: body + /files/properties/template/list: + post: + summary: Files - Properties - Template - List + operationId: FilesPropertiesTemplateList + requestBody: + content: + application/json: {} + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListTemplateResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateError' + x-codegen-request-body-name: body + /paper/docs/create: + post: + summary: Paper - Docs - Create + description: Creates a new Paper doc with the provided content. + operationId: PaperDocsCreate + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PaperDocCreateArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/PaperDocCreateUpdateResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PaperDocCreateError' + x-codegen-request-body-name: body + /paper/docs/list: + post: + summary: Paper - Docs - List + description: >- + Return the list of all Paper docs according to the argument + specifications. To iterate over through the full pagination, pass the + cursor to :route:`docs/list/continue`. + operationId: PaperDocsList + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListPaperDocsArgs' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ListPaperDocsResponse' + default: + description: Error + content: {} + x-codegen-request-body-name: body + /sharing/get_shared_link_file: + post: + summary: Sharing - Get Shared Link File + description: Download the shared link's file from a user's Dropbox. + operationId: SharingGetSharedLinkFile + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetSharedLinkMetadataArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SharedLinkMetadata' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/GetSharedLinkFileError' + x-codegen-request-body-name: body + /paper/docs/download: + post: + summary: Paper - Docs - Download + description: Exports and downloads Paper doc either as HTML or markdown. + operationId: PaperDocsDownload + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PaperDocExport' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/PaperDocExportResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DocLookupError' + x-codegen-request-body-name: body + /files/delete_batch/check: + post: + summary: Files - Delete Batch - Check + description: >- + Returns the status of an asynchronous job for :route:`delete_batch`. If + success, it returns list of result for each entry. + operationId: FilesDeleteBatchCheck + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PollArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteBatchJobStatus' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PollError' + x-codegen-request-body-name: body + /files/delete_v2: + post: + summary: Files - Delete V2 + description: >- + Delete the file or folder at a given path. + + If the path is a folder, all its contents will be deleted too. + + A successful response indicates that the file or folder was deleted. The + returned metadata will be the corresponding :type:`FileMetadata` or + :type:`FolderMetadata` for the item at time of deletion, and not a + :type:`DeletedMetadata` object. + operationId: FilesDeleteV2 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResult' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteError' + x-codegen-request-body-name: body + /sharing/check_job_status: + post: + summary: Sharing - Check Job Status + description: |- + Returns the status of an asynchronous job. + Apps must have full Dropbox access to use this endpoint. + operationId: SharingCheckJobStatus + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PollArg' + required: false + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/JobStatus' + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/PollError' + x-codegen-request-body-name: body +components: + schemas: + PreviewArg: + type: object + properties: + path: + type: string + description: The path of the file to preview. + rev: + type: string + description: Please specify revision in :field:`path` instead. + description: | + path: The path of the file to preview. + rev: Please specify revision in :field:`path` instead. + Metadata: + type: object + properties: + parent_shared_folder_id: + type: string + description: >- + Please use :field:`FileSharingInfo.parent_shared_folder_id` or + :field:`FolderSharingInfo.parent_shared_folder_id` instead. + name: + type: string + description: >- + The last component of the path (including extension). This never + contains a slash. + path_display: + type: string + description: >- + The cased path to be used for display purposes only. In rare + instances the casing will not correctly match the user's filesystem, + but this behavior will match the path provided in the Core API v1, + and at least the last path component will have the correct casing. + Changes to only the casing of paths won't be returned by + :route:`list_folder/continue`. This field will be null if the file + or folder is not mounted. + path_lower: + type: string + description: >- + The lowercased full path in the user's Dropbox. This always starts + with a slash. This field will be null if the file or folder is not + mounted. + description: > + Metadata for a file or folder. + + name: The last component of the path (including extension). This never + contains a slash. + + path_lower: The lowercased full path in the user's Dropbox. This always + starts with a slash. This field will be null if the file or folder is + not mounted. + + path_display: The cased path to be used for display purposes only. In + rare instances the casing will not correctly match the user's + filesystem, but this behavior will match the path provided in the Core + API v1, and at least the last path component will have the correct + casing. Changes to only the casing of paths won't be returned by + :route:`list_folder/continue`. This field will be null if the file or + folder is not mounted. + + parent_shared_folder_id: Please use + :field:`FileSharingInfo.parent_shared_folder_id` or + :field:`FolderSharingInfo.parent_shared_folder_id` instead. + ShareFolderArg: + type: object + properties: + viewer_info_policy: + $ref: '#/components/schemas/ViewerInfoPolicy' + force_async: + type: boolean + description: Whether to force the share to happen asynchronously. + acl_update_policy: + $ref: '#/components/schemas/AclUpdatePolicy' + actions: + type: array + description: >- + A list of `FolderAction`s corresponding to `FolderPermission`s that + should appear in the response's + :field:`SharedFolderMetadata.permissions` field describing the + actions the authenticated user can perform on the folder. + items: + $ref: '#/components/schemas/FolderAction' + shared_link_policy: + $ref: '#/components/schemas/SharedLinkPolicy' + path: + type: string + description: >- + The path to the folder to share. If it does not exist, then a new + one is created. + link_settings: + $ref: '#/components/schemas/LinkSettings' + member_policy: + $ref: '#/components/schemas/MemberPolicy' + description: > + path: The path to the folder to share. If it does not exist, then a new + one is created. + + acl_update_policy: Who can add and remove members of this shared folder. + + force_async: Whether to force the share to happen asynchronously. + + member_policy: Who can be a member of this shared folder. Only + applicable if the current user is on a team. + + shared_link_policy: The policy to apply to shared links created for + content inside this shared folder. The current user must be on a team + to set this policy to :field:`SharedLinkPolicy.members`. + + viewer_info_policy: Who can enable/disable viewer info for this shared + folder. + + actions: A list of `FolderAction`s corresponding to `FolderPermission`s + that should appear in the response's + :field:`SharedFolderMetadata.permissions` field describing the actions + the authenticated user can perform on the folder. + + link_settings: Settings on the link for this folder. + UpdateFolderPolicyArg: + type: object + properties: + viewer_info_policy: + $ref: '#/components/schemas/ViewerInfoPolicy' + acl_update_policy: + $ref: '#/components/schemas/AclUpdatePolicy' + actions: + type: array + description: >- + A list of `FolderAction`s corresponding to `FolderPermission`s that + should appear in the response's + :field:`SharedFolderMetadata.permissions` field describing the + actions the authenticated user can perform on the folder. + items: + $ref: '#/components/schemas/FolderAction' + shared_folder_id: + type: string + description: The ID for the shared folder. + shared_link_policy: + $ref: '#/components/schemas/SharedLinkPolicy' + link_settings: + $ref: '#/components/schemas/LinkSettings' + member_policy: + $ref: '#/components/schemas/MemberPolicy' + description: > + If any of the policies are unset, then they retain their current + setting. + + shared_folder_id: The ID for the shared folder. + + member_policy: Who can be a member of this shared folder. Only + applicable if the current user is on a team. + + acl_update_policy: Who can add and remove members of this shared folder. + + viewer_info_policy: Who can enable/disable viewer info for this shared + folder. + + shared_link_policy: The policy to apply to shared links created for + content inside this shared folder. The current user must be on a team to + set this policy to :field:`SharedLinkPolicy.members`. + + link_settings: Settings on the link for this folder. + + actions: A list of `FolderAction`s corresponding to `FolderPermission`s + that should appear in the response's + :field:`SharedFolderMetadata.permissions` field describing the actions + the authenticated user can perform on the folder. + LogicalOperator: + type: object + properties: + .tag: + title: Choice of LogicalOperator + type: string + enum: + - or_operator + - other + description: | + Logical operator to join search queries together. + or_operator: Append a query with an "or" operator. + other: None + PropertyFieldTemplate: + type: object + properties: + type: + $ref: '#/components/schemas/PropertyType' + name: + type: string + description: >- + Key of the property field being described. Property field keys can + be up to 256 bytes. + description: + type: string + description: >- + Description of the property field. Property field descriptions can + be up to 1024 bytes. + description: > + Defines how a single property field may be structured. Used exclusively + by :type:`PropertyGroupTemplate`. + + name: Key of the property field being described. Property field keys can + be up to 256 bytes. + + description: Description of the property field. Property field + descriptions can be up to 1024 bytes. + + type: Data type of the value of this property field. This type will be + enforced upon property creation and modifications. + ModifySharedLinkSettingsArgs: + type: object + properties: + url: + type: string + description: URL of the shared link to change its settings. + remove_expiration: + type: boolean + description: If set to true, removes the expiration of the shared link. + settings: + $ref: '#/components/schemas/SharedLinkSettings' + description: > + url: URL of the shared link to change its settings. + + settings: Set of settings for the shared link. + + remove_expiration: If set to true, removes the expiration of the shared + link. + SharedLinkError: + type: object + properties: + .tag: + title: Choice of SharedLinkError + type: string + enum: + - shared_link_not_found + - shared_link_access_denied + - unsupported_link_type + - other + description: > + shared_link_not_found: The shared link wasn't found. + + shared_link_access_denied: The caller is not allowed to access this + shared link. + + unsupported_link_type: This type of link is not supported. + + other: None + UpdateTemplateArg: + type: object + properties: + add_fields: + type: array + description: >- + Property field templates to be added to the group template. There + can be up to 32 properties in a single template. + items: + $ref: '#/components/schemas/PropertyFieldTemplate' + description: + type: string + description: >- + Description for the new template. Template descriptions can be up to + 1024 bytes. + template_id: + type: string + description: >- + An identifier for template added by See + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + name: + type: string + description: >- + A display name for the template. template names can be up to 256 + bytes. + description: > + template_id: An identifier for template added by See + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + + name: A display name for the template. template names can be up to 256 + bytes. + + description: Description for the new template. Template descriptions can + be up to 1024 bytes. + + add_fields: Property field templates to be added to the group template. + There can be up to 32 properties in a single template. + UploadSessionStartResult: + type: object + properties: + session_id: + type: string + description: >- + A unique identifier for the upload session. Pass this to + :route:`upload_session/append_v2` and + :route:`upload_session/finish`. + description: > + session_id: A unique identifier for the upload session. Pass this to + :route:`upload_session/append_v2` and :route:`upload_session/finish`. + CreateFolderBatchError: + type: object + properties: + .tag: + title: Choice of CreateFolderBatchError + type: string + enum: + - too_many_files + - other + description: | + too_many_files: The operation would involve too many files or folders. + other: None + DeleteBatchResultData: + type: object + properties: + metadata: + $ref: '#/components/schemas/Metadata' + description: | + metadata: Metadata of the deleted object. + FoldersContainingPaperDoc: + type: object + properties: + folders: + type: array + description: The folder path. If present the first folder is the root folder. + items: + $ref: '#/components/schemas/Folder' + folder_sharing_policy_type: + $ref: '#/components/schemas/FolderSharingPolicyType' + description: > + Metadata about Paper folders containing the specififed Paper doc. + + folder_sharing_policy_type: The sharing policy of the folder containing + the Paper doc. + + folders: The folder path. If present the first folder is the root + folder. + GetAccountBatchError: + type: object + properties: + .tag: + title: Choice of GetAccountBatchError + type: string + enum: + - no_account + - other + no_account: + type: string + description: >- + The value is an account ID specified in + :field:`GetAccountBatchArg.account_ids` that does not exist. + description: > + no_account: The value is an account ID specified in + :field:`GetAccountBatchArg.account_ids` that does not exist. + + other: None + BasicAccount: + type: object + properties: + account_id: + type: string + description: The user's unique Dropbox ID. + is_teammate: + type: boolean + description: >- + Whether this user is a teammate of the current user. If this account + is the current user's account, then this will be :val:`true`. + email_verified: + type: boolean + description: Whether the user has verified their e-mail address. + team_member_id: + type: string + description: >- + The user's unique team member id. This field will only be present if + the user is part of a team and :field:`is_teammate` is :val:`true`. + disabled: + type: boolean + description: Whether the user has been disabled. + email: + type: string + description: >- + The user's e-mail address. Do not rely on this without checking the + :field:`email_verified` field. Even then, it's possible that the + user has since lost access to their e-mail. + profile_photo_url: + type: string + description: URL for the photo representing the user, if one is set. + name: + $ref: '#/components/schemas/Name' + description: > + Basic information about any account. + + account_id: The user's unique Dropbox ID. + + name: Details of a user's name. + + email: The user's e-mail address. Do not rely on this without checking + the :field:`email_verified` field. Even then, it's possible that the + user has since lost access to their e-mail. + + email_verified: Whether the user has verified their e-mail address. + + disabled: Whether the user has been disabled. + + is_teammate: Whether this user is a teammate of the current user. If + this account is the current user's account, then this will be + :val:`true`. + + profile_photo_url: URL for the photo representing the user, if one is + set. + + team_member_id: The user's unique team member id. This field will only + be present if the user is part of a team and :field:`is_teammate` is + :val:`true`. + DeleteBatchResult: + type: object + properties: + entries: + type: array + items: + $ref: '#/components/schemas/DeleteBatchResultEntry' + description: | + entries: None + FolderPermission: + type: object + properties: + action: + $ref: '#/components/schemas/FolderAction' + reason: + $ref: '#/components/schemas/PermissionDeniedReason' + allow: + type: boolean + description: True if the user is allowed to take the action. + description: > + Whether the user is allowed to take the action on the shared folder. + + action: The action that the user may wish to take on the folder. + + allow: True if the user is allowed to take the action. + + reason: The reason why the user is denied the permission. Not present if + the action is allowed, or if no reason is available. + UploadSessionFinishBatchResultEntry: + type: object + properties: + failure: + $ref: '#/components/schemas/UploadSessionFinishError' + .tag: + title: Choice of UploadSessionFinishBatchResultEntry + type: string + enum: + - success + - failure + success: + $ref: '#/components/schemas/FileMetadata' + description: | + success: None + failure: None + ExpectedSharedContentLinkMetadata: + type: object + properties: + current_audience: + $ref: '#/components/schemas/LinkAudience' + password_protected: + type: boolean + description: Whether the link is protected by a password. + expiry: + type: string + description: >- + Whether the link has an expiry set on it. A link with an expiry will + have its audience changed to members when the expiry is reached. + access_level: + $ref: '#/components/schemas/AccessLevel' + audience_restricting_shared_folder: + $ref: '#/components/schemas/AudienceRestrictingSharedFolder' + link_permissions: + type: array + description: A list of permissions for actions you can perform on the link. + items: + $ref: '#/components/schemas/LinkPermission' + audience_options: + type: array + description: >- + The audience options that are available for the content. Some + audience options may be unavailable. For example, team_only may be + unavailable if the content is not owned by a user on a team. The + 'default' audience option is always available if the user can modify + link settings. + items: + $ref: '#/components/schemas/LinkAudience' + description: > + The expected metadata of a shared link for a file or folder when a link + is first created for the content. Absent if the link already exists. + + audience_options: The audience options that are available for the + content. Some audience options may be unavailable. For example, + team_only may be unavailable if the content is not owned by a user on a + team. The 'default' audience option is always available if the user can + modify link settings. + + current_audience: The current audience of the link. + + link_permissions: A list of permissions for actions you can perform on + the link. + + password_protected: Whether the link is protected by a password. + + access_level: The access level on the link for this file. + + audience_restricting_shared_folder: The shared folder that prevents the + link audience for this link from being more restrictive. + + expiry: Whether the link has an expiry set on it. A link with an expiry + will have its audience changed to members when the expiry is reached. + UploadSessionAppendArg: + type: object + properties: + cursor: + $ref: '#/components/schemas/UploadSessionCursor' + close: + type: boolean + description: >- + If true, the current session will be closed, at which point you + won't be able to call :route:`upload_session/append_v2` anymore with + the current session. + description: > + cursor: Contains the upload session ID and the offset. + + close: If true, the current session will be closed, at which point you + won't be able to call :route:`upload_session/append_v2` anymore with the + current session. + ListUsersOnFolderArgs: + type: object + properties: + limit: + type: number + description: >- + Size limit per batch. The maximum number of users that can be + retrieved per batch is 1000. Higher value results in invalid + arguments error. + doc_id: + type: string + description: The Paper doc ID. + description: > + doc_id: The Paper doc ID. + + limit: Size limit per batch. The maximum number of users that can be + retrieved per batch is 1000. Higher value results in invalid arguments + error. + ListFileRequestsError: + type: object + properties: + .tag: + title: Choice of ListFileRequestsError + type: string + enum: + - disabled_for_team + - other + description: > + There was an error retrieving the file requests. + + disabled_for_team: This user's Dropbox Business team doesn't allow file + requests. + + other: None + LaunchResultBase: + type: object + properties: + .tag: + title: Choice of LaunchResultBase + type: string + enum: + - async_job_id + async_job_id: + type: string + description: >- + This response indicates that the processing is asynchronous. The + string is an id that can be used to obtain the status of the + asynchronous job. + description: > + Result returned by methods that launch an asynchronous job. + + A method who may either launch an asynchronous job, or complete the + request synchronously, can use this union by extending it, and adding a + 'complete' field with the type of the synchronous response. + + See :type:`LaunchEmptyResult` for an example. + + async_job_id: This response indicates that the processing is + asynchronous. The string is an id that can be used to obtain the status + of the asynchronous job. + GetAccountBatchArg: + type: object + properties: + account_ids: + type: array + description: >- + List of user account identifiers. Should not contain any duplicate + account IDs. + items: + type: string + description: > + account_ids: List of user account identifiers. Should not contain any + duplicate account IDs. + LookUpPropertiesError: + type: object + properties: + .tag: + title: Choice of LookUpPropertiesError + type: string + enum: + - property_group_not_found + - other + description: | + property_group_not_found: No property group was found. + other: None + RemovePaperDocUser: + type: object + properties: + member: + $ref: '#/components/schemas/MemberSelector' + doc_id: + type: string + description: The Paper doc ID. + description: > + doc_id: The Paper doc ID. + + member: User which should be removed from the Paper doc. Specify only + email address or Dropbox account ID. + MountFolderArg: + type: object + properties: + shared_folder_id: + type: string + description: The ID of the shared folder to mount. + description: | + shared_folder_id: The ID of the shared folder to mount. + ListFoldersResult: + type: object + properties: + cursor: + type: string + description: >- + Present if there are additional shared folders that have not been + returned yet. Pass the cursor into the corresponding continue + endpoint (either :route:`list_folders/continue` or + :route:`list_mountable_folders/continue`) to list additional + folders. + entries: + type: array + description: List of all shared folders the authenticated user has access to. + items: + $ref: '#/components/schemas/SharedFolderMetadata' + description: > + Result for :route:`list_folders` or :route:`list_mountable_folders`, + depending on which endpoint was requested. + + Unmounted shared folders can be identified by the absence of + :field:`SharedFolderMetadata.path_lower`. + + entries: List of all shared folders the authenticated user has access + to. + + cursor: Present if there are additional shared folders that have not + been returned yet. Pass the cursor into the corresponding continue + endpoint (either :route:`list_folders/continue` or + :route:`list_mountable_folders/continue`) to list additional folders. + PaperDocPermissionLevel: + type: object + properties: + .tag: + title: Choice of PaperDocPermissionLevel + type: string + enum: + - edit + - view_and_comment + - other + description: | + edit: User will be granted edit permissions. + view_and_comment: User will be granted view and comment permissions. + other: None + UnmountFolderArg: + type: object + properties: + shared_folder_id: + type: string + description: The ID for the shared folder. + description: | + shared_folder_id: The ID for the shared folder. + GetSharedLinkMetadataArg: + type: object + properties: + url: + type: string + description: URL of the shared link. + path: + type: string + description: >- + If the shared link is to a folder, this parameter can be used to + retrieve the metadata for a specific file or sub-folder in this + folder. A relative path should be used. + link_password: + type: string + description: If the shared link has a password, this parameter can be used. + description: > + url: URL of the shared link. + + path: If the shared link is to a folder, this parameter can be used to + retrieve the metadata for a specific file or sub-folder in this folder. + A relative path should be used. + + link_password: If the shared link has a password, this parameter can be + used. + MemberSpaceLimitType: + type: object + properties: + .tag: + title: Choice of MemberSpaceLimitType + type: string + enum: + - 'off' + - alert_only + - stop_sync + - other + description: > + The type of the space limit imposed on a team member. + + off: The team member does not have imposed space limit. + + alert_only: The team member has soft imposed space limit - the limit is + used for display and for notifications. + + stop_sync: The team member has hard imposed space limit - Dropbox file + sync will stop after the limit is reached. + + other: None + OverwritePropertyGroupArg: + type: object + properties: + path: + type: string + description: A unique identifier for the file or folder. + property_groups: + type: array + description: The property groups "snapshot" updates to force apply. + items: + $ref: '#/components/schemas/PropertyGroup' + description: | + path: A unique identifier for the file or folder. + property_groups: The property groups "snapshot" updates to force apply. + RemoveFileMemberArg: + type: object + properties: + member: + $ref: '#/components/schemas/MemberSelector' + file: + type: string + description: File from which to remove members. + description: > + Arguments for :route:`remove_file_member_2`. + + file: File from which to remove members. + + member: Member to remove from this file. Note that even if an email is + specified, it may result in the removal of a user (not an invitee) if + the user's main account corresponds to that email address. + CreateFolderEntryResult: + type: object + properties: + metadata: + $ref: '#/components/schemas/FolderMetadata' + description: | + metadata: Metadata of the created folder. + DeleteResult: + type: object + properties: + metadata: + $ref: '#/components/schemas/Metadata' + description: | + metadata: Metadata of the deleted object. + TransferFolderError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharedFolderAccessError' + .tag: + title: Choice of TransferFolderError + type: string + enum: + - access_error + - invalid_dropbox_id + - new_owner_not_a_member + - new_owner_unmounted + - new_owner_email_unverified + - team_folder + - no_permission + - other + description: > + access_error: None + + invalid_dropbox_id: :field:`TransferFolderArg.to_dropbox_id` is invalid. + + new_owner_not_a_member: The new designated owner is not currently a + member of the shared folder. + + new_owner_unmounted: The new designated owner has not added the folder + to their Dropbox. + + new_owner_email_unverified: The new designated owner's e-mail address is + unverified. + + team_folder: This action cannot be performed on a team shared folder. + + no_permission: The current user does not have permission to perform this + action. + + other: None + GetFileRequestArgs: + type: object + properties: + id: + type: string + description: The ID of the file request to retrieve. + description: | + Arguments for :route:`get`. + id: The ID of the file request to retrieve. + ListFileMembersCountResult: + type: object + properties: + member_count: + type: number + description: >- + The number of members on this file. This does not include inherited + members. + members: + $ref: '#/components/schemas/SharedFileMembers' + description: > + members: A list of members on this file. + + member_count: The number of members on this file. This does not include + inherited members. + ThumbnailError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of ThumbnailError + type: string + enum: + - path + - unsupported_extension + - unsupported_image + - conversion_error + description: > + path: An error occurs when downloading metadata for the image. + + unsupported_extension: The file extension doesn't allow conversion to a + thumbnail. + + unsupported_image: The image cannot be converted to a thumbnail. + + conversion_error: An error occurs during thumbnail conversion. + DownloadZipArg: + type: object + properties: + path: + type: string + description: The path of the folder to download. + description: | + path: The path of the folder to download. + SharedFolderMembers: + type: object + properties: + cursor: + type: string + description: >- + Present if there are additional shared folder members that have not + been returned yet. Pass the cursor into + :route:`list_folder_members/continue` to list additional members. + users: + type: array + description: The list of user members of the shared folder. + items: + $ref: '#/components/schemas/UserMembershipInfo' + groups: + type: array + description: The list of group members of the shared folder. + items: + $ref: '#/components/schemas/GroupMembershipInfo' + invitees: + type: array + description: The list of invitees to the shared folder. + items: + $ref: '#/components/schemas/InviteeMembershipInfo' + description: > + Shared folder user and group membership. + + users: The list of user members of the shared folder. + + groups: The list of group members of the shared folder. + + invitees: The list of invitees to the shared folder. + + cursor: Present if there are additional shared folder members that have + not been returned yet. Pass the cursor into + :route:`list_folder_members/continue` to list additional members. + DownloadZipError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of DownloadZipError + type: string + enum: + - path + - too_large + - too_many_files + - other + description: | + path: None + too_large: The folder is too large to download. + too_many_files: The folder has too many files to download. + other: None + SharedLinkSettings: + type: object + properties: + requested_visibility: + $ref: '#/components/schemas/RequestedVisibility' + link_password: + type: string + description: >- + If :field:`requested_visibility` is + :field:`RequestedVisibility.password` this is needed to specify the + password to access the link. + expires: + type: string + description: >- + Expiration time of the shared link. By default the link won't + expire. + description: > + requested_visibility: The requested access for this shared link. + + link_password: If :field:`requested_visibility` is + :field:`RequestedVisibility.password` this is needed to specify the + password to access the link. + + expires: Expiration time of the shared link. By default the link won't + expire. + RevokeSharedLinkArg: + type: object + properties: + url: + type: string + description: URL of the shared link. + description: | + url: URL of the shared link. + GetMetadataError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of GetMetadataError + type: string + enum: + - path + description: | + path: None + SharingPublicPolicyType: + type: object + properties: + .tag: + title: Choice of SharingPublicPolicyType + type: string + enum: + - people_with_link_can_edit + - people_with_link_can_view_and_comment + - invite_only + - disabled + description: > + people_with_link_can_edit: Users who have a link to this doc can edit + it. + + people_with_link_can_view_and_comment: Users who have a link to this doc + can view and comment on it. + + invite_only: Users must be explicitly invited to this doc. + + disabled: Value used to indicate that doc sharing is enabled only within + team. + UpdateFileRequestDeadline: + type: object + properties: + .tag: + title: Choice of UpdateFileRequestDeadline + type: string + enum: + - no_update + - update + - other + update: + $ref: '#/components/schemas/FileRequestDeadline' + description: | + no_update: Do not change the file request's deadline. + update: If :val:`null`, the file request's deadline is cleared. + other: None + UpdatePropertiesError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of UpdatePropertiesError + type: string + enum: + - template_not_found + - restricted_content + - other + - path + - unsupported_folder + - property_field_too_large + - does_not_fit_template + - property_group_lookup + property_group_lookup: + $ref: '#/components/schemas/LookUpPropertiesError' + template_not_found: + type: string + description: Template does not exist for the given identifier. + description: > + template_not_found: Template does not exist for the given identifier. + + restricted_content: You do not have permission to modify this template. + + other: None + + path: None + + unsupported_folder: This folder cannot be tagged. Tagging folders is not + supported for team-owned templates. + + property_field_too_large: One or more of the supplied property field + values is too large. + + does_not_fit_template: One or more of the supplied property fields does + not conform to the template specifications. + + property_group_lookup: None + RemovePropertiesArg: + type: object + properties: + path: + type: string + description: A unique identifier for the file or folder. + property_template_ids: + type: array + description: >- + A list of identifiers for a template created by + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + items: + type: string + description: > + path: A unique identifier for the file or folder. + + property_template_ids: A list of identifiers for a template created by + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + UpdateFolderMemberArg: + type: object + properties: + member: + $ref: '#/components/schemas/MemberSelector' + access_level: + $ref: '#/components/schemas/AccessLevel' + shared_folder_id: + type: string + description: The ID for the shared folder. + description: > + shared_folder_id: The ID for the shared folder. + + member: The member of the shared folder to update. Only the + :field:`MemberSelector.dropbox_id` may be set at this time. + + access_level: The new access level for :field:`member`. + :field:`AccessLevel.owner` is disallowed. + CreateSharedLinkWithSettingsError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of CreateSharedLinkWithSettingsError + type: string + enum: + - path + - email_not_verified + - shared_link_already_exists + - settings_error + - access_denied + settings_error: + $ref: '#/components/schemas/SharedLinkSettingsError' + description: > + path: None + + email_not_verified: User's email should be verified. + + shared_link_already_exists: The shared link already exists. You can call + :route:`list_shared_links` to get the existing link. + + settings_error: There is an error with the given settings. + + access_denied: Access to the requested path is forbidden. + SearchMode: + type: object + properties: + .tag: + title: Choice of SearchMode + type: string + enum: + - filename + - filename_and_content + - deleted_filename + description: > + filename: Search file and folder names. + + filename_and_content: Search file and folder names as well as file + contents. + + deleted_filename: Search for deleted file and folder names. + SharedFileMetadata: + type: object + properties: + owner_team: + $ref: '#/components/schemas/Team' + parent_shared_folder_id: + type: string + description: >- + The ID of the parent shared folder. This field is present only if + the file is contained within a shared folder. + name: + type: string + description: The name of this file. + time_invited: + type: string + description: >- + Timestamp indicating when the current user was invited to this + shared file. If the user was not invited to the shared file, the + timestamp will indicate when the user was invited to the parent + shared folder. This value may be absent. + preview_url: + type: string + description: URL for displaying a web preview of the shared file. + access_type: + $ref: '#/components/schemas/AccessLevel' + owner_display_names: + type: array + description: >- + The display names of the users that own the file. If the file is + part of a team folder, the display names of the team admins are also + included. Absent if the owner display names cannot be fetched. + items: + type: string + path_display: + type: string + description: >- + The cased path to be used for display purposes only. In rare + instances the casing will not correctly match the user's filesystem, + but this behavior will match the path provided in the Core API v1. + Absent for unmounted files. + expected_link_metadata: + $ref: '#/components/schemas/ExpectedSharedContentLinkMetadata' + path_lower: + type: string + description: The lower-case full path of this file. Absent for unmounted files. + policy: + $ref: '#/components/schemas/FolderPolicy' + permissions: + type: array + description: >- + The sharing permissions that requesting user has on this file. This + corresponds to the entries given in + :field:`GetFileMetadataBatchArg.actions` or + :field:`GetFileMetadataArg.actions`. + items: + $ref: '#/components/schemas/FilePermission' + id: + type: string + description: The ID of the file. + link_metadata: + $ref: '#/components/schemas/SharedContentLinkMetadata' + description: > + Properties of the shared file. + + id: The ID of the file. + + name: The name of this file. + + policy: Policies governing this shared file. + + preview_url: URL for displaying a web preview of the shared file. + + access_type: The current user's access level for this shared file. + + expected_link_metadata: The expected metadata of the link associated for + the file when it is first shared. Absent if the link already exists. + This is for an unreleased feature so it may not be returned yet. + + link_metadata: The metadata of the link associated for the file. This is + for an unreleased feature so it may not be returned yet. + + owner_display_names: The display names of the users that own the file. + If the file is part of a team folder, the display names of the team + admins are also included. Absent if the owner display names cannot be + fetched. + + owner_team: The team that owns the file. This field is not present if + the file is not owned by a team. + + parent_shared_folder_id: The ID of the parent shared folder. This field + is present only if the file is contained within a shared folder. + + path_display: The cased path to be used for display purposes only. In + rare instances the casing will not correctly match the user's + filesystem, but this behavior will match the path provided in the Core + API v1. Absent for unmounted files. + + path_lower: The lower-case full path of this file. Absent for unmounted + files. + + permissions: The sharing permissions that requesting user has on this + file. This corresponds to the entries given in + :field:`GetFileMetadataBatchArg.actions` or + :field:`GetFileMetadataArg.actions`. + + time_invited: Timestamp indicating when the current user was invited to + this shared file. If the user was not invited to the shared file, the + timestamp will indicate when the user was invited to the parent shared + folder. This value may be absent. + ThumbnailMode: + type: object + properties: + .tag: + title: Choice of ThumbnailMode + type: string + enum: + - strict + - bestfit + - fitone_bestfit + description: > + strict: Scale down the image to fit within the given size. + + bestfit: Scale down the image to fit within the given size or its + transpose. + + fitone_bestfit: Scale down the image to completely cover the given size + or its transpose. + AddFileMemberArgs: + type: object + properties: + members: + type: array + description: >- + Members to add. Note that even an email address is given, this may + result in a user being directy added to the membership if that email + is the user's main account email. + items: + $ref: '#/components/schemas/MemberSelector' + quiet: + type: boolean + description: >- + Whether added members should be notified via device notifications of + their invitation. + add_message_as_comment: + type: boolean + description: If the custom message should be added as a comment on the file. + access_level: + $ref: '#/components/schemas/AccessLevel' + file: + type: string + description: File to which to add members. + custom_message: + type: string + description: Message to send to added members in their invitation. + description: > + Arguments for :route:`add_file_member`. + + file: File to which to add members. + + members: Members to add. Note that even an email address is given, this + may result in a user being directy added to the membership if that email + is the user's main account email. + + custom_message: Message to send to added members in their invitation. + + quiet: Whether added members should be notified via device notifications + of their invitation. + + access_level: AccessLevel union object, describing what access level we + want to give new members. + + add_message_as_comment: If the custom message should be added as a + comment on the file. + ShareFolderJobStatus: + type: object + properties: + failed: + $ref: '#/components/schemas/ShareFolderError' + .tag: + title: Choice of ShareFolderJobStatus + type: string + enum: + - in_progress + - complete + - failed + complete: + $ref: '#/components/schemas/SharedFolderMetadata' + description: > + in_progress: The asynchronous job is still in progress. + + complete: The share job has finished. The value is the metadata for the + folder. + + failed: None + RelocationPath: + type: object + properties: + from_path: + type: string + description: Path in the user's Dropbox to be copied or moved. + to_path: + type: string + description: Path in the user's Dropbox that is the destination. + description: | + from_path: Path in the user's Dropbox to be copied or moved. + to_path: Path in the user's Dropbox that is the destination. + SharedFolderJoinPolicy: + type: object + properties: + .tag: + title: Choice of SharedFolderJoinPolicy + type: string + enum: + - from_team_only + - from_anyone + - other + description: > + Policy governing which shared folders a team member can join. + + from_team_only: Team members can only join folders shared by teammates. + + from_anyone: Team members can join any shared folder, including those + shared by users outside the team. + + other: None + IndividualSpaceAllocation: + type: object + properties: + allocated: + type: number + description: The total space allocated to the user's account (bytes). + description: | + allocated: The total space allocated to the user's account (bytes). + ListRevisionsArg: + type: object + properties: + path: + type: string + description: The path to the file you want to see the revisions of. + limit: + type: number + description: The maximum number of revision entries returned. + mode: + $ref: '#/components/schemas/ListRevisionsMode' + description: > + path: The path to the file you want to see the revisions of. + + mode: Determines the behavior of the API in listing the revisions for a + given file path or id. + + limit: The maximum number of revision entries returned. + CommitInfoWithProperties: + type: object + properties: + autorename: + type: boolean + description: >- + If there's a conflict, as determined by :field:`mode`, have the + Dropbox server try to autorename the file to avoid conflict. + mute: + type: boolean + description: >- + Normally, users are made aware of any file modifications in their + Dropbox account via notifications in the client software. If + :val:`true`, this tells the clients that this modification shouldn't + result in a user notification. + client_modified: + type: string + description: >- + The value to store as the :field:`client_modified` timestamp. + Dropbox automatically records the time at which the file was written + to the Dropbox servers. It can also record an additional timestamp, + provided by Dropbox desktop clients, mobile clients, and API apps of + when the file was actually created or modified. + mode: + $ref: '#/components/schemas/WriteMode' + path: + type: string + description: Path in the user's Dropbox to save the file. + property_groups: + type: array + description: List of custom properties to add to file. + items: + $ref: '#/components/schemas/PropertyGroup' + description: > + path: Path in the user's Dropbox to save the file. + + mode: Selects what to do if the file already exists. + + autorename: If there's a conflict, as determined by :field:`mode`, have + the Dropbox server try to autorename the file to avoid conflict. + + client_modified: The value to store as the :field:`client_modified` + timestamp. Dropbox automatically records the time at which the file was + written to the Dropbox servers. It can also record an additional + timestamp, provided by Dropbox desktop clients, mobile clients, and API + apps of when the file was actually created or modified. + + mute: Normally, users are made aware of any file modifications in their + Dropbox account via notifications in the client software. If + :val:`true`, this tells the clients that this modification shouldn't + result in a user notification. + + property_groups: List of custom properties to add to file. + ListUsersOnPaperDocArgs: + type: object + properties: + limit: + type: number + description: >- + Size limit per batch. The maximum number of users that can be + retrieved per batch is 1000. Higher value results in invalid + arguments error. + doc_id: + type: string + description: The Paper doc ID. + filter_by: + $ref: '#/components/schemas/UserOnPaperDocFilter' + description: > + doc_id: The Paper doc ID. + + limit: Size limit per batch. The maximum number of users that can be + retrieved per batch is 1000. Higher value results in invalid arguments + error. + + filter_by: Specify this attribute if you want to obtain users that have + already accessed the Paper doc. + ListFilesArg: + type: object + properties: + limit: + type: number + description: >- + Number of files to return max per query. Defaults to 100 if no limit + is specified. + actions: + type: array + description: >- + A list of `FileAction`s corresponding to `FilePermission`s that + should appear in the response's + :field:`SharedFileMetadata.permissions` field describing the actions + the authenticated user can perform on the file. + items: + $ref: '#/components/schemas/FileAction' + description: > + Arguments for :route:`list_received_files`. + + limit: Number of files to return max per query. Defaults to 100 if no + limit is specified. + + actions: A list of `FileAction`s corresponding to `FilePermission`s that + should appear in the response's :field:`SharedFileMetadata.permissions` + field describing the actions the authenticated user can perform on the + file. + ListFoldersContinueArg: + type: object + properties: + cursor: + type: string + description: >- + The cursor returned by the previous API call specified in the + endpoint description. + description: > + cursor: The cursor returned by the previous API call specified in the + endpoint description. + ListPaperDocsSortBy: + type: object + properties: + .tag: + title: Choice of ListPaperDocsSortBy + type: string + enum: + - accessed + - modified + - created + - other + description: | + accessed: Sorts the Paper docs by the time they were last accessed. + modified: Sorts the Paper docs by the time they were last modified. + created: Sorts the Paper docs by the creation time. + other: None + FolderPolicy: + type: object + properties: + viewer_info_policy: + $ref: '#/components/schemas/ViewerInfoPolicy' + resolved_member_policy: + $ref: '#/components/schemas/MemberPolicy' + acl_update_policy: + $ref: '#/components/schemas/AclUpdatePolicy' + shared_link_policy: + $ref: '#/components/schemas/SharedLinkPolicy' + member_policy: + $ref: '#/components/schemas/MemberPolicy' + description: > + A set of policies governing membership and privileges for a shared + folder. + + acl_update_policy: Who can add and remove members from this shared + folder. + + shared_link_policy: Who links can be shared with. + + member_policy: Who can be a member of this shared folder, as set on the + folder itself. The effective policy may differ from this value if the + team-wide policy is more restrictive. Present only if the folder is + owned by a team. + + resolved_member_policy: Who can be a member of this shared folder, + taking into account both the folder and the team-wide policy. This value + may differ from that of member_policy if the team-wide policy is more + restrictive than the folder policy. Present only if the folder is owned + by a team. + + viewer_info_policy: Who can enable/disable viewer info for this shared + folder. + GetCopyReferenceArg: + type: object + properties: + path: + type: string + description: The path to the file or folder you want to get a copy reference to. + description: > + path: The path to the file or folder you want to get a copy reference + to. + CreateFolderBatchArg: + type: object + properties: + paths: + type: array + description: >- + List of paths to be created in the user's Dropbox. Duplicate path + arguments in the batch are considered only once. + items: + type: string + force_async: + type: boolean + description: Whether to force the create to happen asynchronously. + autorename: + type: boolean + description: >- + If there's a conflict, have the Dropbox server try to autorename the + folder to avoid the conflict. + description: > + paths: List of paths to be created in the user's Dropbox. Duplicate path + arguments in the batch are considered only once. + + autorename: If there's a conflict, have the Dropbox server try to + autorename the folder to avoid the conflict. + + force_async: Whether to force the create to happen asynchronously. + SharedLinkSettingsError: + type: object + properties: + .tag: + title: Choice of SharedLinkSettingsError + type: string + enum: + - invalid_settings + - not_authorized + description: > + invalid_settings: The given settings are invalid (for example, all + attributes of the :type:`SharedLinkSettings` are empty, the requested + visibility is :field:`RequestedVisibility.password` but the + :field:`SharedLinkSettings.link_password` is missing, + :field:`SharedLinkSettings.expires` is set to the past, etc.). + + not_authorized: User is not allowed to modify the settings of this link. + Note that basic users can only set :field:`RequestedVisibility.public` + as the :field:`SharedLinkSettings.requested_visibility` and cannot set + :field:`SharedLinkSettings.expires`. + TeamMemberInfo: + type: object + properties: + member_id: + type: string + description: >- + ID of user as a member of a team. This field will only be present if + the member is in the same team as current user. + display_name: + type: string + description: The display name of the user. + team_info: + $ref: '#/components/schemas/Team' + description: > + Information about a team member. + + team_info: Information about the member's team. + + display_name: The display name of the user. + + member_id: ID of user as a member of a team. This field will only be + present if the member is in the same team as current user. + SaveCopyReferenceError: + type: object + properties: + path: + $ref: '#/components/schemas/WriteError' + .tag: + title: Choice of SaveCopyReferenceError + type: string + enum: + - path + - invalid_copy_reference + - no_permission + - not_found + - too_many_files + - other + description: > + path: None + + invalid_copy_reference: The copy reference is invalid. + + no_permission: You don't have permission to save the given copy + reference. Please make sure this app is same app which created the copy + reference and the source user is still linked to the app. + + not_found: The file referenced by the copy reference cannot be found. + + too_many_files: The operation would involve more than 10,000 files and + folders. + + other: None + ListFoldersArgs: + type: object + properties: + limit: + type: number + description: The maximum number of results to return per request. + actions: + type: array + description: >- + A list of `FolderAction`s corresponding to `FolderPermission`s that + should appear in the response's + :field:`SharedFolderMetadata.permissions` field describing the + actions the authenticated user can perform on the folder. + items: + $ref: '#/components/schemas/FolderAction' + description: > + limit: The maximum number of results to return per request. + + actions: A list of `FolderAction`s corresponding to `FolderPermission`s + that should appear in the response's + :field:`SharedFolderMetadata.permissions` field describing the actions + the authenticated user can perform on the folder. + FileMemberRemoveActionResult: + type: object + properties: + member_error: + $ref: '#/components/schemas/FileMemberActionError' + .tag: + title: Choice of FileMemberRemoveActionResult + type: string + enum: + - success + - member_error + - other + success: + $ref: '#/components/schemas/MemberAccessLevelResult' + description: | + success: Member was successfully removed from this file. + member_error: User was not able to remove this member. + other: None + SharedLinkPolicy: + type: object + properties: + .tag: + title: Choice of SharedLinkPolicy + type: string + enum: + - anyone + - team + - members + - other + description: | + Who can view shared links in this folder. + anyone: Links can be shared with anyone. + team: Links can be shared with anyone on the same team as the owner. + members: Links can only be shared among members of the shared folder. + other: None + ListFileMembersBatchResult: + type: object + properties: + result: + $ref: '#/components/schemas/ListFileMembersIndividualResult' + file: + type: string + description: This is the input file identifier, whether an ID or a path. + description: | + Per-file result for :route:`list_file_members/batch`. + file: This is the input file identifier, whether an ID or a path. + result: The result for this particular file. + AudienceExceptionContentInfo: + type: object + properties: + name: + type: string + description: The name of the content, which is either a file or a folder. + description: > + Information about the content that has a link audience different than + that of this folder. + + name: The name of the content, which is either a file or a folder. + ListUsersOnFolderResponse: + type: object + properties: + cursor: + $ref: '#/components/schemas/Cursor' + has_more: + type: boolean + description: >- + Will be set to True if a subsequent call with the provided cursor to + :route:`docs/folder_users/list/continue` returns immediately with + some results. If set to False please allow some delay before making + another call to :route:`docs/folder_users/list/continue`. + users: + type: array + description: List of users that are invited on the Paper folder. + items: + $ref: '#/components/schemas/UserInfo' + invitees: + type: array + description: List of email addresses that are invited on the Paper folder. + items: + $ref: '#/components/schemas/InviteeInfo' + description: > + invitees: List of email addresses that are invited on the Paper folder. + + users: List of users that are invited on the Paper folder. + + cursor: Pass the cursor into :route:`docs/folder_users/list/continue` to + paginate through all users. The cursor preserves all properties as + specified in the original call to :route:`docs/folder_users/list`. + + has_more: Will be set to True if a subsequent call with the provided + cursor to :route:`docs/folder_users/list/continue` returns immediately + with some results. If set to False please allow some delay before making + another call to :route:`docs/folder_users/list/continue`. + MountFolderError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharedFolderAccessError' + insufficient_quota: + $ref: '#/components/schemas/InsufficientQuotaAmounts' + .tag: + title: Choice of MountFolderError + type: string + enum: + - access_error + - inside_shared_folder + - insufficient_quota + - already_mounted + - no_permission + - not_mountable + - other + description: > + access_error: None + + inside_shared_folder: Mounting would cause a shared folder to be inside + another, which is disallowed. + + insufficient_quota: The current user does not have enough space to mount + the shared folder. + + already_mounted: The shared folder is already mounted. + + no_permission: The current user does not have permission to perform this + action. + + not_mountable: The shared folder is not mountable. One example where + this can occur is when the shared folder belongs within a team folder in + the user's Dropbox. + + other: None + GetSharedLinkFileError: + type: object + properties: + .tag: + title: Choice of GetSharedLinkFileError + type: string + enum: + - shared_link_not_found + - shared_link_access_denied + - unsupported_link_type + - other + - shared_link_is_directory + description: > + shared_link_not_found: The shared link wasn't found. + + shared_link_access_denied: The caller is not allowed to access this + shared link. + + unsupported_link_type: This type of link is not supported. + + other: None + + shared_link_is_directory: Directories cannot be retrieved by this + endpoint. + DownloadError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of DownloadError + type: string + enum: + - path + - other + description: | + path: None + other: None + RefPaperDoc: + type: object + properties: + doc_id: + type: string + description: The Paper doc ID. + description: | + doc_id: The Paper doc ID. + CommitInfo: + type: object + properties: + autorename: + type: boolean + description: >- + If there's a conflict, as determined by :field:`mode`, have the + Dropbox server try to autorename the file to avoid conflict. + mute: + type: boolean + description: >- + Normally, users are made aware of any file modifications in their + Dropbox account via notifications in the client software. If + :val:`true`, this tells the clients that this modification shouldn't + result in a user notification. + client_modified: + type: string + description: >- + The value to store as the :field:`client_modified` timestamp. + Dropbox automatically records the time at which the file was written + to the Dropbox servers. It can also record an additional timestamp, + provided by Dropbox desktop clients, mobile clients, and API apps of + when the file was actually created or modified. + mode: + $ref: '#/components/schemas/WriteMode' + path: + type: string + description: Path in the user's Dropbox to save the file. + property_groups: + type: array + description: List of custom properties to add to file. + items: + $ref: '#/components/schemas/PropertyGroup' + description: > + path: Path in the user's Dropbox to save the file. + + mode: Selects what to do if the file already exists. + + autorename: If there's a conflict, as determined by :field:`mode`, have + the Dropbox server try to autorename the file to avoid conflict. + + client_modified: The value to store as the :field:`client_modified` + timestamp. Dropbox automatically records the time at which the file was + written to the Dropbox servers. It can also record an additional + timestamp, provided by Dropbox desktop clients, mobile clients, and API + apps of when the file was actually created or modified. + + mute: Normally, users are made aware of any file modifications in their + Dropbox account via notifications in the client software. If + :val:`true`, this tells the clients that this modification shouldn't + result in a user notification. + + property_groups: List of custom properties to add to file. + UserMembershipInfo: + type: object + properties: + initials: + type: string + description: Never set. + permissions: + type: array + description: >- + The permissions that requesting user has on this member. The set of + permissions corresponds to the MemberActions in the request. + items: + $ref: '#/components/schemas/MemberPermission' + user: + $ref: '#/components/schemas/UserInfo' + access_type: + $ref: '#/components/schemas/AccessLevel' + is_inherited: + type: boolean + description: True if the member has access from a parent folder. + description: > + The information about a user member of the shared content. + + access_type: The access type for this member. + + user: The account information for the membership user. + + permissions: The permissions that requesting user has on this member. + The set of permissions corresponds to the MemberActions in the request. + + initials: Never set. + + is_inherited: True if the member has access from a parent folder. + SpaceAllocation: + type: object + properties: + .tag: + title: Choice of SpaceAllocation + type: string + enum: + - individual + - team + - other + individual: + $ref: '#/components/schemas/IndividualSpaceAllocation' + team: + $ref: '#/components/schemas/TeamSpaceAllocation' + description: > + Space is allocated differently based on the type of account. + + individual: The user's space allocation applies only to their individual + account. + + team: The user shares space with other members of their team. + + other: None + PaperDocSharingPolicy: + type: object + properties: + doc_id: + type: string + description: The Paper doc ID. + sharing_policy: + $ref: '#/components/schemas/SharingPolicy' + description: | + doc_id: The Paper doc ID. + sharing_policy: The default sharing policy to be set for the Paper doc. + InsufficientQuotaAmounts: + type: object + properties: + space_shortage: + type: number + description: The amount of extra space needed to add the item. + space_left: + type: number + description: >- + The amount of space left in the user's Dropbox, less than + space_needed. + space_needed: + type: number + description: The amount of space needed to add the item (the size of the item). + description: > + space_needed: The amount of space needed to add the item (the size of + the item). + + space_shortage: The amount of extra space needed to add the item. + + space_left: The amount of space left in the user's Dropbox, less than + space_needed. + AccountType: + type: object + properties: + .tag: + title: Choice of AccountType + type: string + enum: + - basic + - pro + - business + description: | + What type of account this user has. + basic: The basic account type. + pro: The Dropbox Pro account type. + business: The Dropbox Business account type. + GpsCoordinates: + type: object + properties: + latitude: + type: number + description: Latitude of the GPS coordinates. + longitude: + type: number + description: Longitude of the GPS coordinates. + description: | + GPS coordinates for a photo or video. + latitude: Latitude of the GPS coordinates. + longitude: Longitude of the GPS coordinates. + FullTeam: + type: object + properties: + sharing_policies: + $ref: '#/components/schemas/TeamSharingPolicies' + office_addin_policy: + $ref: '#/components/schemas/OfficeAddInPolicy' + id: + type: string + description: The team's unique ID. + name: + type: string + description: The name of the team. + description: | + Detailed information about a team. + id: The team's unique ID. + name: The name of the team. + sharing_policies: Team policies governing sharing. + office_addin_policy: Team policy governing the use of the Office Add-In. + ListFolderMembersContinueArg: + type: object + properties: + cursor: + type: string + description: >- + The cursor returned by your last call to + :route:`list_folder_members` or + :route:`list_folder_members/continue`. + description: > + cursor: The cursor returned by your last call to + :route:`list_folder_members` or :route:`list_folder_members/continue`. + ListUsersOnPaperDocContinueArgs: + type: object + properties: + cursor: + type: string + description: >- + The cursor obtained from :route:`docs/users/list` or + :route:`docs/users/list/continue`. Allows for pagination. + doc_id: + type: string + description: The Paper doc ID. + description: > + doc_id: The Paper doc ID. + + cursor: The cursor obtained from :route:`docs/users/list` or + :route:`docs/users/list/continue`. Allows for pagination. + ListFilesContinueError: + type: object + properties: + .tag: + title: Choice of ListFilesContinueError + type: string + enum: + - user_error + - invalid_cursor + - other + user_error: + $ref: '#/components/schemas/SharingUserError' + description: | + Error results for :route:`list_received_files/continue`. + user_error: User account had a problem. + invalid_cursor: :field:`ListFilesContinueArg.cursor` is invalid. + other: None + ListFolderContinueArg: + type: object + properties: + cursor: + type: string + description: >- + The cursor returned by your last call to :route:`list_folder` or + :route:`list_folder/continue`. + description: > + cursor: The cursor returned by your last call to :route:`list_folder` or + :route:`list_folder/continue`. + InviteeInfo: + type: object + properties: + .tag: + title: Choice of InviteeInfo + type: string + enum: + - email + - other + email: + type: string + description: E-mail address of invited user. + description: | + Information about the recipient of a shared content invitation. + email: E-mail address of invited user. + other: None + RemoveMemberJobStatus: + type: object + properties: + failed: + $ref: '#/components/schemas/RemoveFolderMemberError' + .tag: + title: Choice of RemoveMemberJobStatus + type: string + enum: + - in_progress + - complete + - failed + complete: + $ref: '#/components/schemas/MemberAccessLevelResult' + description: > + in_progress: The asynchronous job is still in progress. + + complete: Removing the folder member has finished. The value is + information about whether the member has another form of access. + + failed: None + TeamSpaceAllocation: + type: object + properties: + allocated: + type: number + description: The total space allocated to the user's team (bytes). + used: + type: number + description: The total space currently used by the user's team (bytes). + user_within_team_space_limit_type: + $ref: '#/components/schemas/MemberSpaceLimitType' + user_within_team_space_allocated: + type: number + description: >- + The total space allocated to the user within its team allocated + space (0 means that no restriction is imposed on the user's quota + within its team). + description: > + used: The total space currently used by the user's team (bytes). + + allocated: The total space allocated to the user's team (bytes). + + user_within_team_space_allocated: The total space allocated to the user + within its team allocated space (0 means that no restriction is imposed + on the user's quota within its team). + + user_within_team_space_limit_type: The type of the space limit imposed + on the team member (off, alert_only, stop_sync). + FolderSharingInfo: + type: object + properties: + read_only: + type: boolean + description: True if the file or folder is inside a read-only shared folder. + parent_shared_folder_id: + type: string + description: Set if the folder is contained by a shared folder. + traverse_only: + type: boolean + description: >- + Specifies that the folder can only be traversed and the user can + only see a limited subset of the contents of this folder because + they don't have read access to this folder. They do, however, have + access to some sub folder. + shared_folder_id: + type: string + description: >- + If this folder is a shared folder mount point, the ID of the shared + folder mounted at this location. + no_access: + type: boolean + description: Specifies that the folder cannot be accessed by the user. + description: > + Sharing info for a folder which is contained in a shared folder or is a + shared folder mount point. + + read_only: True if the file or folder is inside a read-only shared + folder. + + parent_shared_folder_id: Set if the folder is contained by a shared + folder. + + shared_folder_id: If this folder is a shared folder mount point, the ID + of the shared folder mounted at this location. + + traverse_only: Specifies that the folder can only be traversed and the + user can only see a limited subset of the contents of this folder + because they don't have read access to this folder. They do, however, + have access to some sub folder. + + no_access: Specifies that the folder cannot be accessed by the user. + ListFileMembersArg: + type: object + properties: + include_inherited: + type: boolean + description: >- + Whether to include members who only have access from a parent shared + folder. + limit: + type: number + description: >- + Number of members to return max per query. Defaults to 100 if no + limit is specified. + actions: + type: array + description: The actions for which to return permissions on a member. + items: + $ref: '#/components/schemas/MemberAction' + file: + type: string + description: The file for which you want to see members. + description: > + Arguments for :route:`list_file_members`. + + file: The file for which you want to see members. + + actions: The actions for which to return permissions on a member. + + include_inherited: Whether to include members who only have access from + a parent shared folder. + + limit: Number of members to return max per query. Defaults to 100 if no + limit is specified. + RemovePropertiesError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of RemovePropertiesError + type: string + enum: + - template_not_found + - restricted_content + - other + - path + - unsupported_folder + - property_group_lookup + property_group_lookup: + $ref: '#/components/schemas/LookUpPropertiesError' + template_not_found: + type: string + description: Template does not exist for the given identifier. + description: > + template_not_found: Template does not exist for the given identifier. + + restricted_content: You do not have permission to modify this template. + + other: None + + path: None + + unsupported_folder: This folder cannot be tagged. Tagging folders is not + supported for team-owned templates. + + property_group_lookup: None + LinkSettings: + type: object + properties: + access_level: + $ref: '#/components/schemas/AccessLevel' + audience: + $ref: '#/components/schemas/LinkAudience' + password: + $ref: '#/components/schemas/LinkPassword' + expiry: + $ref: '#/components/schemas/LinkExpiry' + description: > + Settings that apply to a link. + + access_level: The access level on the link for this file. Currently, it + only accepts 'viewer' and 'viewer_no_comment'. + + audience: The type of audience on the link for this file. + + expiry: An expiry timestamp to set on a link. + + password: The password for the link. + GetTemporaryLinkResult: + type: object + properties: + link: + type: string + description: The temporary link which can be used to stream content the file. + metadata: + $ref: '#/components/schemas/FileMetadata' + description: | + metadata: Metadata of the file. + link: The temporary link which can be used to stream content the file. + ListPaperDocsContinueArgs: + type: object + properties: + cursor: + type: string + description: >- + The cursor obtained from :route:`docs/list` or + :route:`docs/list/continue`. Allows for pagination. + description: > + cursor: The cursor obtained from :route:`docs/list` or + :route:`docs/list/continue`. Allows for pagination. + TeamSharingPolicies: + type: object + properties: + shared_folder_join_policy: + $ref: '#/components/schemas/SharedFolderJoinPolicy' + shared_folder_member_policy: + $ref: '#/components/schemas/SharedFolderMemberPolicy' + shared_link_create_policy: + $ref: '#/components/schemas/SharedLinkCreatePolicy' + description: > + Policies governing sharing within and outside of the team. + + shared_folder_member_policy: Who can join folders shared by team + members. + + shared_folder_join_policy: Which shared folders team members can join. + + shared_link_create_policy: Who can view shared links owned by team + members. + FolderAction: + type: object + properties: + .tag: + title: Choice of FolderAction + type: string + enum: + - change_options + - disable_viewer_info + - edit_contents + - enable_viewer_info + - invite_editor + - invite_viewer + - invite_viewer_no_comment + - relinquish_membership + - unmount + - unshare + - leave_a_copy + - share_link + - create_link + - set_access_inheritance + - other + description: > + Actions that may be taken on shared folders. + + change_options: Change folder options, such as who can be invited to + join the folder. + + disable_viewer_info: Disable viewer information for this folder. + + edit_contents: Change or edit contents of the folder. + + enable_viewer_info: Enable viewer information on the folder. + + invite_editor: Invite a user or group to join the folder with read and + write permission. + + invite_viewer: Invite a user or group to join the folder with read + permission. + + invite_viewer_no_comment: Invite a user or group to join the folder with + read permission but no comment permissions. + + relinquish_membership: Relinquish one's own membership in the folder. + + unmount: Unmount the folder. + + unshare: Stop sharing this folder. + + leave_a_copy: Keep a copy of the contents upon leaving or being kicked + from the folder. + + share_link: Use create_link instead. + + create_link: Create a shared link for folder. + + set_access_inheritance: Set whether the folder inherits permissions from + its parent. + + other: None + RequestedVisibility: + type: object + properties: + .tag: + title: Choice of RequestedVisibility + type: string + enum: + - public + - team_only + - password + description: > + The access permission that can be requested by the caller for the shared + link. Note that the final resolved visibility of the shared link takes + into account other aspects, such as team and shared folder settings. + Check the :type:`ResolvedVisibility` for more info on the possible + resolved visibility values of shared links. + + public: Anyone who has received the link can access it. No login + required. + + team_only: Only members of the same team can access the link. Login is + required. + + password: A link-specific password is required to access the link. Login + is not required. + RelocationResult: + type: object + properties: + metadata: + $ref: '#/components/schemas/Metadata' + description: | + metadata: Metadata of the relocated object. + ViewerInfoPolicy: + type: object + properties: + .tag: + title: Choice of ViewerInfoPolicy + type: string + enum: + - enabled + - disabled + - other + description: | + enabled: Viewer information is available on this file. + disabled: Viewer information is disabled on this file. + other: None + PaperDocExport: + type: object + properties: + export_format: + $ref: '#/components/schemas/ExportFormat' + doc_id: + type: string + description: The Paper doc ID. + description: | + doc_id: The Paper doc ID. + export_format: None + ShareFolderLaunch: + type: object + properties: + .tag: + title: Choice of ShareFolderLaunch + type: string + enum: + - async_job_id + - complete + async_job_id: + type: string + description: >- + This response indicates that the processing is asynchronous. The + string is an id that can be used to obtain the status of the + asynchronous job. + complete: + $ref: '#/components/schemas/SharedFolderMetadata' + description: > + async_job_id: This response indicates that the processing is + asynchronous. The string is an id that can be used to obtain the status + of the asynchronous job. + + complete: None + ListPaperDocsArgs: + type: object + properties: + sort_by: + $ref: '#/components/schemas/ListPaperDocsSortBy' + sort_order: + $ref: '#/components/schemas/ListPaperDocsSortOrder' + limit: + type: number + description: >- + Size limit per batch. The maximum number of docs that can be + retrieved per batch is 1000. Higher value results in invalid + arguments error. + filter_by: + $ref: '#/components/schemas/ListPaperDocsFilterBy' + description: > + filter_by: Allows user to specify how the Paper docs should be filtered. + + sort_by: Allows user to specify how the Paper docs should be sorted. + + sort_order: Allows user to specify the sort order of the result. + + limit: Size limit per batch. The maximum number of docs that can be + retrieved per batch is 1000. Higher value results in invalid arguments + error. + GetThumbnailBatchResultEntry: + type: object + properties: + failure: + $ref: '#/components/schemas/ThumbnailError' + .tag: + title: Choice of GetThumbnailBatchResultEntry + type: string + enum: + - success + - failure + - other + success: + $ref: '#/components/schemas/GetThumbnailBatchResultData' + description: | + success: None + failure: The result for this file if it was an error. + other: None + UploadSessionLookupError: + type: object + properties: + .tag: + title: Choice of UploadSessionLookupError + type: string + enum: + - not_found + - incorrect_offset + - closed + - not_closed + - too_large + - other + incorrect_offset: + $ref: '#/components/schemas/UploadSessionOffsetError' + description: > + not_found: The upload session ID was not found or has expired. Upload + sessions are valid for 48 hours. + + incorrect_offset: The specified offset was incorrect. See the value for + the correct offset. This error may occur when a previous request was + received and processed successfully but the client did not receive the + response, e.g. due to a network error. + + closed: You are attempting to append data to an upload session that has + alread been closed (i.e. committed). + + not_closed: The session must be closed before calling + upload_session/finish_batch. + + too_large: You can not append to the upload session because the size of + a file should not reach the max file size limit (i.e. 350GB). + + other: None + ListPaperDocsSortOrder: + type: object + properties: + .tag: + title: Choice of ListPaperDocsSortOrder + type: string + enum: + - ascending + - descending + - other + description: | + ascending: Sorts the search result in ascending order. + descending: Sorts the search result in descending order. + other: None + SaveUrlArg: + type: object + properties: + url: + type: string + description: The URL to be saved. + path: + type: string + description: The path in Dropbox where the URL will be saved to. + description: | + path: The path in Dropbox where the URL will be saved to. + url: The URL to be saved. + SearchResult: + type: object + properties: + matches: + type: array + description: A list (possibly empty) of matches for the query. + items: + $ref: '#/components/schemas/SearchMatch' + start: + type: number + description: >- + Used for paging. Value to set the start argument to when calling + :route:`search` to fetch the next page of results. + more: + type: boolean + description: >- + Used for paging. If true, indicates there is another page of results + available that can be fetched by calling :route:`search` again. + description: > + matches: A list (possibly empty) of matches for the query. + + more: Used for paging. If true, indicates there is another page of + results available that can be fetched by calling :route:`search` again. + + start: Used for paging. Value to set the start argument to when calling + :route:`search` to fetch the next page of results. + AddPaperDocUserResult: + type: object + properties: + .tag: + title: Choice of AddPaperDocUserResult + type: string + enum: + - success + - unknown_error + - sharing_outside_team_disabled + - daily_limit_reached + - user_is_owner + - failed_user_data_retrieval + - permission_already_granted + - other + description: > + success: User was successfully added to the Paper doc. + + unknown_error: Something unexpected happened when trying to add the user + to the Paper doc. + + sharing_outside_team_disabled: The Paper doc can be shared only with + team members. + + daily_limit_reached: The daily limit of how many users can be added to + the Paper doc was reached. + + user_is_owner: Owner's permissions cannot be changed. + + failed_user_data_retrieval: User data could not be retrieved. Clients + should retry. + + permission_already_granted: This user already has the correct permission + to the Paper doc. + + other: None + DownloadZipResult: + type: object + properties: + metadata: + $ref: '#/components/schemas/FolderMetadata' + description: | + metadata: None + ListFolderResult: + type: object + properties: + cursor: + type: string + description: >- + Pass the cursor into :route:`list_folder/continue` to see what's + changed in the folder since your previous query. + has_more: + type: boolean + description: >- + If true, then there are more entries available. Pass the cursor to + :route:`list_folder/continue` to retrieve the rest. + entries: + type: array + description: The files and (direct) subfolders in the folder. + items: + $ref: '#/components/schemas/Metadata' + description: > + entries: The files and (direct) subfolders in the folder. + + cursor: Pass the cursor into :route:`list_folder/continue` to see what's + changed in the folder since your previous query. + + has_more: If true, then there are more entries available. Pass the + cursor to :route:`list_folder/continue` to retrieve the rest. + SharedFolderMemberError: + type: object + properties: + .tag: + title: Choice of SharedFolderMemberError + type: string + enum: + - invalid_dropbox_id + - not_a_member + - no_explicit_access + - other + no_explicit_access: + $ref: '#/components/schemas/MemberAccessLevelResult' + description: > + invalid_dropbox_id: The target dropbox_id is invalid. + + not_a_member: The target dropbox_id is not a member of the shared + folder. + + no_explicit_access: The target member only has inherited access to the + shared folder. + + other: None + RevokeSharedLinkError: + type: object + properties: + .tag: + title: Choice of RevokeSharedLinkError + type: string + enum: + - shared_link_not_found + - shared_link_access_denied + - unsupported_link_type + - other + - shared_link_malformed + description: > + shared_link_not_found: The shared link wasn't found. + + shared_link_access_denied: The caller is not allowed to access this + shared link. + + unsupported_link_type: This type of link is not supported. + + other: None + + shared_link_malformed: Shared link is malformed. + WriteMode: + type: object + properties: + .tag: + title: Choice of WriteMode + type: string + enum: + - add + - overwrite + - update + update: + type: string + description: >- + Overwrite if the given "rev" matches the existing file's "rev". The + autorename strategy is to append the string "conflicted copy" to the + file name. For example, "document.txt" might become "document + (conflicted copy).txt" or "document (Panda's conflicted copy).txt". + description: > + Your intent when writing a file to some path. This is used to determine + what constitutes a conflict and what the autorename strategy is. + + In some situations, the conflict behavior is identical: (a) If the + target path doesn't refer to anything, the file is always written; no + conflict. (b) If the target path refers to a folder, it's always a + conflict. (c) If the target path refers to a file with identical + contents, nothing gets written; no conflict. + + The conflict checking differs in the case where there's a file at the + target path with contents different from the contents you're trying to + write. + + add: Do not overwrite an existing file if there is a conflict. The + autorename strategy is to append a number to the file name. For example, + "document.txt" might become "document (2).txt". + + overwrite: Always overwrite the existing file. The autorename strategy + is the same as it is for :field:`add`. + + update: Overwrite if the given "rev" matches the existing file's "rev". + The autorename strategy is to append the string "conflicted copy" to the + file name. For example, "document.txt" might become "document + (conflicted copy).txt" or "document (Panda's conflicted copy).txt". + GroupInfo: + type: object + properties: + group_external_id: + type: string + description: >- + External ID of group. This is an arbitrary ID that an admin can + attach to a group. + is_owner: + type: boolean + description: If the current user is an owner of the group. + member_count: + type: number + description: The number of members in the group. + same_team: + type: boolean + description: If the group is owned by the current user's team. + is_member: + type: boolean + description: If the current user is a member of the group. + group_management_type: + $ref: '#/components/schemas/GroupManagementType' + group_name: + type: string + group_id: + type: string + group_type: + $ref: '#/components/schemas/GroupType' + description: > + The information about a group. Groups is a way to manage a list of + users who need same access permission to the shared folder. + + group_name: None + + group_id: None + + group_management_type: Who is allowed to manage the group. + + group_type: The type of group. + + is_member: If the current user is a member of the group. + + is_owner: If the current user is an owner of the group. + + same_team: If the group is owned by the current user's team. + + group_external_id: External ID of group. This is an arbitrary ID that an + admin can attach to a group. + + member_count: The number of members in the group. + ListSharedLinksError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of ListSharedLinksError + type: string + enum: + - path + - reset + - other + description: > + path: None + + reset: Indicates that the cursor has been invalidated. Call + :route:`list_shared_links` to obtain a new cursor. + + other: None + AddTemplateArg: + type: object + properties: + fields: + type: array + description: >- + Definitions of the property fields associated with this template. + There can be up to 32 properties in a single template. + items: + $ref: '#/components/schemas/PropertyFieldTemplate' + name: + type: string + description: >- + Display name for the template. Template names can be up to 256 + bytes. + description: + type: string + description: >- + Description for the template. Template descriptions can be up to + 1024 bytes. + description: > + name: Display name for the template. Template names can be up to 256 + bytes. + + description: Description for the template. Template descriptions can be + up to 1024 bytes. + + fields: Definitions of the property fields associated with this + template. There can be up to 32 properties in a single template. + Cursor: + type: object + properties: + expiration: + type: string + description: >- + Expiration time of :field:`value`. + + Some cursors might have expiration time assigned. This is a UTC + value after which the cursor is no longer valid and the API starts + returning an error. If cursor expires a new one needs to be obtained + and pagination needs to be restarted. Some cursors might be + short-lived some cursors might be long-lived. + + This really depends on the sorting type and order, e.g.: + + 1. on one hand, listing docs created by the user, sorted by the + created time ascending will have undefinite expiration because the + results cannot change while the iteration is happening. This cursor + would be suitable for long term polling. + + 2. on the other hand, listing docs sorted by the last modified time + will have a very short expiration as docs do get modified very often + and the modified time can be changed while the iteration is + happening thus altering the results. + value: + type: string + description: The actual cursor value. + description: > + value: The actual cursor value. + + expiration: Expiration time of :field:`value`. + + Some cursors might have expiration time assigned. This is a UTC value + after which the cursor is no longer valid and the API starts returning + an error. If cursor expires a new one needs to be obtained and + pagination needs to be restarted. Some cursors might be short-lived some + cursors might be long-lived. + + This really depends on the sorting type and order, e.g.: + + 1. on one hand, listing docs created by the user, sorted by the created + time ascending will have undefinite expiration because the results + cannot change while the iteration is happening. This cursor would be + suitable for long term polling. + + 2. on the other hand, listing docs sorted by the last modified time will + have a very short expiration as docs do get modified very often and the + modified time can be changed while the iteration is happening thus + altering the results. + AddTemplateResult: + type: object + properties: + template_id: + type: string + description: >- + An identifier for template added by See + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + description: > + template_id: An identifier for template added by See + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + UnshareFolderError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharedFolderAccessError' + .tag: + title: Choice of UnshareFolderError + type: string + enum: + - access_error + - team_folder + - no_permission + - too_many_files + - other + description: > + access_error: None + + team_folder: This action cannot be performed on a team shared folder. + + no_permission: The current user does not have permission to perform this + action. + + too_many_files: This shared folder has too many files to be unshared. + + other: None + MemberPermission: + type: object + properties: + action: + $ref: '#/components/schemas/MemberAction' + reason: + $ref: '#/components/schemas/PermissionDeniedReason' + allow: + type: boolean + description: True if the user is allowed to take the action. + description: > + Whether the user is allowed to take the action on the associated member. + + action: The action that the user may wish to take on the member. + + allow: True if the user is allowed to take the action. + + reason: The reason why the user is denied the permission. Not present if + the action is allowed. + SharingFileAccessError: + type: object + properties: + .tag: + title: Choice of SharingFileAccessError + type: string + enum: + - no_permission + - invalid_file + - is_folder + - inside_public_folder + - inside_osx_package + - other + description: > + User could not access this file. + + no_permission: Current user does not have sufficient privileges to + perform the desired action. + + invalid_file: File specified was not found. + + is_folder: A folder can't be shared this way. Use folder sharing or a + shared link instead. + + inside_public_folder: A file inside a public folder can't be shared this + way. Use a public link instead. + + inside_osx_package: A Mac OS X package can't be shared this way. Use a + shared link instead. + + other: None + SearchMatch: + type: object + properties: + match_type: + $ref: '#/components/schemas/SearchMatchType' + metadata: + $ref: '#/components/schemas/Metadata' + description: | + match_type: The type of the match. + metadata: The metadata for the matched file or folder. + ListFileMembersContinueError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharingFileAccessError' + .tag: + title: Choice of ListFileMembersContinueError + type: string + enum: + - user_error + - access_error + - invalid_cursor + - other + user_error: + $ref: '#/components/schemas/SharingUserError' + description: | + Error for :route:`list_file_members/continue`. + user_error: None + access_error: None + invalid_cursor: :field:`ListFileMembersContinueArg.cursor` is invalid. + other: None + GetTemporaryLinkArg: + type: object + properties: + path: + type: string + description: The path to the file you want a temporary link to. + description: | + path: The path to the file you want a temporary link to. + GetCopyReferenceError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of GetCopyReferenceError + type: string + enum: + - path + - other + description: | + path: None + other: None + AudienceRestrictingSharedFolder: + type: object + properties: + shared_folder_id: + type: string + description: The ID of the shared folder. + audience: + $ref: '#/components/schemas/LinkAudience' + name: + type: string + description: The name of the shared folder. + description: > + Information about the shared folder that prevents the link audience for + this link from being more restrictive. + + shared_folder_id: The ID of the shared folder. + + name: The name of the shared folder. + + audience: The link audience of the shared folder. + GetTemporaryLinkError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of GetTemporaryLinkError + type: string + enum: + - path + - other + description: | + path: None + other: None + PollArg: + type: object + properties: + async_job_id: + type: string + description: >- + Id of the asynchronous job. This is the value of a response returned + from the method that launched the job. + description: > + Arguments for methods that poll the status of an asynchronous job. + + async_job_id: Id of the asynchronous job. This is the value of a + response returned from the method that launched the job. + UserInfo: + type: object + properties: + email: + type: string + description: Email address of user. + team_member_id: + type: string + description: >- + The team member ID of the shared folder member. Only present if + :field:`same_team` is true. + display_name: + type: string + description: The display name of the user. + account_id: + type: string + description: The account ID of the user. + same_team: + type: boolean + description: If the user is in the same team as current user. + description: > + Basic information about a user. Use :route:`users.get_account` and + :route:`users.get_account_batch` to obtain more detailed information. + + account_id: The account ID of the user. + + email: Email address of user. + + display_name: The display name of the user. + + same_team: If the user is in the same team as current user. + + team_member_id: The team member ID of the shared folder member. Only + present if :field:`same_team` is true. + UploadErrorWithProperties: + type: object + properties: + properties_error: + $ref: '#/components/schemas/InvalidPropertyGroupError' + path: + $ref: '#/components/schemas/UploadWriteFailed' + .tag: + title: Choice of UploadErrorWithProperties + type: string + enum: + - path + - properties_error + - other + description: > + path: Unable to save the uploaded contents to a file. + + properties_error: The supplied property group is invalid. The file has + uploaded without property groups. + + other: None + AccessLevel: + type: object + properties: + .tag: + title: Choice of AccessLevel + type: string + enum: + - owner + - editor + - viewer + - viewer_no_comment + - other + description: > + Defines the access levels for collaborators. + + owner: The collaborator is the owner of the shared folder. Owners can + view and edit the shared folder as well as set the folder's policies + using :route:`update_folder_policy`. + + editor: The collaborator can both view and edit the shared folder. + + viewer: The collaborator can only view the shared folder. + + viewer_no_comment: The collaborator can only view the shared folder and + does not have any access to comments. + + other: None + ThumbnailFormat: + type: object + properties: + .tag: + title: Choice of ThumbnailFormat + type: string + enum: + - jpeg + - png + description: | + jpeg: None + png: None + CreateSharedLinkArg: + type: object + properties: + path: + type: string + description: The path to share. + pending_upload: + $ref: '#/components/schemas/PendingUploadMode' + short_url: + type: boolean + description: Whether to return a shortened URL. + description: > + path: The path to share. + + short_url: Whether to return a shortened URL. + + pending_upload: If it's okay to share a path that does not yet exist, + set this to either :field:`PendingUploadMode.file` or + :field:`PendingUploadMode.folder` to indicate whether to assume it's a + file or folder. + ShareFolderError: + type: object + properties: + bad_path: + $ref: '#/components/schemas/SharePathError' + .tag: + title: Choice of ShareFolderError + type: string + enum: + - email_unverified + - bad_path + - team_policy_disallows_member_policy + - disallowed_shared_link_policy + - other + - no_permission + description: > + email_unverified: The current user's e-mail address is unverified. + + bad_path: :field:`ShareFolderArg.path` is invalid. + + team_policy_disallows_member_policy: Team policy is more restrictive + than :field:`ShareFolderArg.member_policy`. + + disallowed_shared_link_policy: The current user's account is not allowed + to select the specified :field:`ShareFolderArg.shared_link_policy`. + + other: None + + no_permission: The current user does not have permission to perform this + action. + GetAccountArg: + type: object + properties: + account_id: + type: string + description: A user's account identifier. + description: | + account_id: A user's account identifier. + SymlinkInfo: + type: object + properties: + target: + type: string + description: The target this symlink points to. + description: | + target: The target this symlink points to. + SharingUserError: + type: object + properties: + .tag: + title: Choice of SharingUserError + type: string + enum: + - email_unverified + - other + description: > + User account had a problem preventing this action. + + email_unverified: The current user must verify the account e-mail + address before performing this action. + + other: None + SharedFolderAccessError: + type: object + properties: + .tag: + title: Choice of SharedFolderAccessError + type: string + enum: + - invalid_id + - not_a_member + - email_unverified + - unmounted + - other + description: > + There is an error accessing the shared folder. + + invalid_id: This shared folder ID is invalid. + + not_a_member: The user is not a member of the shared folder thus cannot + access it. + + email_unverified: Never set. + + unmounted: The shared folder is unmounted. + + other: None + FolderSharingPolicyType: + type: object + properties: + .tag: + title: Choice of FolderSharingPolicyType + type: string + enum: + - team + - invite_only + description: > + The sharing policy of a Paper folder. + + + Note: The sharing policy of subfolders is inherited from the root + folder. + + team: Everyone in your team and anyone directly invited can access this + folder. + + invite_only: Only people directly invited can access this folder. + GroupManagementType: + type: object + properties: + .tag: + title: Choice of GroupManagementType + type: string + enum: + - user_managed + - company_managed + - system_managed + - other + description: | + The group type determines how a group is managed. + user_managed: A group which is managed by selected users. + company_managed: A group which is managed by team admins only. + system_managed: A group which is managed automatically by Dropbox. + other: None + AddPaperDocUserMemberResult: + type: object + properties: + member: + $ref: '#/components/schemas/MemberSelector' + result: + $ref: '#/components/schemas/AddPaperDocUserResult' + description: | + Per-member result for :route:`docs/users/add`. + member: One of specified input members. + result: The outcome of the action on this member. + DocLookupError: + type: object + properties: + .tag: + title: Choice of DocLookupError + type: string + enum: + - insufficient_permissions + - other + - doc_not_found + description: > + insufficient_permissions: Your account does not have permissions to + perform this action. + + other: None + + doc_not_found: The required doc was not found. + ListFolderLongpollArg: + type: object + properties: + cursor: + type: string + description: >- + A cursor as returned by :route:`list_folder` or + :route:`list_folder/continue`. Cursors retrieved by setting + :field:`ListFolderArg.include_media_info` to :val:`true` are not + supported. + timeout: + type: number + description: >- + A timeout in seconds. The request will block for at most this length + of time, plus up to 90 seconds of random jitter added to avoid the + thundering herd problem. Care should be taken when using this + parameter, as some network infrastructure does not support long + timeouts. + description: > + cursor: A cursor as returned by :route:`list_folder` or + :route:`list_folder/continue`. Cursors retrieved by setting + :field:`ListFolderArg.include_media_info` to :val:`true` are not + supported. + + timeout: A timeout in seconds. The request will block for at most this + length of time, plus up to 90 seconds of random jitter added to avoid + the thundering herd problem. Care should be taken when using this + parameter, as some network infrastructure does not support long + timeouts. + UploadError: + type: object + properties: + properties_error: + $ref: '#/components/schemas/InvalidPropertyGroupError' + path: + $ref: '#/components/schemas/UploadWriteFailed' + .tag: + title: Choice of UploadError + type: string + enum: + - path + - properties_error + - other + description: > + path: Unable to save the uploaded contents to a file. + + properties_error: The supplied property group is invalid. The file has + uploaded without property groups. + + other: None + PaperDocUpdateArgs: + type: object + properties: + doc_update_policy: + $ref: '#/components/schemas/PaperDocUpdatePolicy' + doc_id: + type: string + description: The Paper doc ID. + import_format: + $ref: '#/components/schemas/ImportFormat' + revision: + type: number + description: >- + The latest doc revision. This value must match the head revision or + an error code will be returned. This is to prevent colliding writes. + description: > + doc_id: The Paper doc ID. + + doc_update_policy: The policy used for the current update call. + + revision: The latest doc revision. This value must match the head + revision or an error code will be returned. This is to prevent colliding + writes. + + import_format: The format of provided data. + GetFileMetadataIndividualResult: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharingFileAccessError' + .tag: + title: Choice of GetFileMetadataIndividualResult + type: string + enum: + - metadata + - access_error + - other + metadata: + $ref: '#/components/schemas/SharedFileMetadata' + description: | + metadata: The result for this file if it was successful. + access_error: The result for this file if it was an error. + other: None + SaveCopyReferenceResult: + type: object + properties: + metadata: + $ref: '#/components/schemas/Metadata' + description: > + metadata: The metadata of the saved file or folder in the user's + Dropbox. + SaveUrlJobStatus: + type: object + properties: + failed: + $ref: '#/components/schemas/SaveUrlError' + .tag: + title: Choice of SaveUrlJobStatus + type: string + enum: + - in_progress + - complete + - failed + complete: + $ref: '#/components/schemas/FileMetadata' + description: | + in_progress: The asynchronous job is still in progress. + complete: Metadata of the file where the URL is saved to. + failed: None + GetMetadataArg: + type: object + properties: + path: + type: string + description: The path of a file or folder on Dropbox. + include_has_explicit_shared_members: + type: boolean + description: >- + If true, the results will include a flag for each file indicating + whether or not that file has any explicit members. + include_property_groups: + $ref: '#/components/schemas/TemplateFilterBase' + include_deleted: + type: boolean + description: >- + If true, :type:`DeletedMetadata` will be returned for deleted file + or folder, otherwise :field:`LookupError.not_found` will be + returned. + include_media_info: + type: boolean + description: >- + If true, :field:`FileMetadata.media_info` is set for photo and + video. + description: > + path: The path of a file or folder on Dropbox. + + include_media_info: If true, :field:`FileMetadata.media_info` is set for + photo and video. + + include_deleted: If true, :type:`DeletedMetadata` will be returned for + deleted file or folder, otherwise :field:`LookupError.not_found` will be + returned. + + include_has_explicit_shared_members: If true, the results will include a + flag for each file indicating whether or not that file has any explicit + members. + + include_property_groups: If set to a valid list of template IDs, + :field:`FileMetadata.property_groups` is set if there exists property + data associated with the file and each of the listed templates. + SharedFolderMemberPolicy: + type: object + properties: + .tag: + title: Choice of SharedFolderMemberPolicy + type: string + enum: + - team + - anyone + - other + description: > + Policy governing who can be a member of a folder shared by a team + member. + + team: Only a teammate can be a member of a folder shared by a team + member. + + anyone: Anyone can be a member of a folder shared by a team member. + + other: None + GetTemplateArg: + type: object + properties: + template_id: + type: string + description: >- + An identifier for template added by route See + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + description: > + template_id: An identifier for template added by route See + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + RestoreError: + type: object + properties: + path_lookup: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of RestoreError + type: string + enum: + - path_lookup + - path_write + - invalid_revision + - other + path_write: + $ref: '#/components/schemas/WriteError' + description: > + path_lookup: An error occurs when downloading metadata for the file. + + path_write: An error occurs when trying to restore the file to that + path. + + invalid_revision: The revision is invalid. It may point to a different + file. + + other: None + RelocationBatchResult: + type: object + properties: + entries: + type: array + items: + $ref: '#/components/schemas/RelocationBatchResultData' + description: | + entries: None + FileMemberActionResult: + type: object + properties: + member: + $ref: '#/components/schemas/MemberSelector' + result: + $ref: '#/components/schemas/FileMemberActionIndividualResult' + description: > + Per-member result for :route:`add_file_member` or + :route:`change_file_member_access`. + + member: One of specified input members. + + result: The outcome of the action on this member. + ModifySharedLinkSettingsError: + type: object + properties: + .tag: + title: Choice of ModifySharedLinkSettingsError + type: string + enum: + - shared_link_not_found + - shared_link_access_denied + - unsupported_link_type + - other + - settings_error + - email_not_verified + settings_error: + $ref: '#/components/schemas/SharedLinkSettingsError' + description: > + shared_link_not_found: The shared link wasn't found. + + shared_link_access_denied: The caller is not allowed to access this + shared link. + + unsupported_link_type: This type of link is not supported. + + other: None + + settings_error: There is an error with the given settings. + + email_not_verified: The caller's email should be verified. + UpdateFileRequestArgs: + type: object + properties: + open: + type: boolean + description: Whether to set this file request as open or closed. + destination: + type: string + description: >- + The new path of the folder in the Dropbox where uploaded files will + be sent. For apps with the app folder permission, this will be + relative to the app folder. + deadline: + $ref: '#/components/schemas/UpdateFileRequestDeadline' + id: + type: string + description: The ID of the file request to update. + title: + type: string + description: The new title of the file request. Must not be empty. + description: > + Arguments for :route:`update`. + + id: The ID of the file request to update. + + title: The new title of the file request. Must not be empty. + + destination: The new path of the folder in the Dropbox where uploaded + files will be sent. For apps with the app folder permission, this will + be relative to the app folder. + + deadline: The new deadline for the file request. + + open: Whether to set this file request as open or closed. + TokenFromOAuth1Result: + type: object + properties: + oauth2_token: + type: string + description: The OAuth 2.0 token generated from the supplied OAuth 1.0 token. + description: > + oauth2_token: The OAuth 2.0 token generated from the supplied OAuth 1.0 + token. + Folder: + type: object + properties: + id: + type: string + description: Paper folder ID. This ID uniquely identifies the folder. + name: + type: string + description: Paper folder name. + description: | + Data structure representing a Paper folder. + id: Paper folder ID. This ID uniquely identifies the folder. + name: Paper folder name. + RelinquishFolderMembershipArg: + type: object + properties: + shared_folder_id: + type: string + description: The ID for the shared folder. + leave_a_copy: + type: boolean + description: Keep a copy of the folder's contents upon relinquishing membership. + description: > + shared_folder_id: The ID for the shared folder. + + leave_a_copy: Keep a copy of the folder's contents upon relinquishing + membership. + SaveUrlError: + type: object + properties: + path: + $ref: '#/components/schemas/WriteError' + .tag: + title: Choice of SaveUrlError + type: string + enum: + - path + - download_failed + - invalid_url + - not_found + - other + description: | + path: None + download_failed: Failed downloading the given URL. + invalid_url: The given URL is invalid. + not_found: The file where the URL is saved to no longer exists. + other: None + SharingPolicy: + type: object + properties: + team_sharing_policy: + $ref: '#/components/schemas/SharingTeamPolicyType' + public_sharing_policy: + $ref: '#/components/schemas/SharingPublicPolicyType' + description: > + Sharing policy of Paper doc. + + public_sharing_policy: This value applies to the non-team members. + + team_sharing_policy: This value applies to the team members only. The + value is null for all personal accounts. + LinkAudience: + type: object + properties: + .tag: + title: Choice of LinkAudience + type: string + enum: + - public + - team + - members + - other + description: | + public: Link is accessible by anyone. + team: Link is accessible only by team members. + members: Link is accessible only by members of the content. + other: None + SharedLinkAccessFailureReason: + type: object + properties: + .tag: + title: Choice of SharedLinkAccessFailureReason + type: string + enum: + - login_required + - email_verify_required + - password_required + - team_only + - owner_only + - other + description: | + login_required: User is not logged in. + email_verify_required: User's email is not verified. + password_required: The link is password protected. + team_only: Access is allowed for team members only. + owner_only: Access is allowed for the shared link's owner only. + other: None + PropertiesSearchQuery: + type: object + properties: + query: + type: string + description: The property field value for which to search across templates. + logical_operator: + $ref: '#/components/schemas/LogicalOperator' + mode: + $ref: '#/components/schemas/PropertiesSearchMode' + description: | + query: The property field value for which to search across templates. + mode: The mode with which to perform the search. + logical_operator: The logical operator with which to append the query. + PropertyGroupUpdate: + type: object + properties: + remove_fields: + type: array + description: Property fields to remove (by name), provided they exist. + items: + type: string + template_id: + type: string + description: A unique identifier for a property template. + add_or_update_fields: + type: array + description: >- + Property fields to update. If the property field already exists, it + is updated. If the property field doesn't exist, the property group + is added. + items: + $ref: '#/components/schemas/PropertyField' + description: > + template_id: A unique identifier for a property template. + + add_or_update_fields: Property fields to update. If the property field + already exists, it is updated. If the property field doesn't exist, the + property group is added. + + remove_fields: Property fields to remove (by name), provided they exist. + ExportFormat: + type: object + properties: + .tag: + title: Choice of ExportFormat + type: string + enum: + - html + - markdown + - other + description: | + The desired export format of the Paper doc. + html: The HTML export format. + markdown: The markdown export format. + other: None + FileSharingInfo: + type: object + properties: + read_only: + type: boolean + description: True if the file or folder is inside a read-only shared folder. + parent_shared_folder_id: + type: string + description: ID of shared folder that holds this file. + modified_by: + type: string + description: >- + The last user who modified the file. This field will be null if the + user's account has been deleted. + description: > + Sharing info for a file which is contained by a shared folder. + + read_only: True if the file or folder is inside a read-only shared + folder. + + parent_shared_folder_id: ID of shared folder that holds this file. + + modified_by: The last user who modified the file. This field will be + null if the user's account has been deleted. + SharedLink: + type: object + properties: + url: + type: string + description: Shared link url. + password: + type: string + description: Password for the shared link. + description: | + url: Shared link url. + password: Password for the shared link. + PaperDocCreateArgs: + type: object + properties: + parent_folder_id: + type: string + description: >- + The Paper folder ID where the Paper document should be created. The + API user has to have write access to this folder or error is thrown. + import_format: + $ref: '#/components/schemas/ImportFormat' + description: > + import_format: The format of provided data. + + parent_folder_id: The Paper folder ID where the Paper document should be + created. The API user has to have write access to this folder or error + is thrown. + Name: + type: object + properties: + familiar_name: + type: string + description: >- + Locale-dependent name. In the US, a person's familiar name is their + :field:`given_name`, but elsewhere, it could be any combination of a + person's :field:`given_name` and :field:`surname`. + surname: + type: string + description: Also known as a last name or family name. + display_name: + type: string + description: >- + A name that can be used directly to represent the name of a user's + Dropbox account. + given_name: + type: string + description: Also known as a first name. + abbreviated_name: + type: string + description: >- + An abbreviated form of the person's name. Their initials in most + locales. + description: > + Representations for a person's name to assist with internationalization. + + given_name: Also known as a first name. + + surname: Also known as a last name or family name. + + familiar_name: Locale-dependent name. In the US, a person's familiar + name is their :field:`given_name`, but elsewhere, it could be any + combination of a person's :field:`given_name` and :field:`surname`. + + display_name: A name that can be used directly to represent the name of + a user's Dropbox account. + + abbreviated_name: An abbreviated form of the person's name. Their + initials in most locales. + ParentFolderAccessInfo: + type: object + properties: + path: + type: string + description: >- + The full path to the parent shared folder relative to the acting + user's root. + shared_folder_id: + type: string + description: The identifier of the parent shared folder. + folder_name: + type: string + description: Display name for the folder. + permissions: + type: array + description: The user's permissions for the parent shared folder. + items: + $ref: '#/components/schemas/MemberPermission' + description: > + Contains information about a parent folder that a member has access to. + + folder_name: Display name for the folder. + + shared_folder_id: The identifier of the parent shared folder. + + permissions: The user's permissions for the parent shared folder. + + path: The full path to the parent shared folder relative to the acting + user's root. + InvalidPropertyGroupError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of InvalidPropertyGroupError + type: string + enum: + - template_not_found + - restricted_content + - other + - path + - unsupported_folder + - property_field_too_large + - does_not_fit_template + template_not_found: + type: string + description: Template does not exist for the given identifier. + description: > + template_not_found: Template does not exist for the given identifier. + + restricted_content: You do not have permission to modify this template. + + other: None + + path: None + + unsupported_folder: This folder cannot be tagged. Tagging folders is not + supported for team-owned templates. + + property_field_too_large: One or more of the supplied property field + values is too large. + + does_not_fit_template: One or more of the supplied property fields does + not conform to the template specifications. + UploadSessionFinishBatchResult: + type: object + properties: + entries: + type: array + description: Commit result for each file in the batch. + items: + $ref: '#/components/schemas/UploadSessionFinishBatchResultEntry' + description: | + entries: Commit result for each file in the batch. + FileMemberActionIndividualResult: + type: object + properties: + member_error: + $ref: '#/components/schemas/FileMemberActionError' + .tag: + title: Choice of FileMemberActionIndividualResult + type: string + enum: + - success + - member_error + success: + $ref: '#/components/schemas/AccessLevel' + description: > + success: Member was successfully removed from this file. If AccessLevel + is given, the member still has access via a parent shared folder. + + member_error: User was not able to perform this action. + UpdateTemplateResult: + type: object + properties: + template_id: + type: string + description: >- + An identifier for template added by route See + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + description: > + template_id: An identifier for template added by route See + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + UpdateFolderPolicyError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharedFolderAccessError' + .tag: + title: Choice of UpdateFolderPolicyError + type: string + enum: + - access_error + - not_on_team + - team_policy_disallows_member_policy + - disallowed_shared_link_policy + - no_permission + - team_folder + - other + description: > + access_error: None + + not_on_team: :field:`UpdateFolderPolicyArg.member_policy` was set even + though user is not on a team. + + team_policy_disallows_member_policy: Team policy is more restrictive + than :field:`ShareFolderArg.member_policy`. + + disallowed_shared_link_policy: The current account is not allowed to + select the specified :field:`ShareFolderArg.shared_link_policy`. + + no_permission: The current user does not have permission to perform this + action. + + team_folder: This action cannot be performed on a team shared folder. + + other: None + GroupMembershipInfo: + type: object + properties: + initials: + type: string + description: Never set. + permissions: + type: array + description: >- + The permissions that requesting user has on this member. The set of + permissions corresponds to the MemberActions in the request. + items: + $ref: '#/components/schemas/MemberPermission' + group: + $ref: '#/components/schemas/GroupInfo' + access_type: + $ref: '#/components/schemas/AccessLevel' + is_inherited: + type: boolean + description: True if the member has access from a parent folder. + description: > + The information about a group member of the shared content. + + access_type: The access type for this member. + + group: The information about the membership group. + + permissions: The permissions that requesting user has on this member. + The set of permissions corresponds to the MemberActions in the request. + + initials: Never set. + + is_inherited: True if the member has access from a parent folder. + AudienceExceptions: + type: object + properties: + count: + type: number + exceptions: + type: array + description: >- + A truncated list of some of the content that is an exception. The + length of this list could be smaller than the count since it is only + a sample but will not be empty as long as count is not 0. + items: + $ref: '#/components/schemas/AudienceExceptionContentInfo' + description: > + The total count and truncated list of information of content inside this + folder that has a different audience than the link on this folder. This + is only returned for folders. + + count: None + + exceptions: A truncated list of some of the content that is an + exception. The length of this list could be smaller than the count since + it is only a sample but will not be empty as long as count is not 0. + PropertyType: + type: object + properties: + .tag: + title: Choice of PropertyType + type: string + enum: + - string + - other + description: > + Data type of the given property field added. + + string: The associated property field will be of type string. Unicode is + supported. + + other: None + AddFolderMemberError: + type: object + properties: + too_many_members: + type: number + description: The value is the member limit that was reached. + access_error: + $ref: '#/components/schemas/SharedFolderAccessError' + .tag: + title: Choice of AddFolderMemberError + type: string + enum: + - access_error + - email_unverified + - bad_member + - cant_share_outside_team + - too_many_members + - too_many_pending_invites + - rate_limit + - too_many_invitees + - insufficient_plan + - team_folder + - no_permission + - other + bad_member: + $ref: '#/components/schemas/AddMemberSelectorError' + too_many_pending_invites: + type: number + description: The value is the pending invite limit that was reached. + description: > + access_error: Unable to access shared folder. + + email_unverified: The current user's e-mail address is unverified. + + bad_member: :field:`AddFolderMemberArg.members` contains a bad + invitation recipient. + + cant_share_outside_team: Your team policy does not allow sharing outside + of the team. + + too_many_members: The value is the member limit that was reached. + + too_many_pending_invites: The value is the pending invite limit that was + reached. + + rate_limit: The current user has hit the limit of invites they can send + per day. Try again in 24 hours. + + too_many_invitees: The current user is trying to share with too many + people at once. + + insufficient_plan: The current user's account doesn't support this + action. An example of this is when adding a read-only member. This + action can only be performed by users that have upgraded to a Pro or + Business plan. + + team_folder: This action cannot be performed on a team shared folder. + + no_permission: The current user does not have permission to perform this + action. + + other: None + RootInfo: + type: object + properties: + root_namespace_id: + type: string + description: >- + The namespace ID for user's root namespace. It will be the namespace + ID of the shared team root if the user is member of a team with a + separate team root. Otherwise it will be same as + :field:`RootInfo.home_namespace_id`. + home_namespace_id: + type: string + description: The namespace ID for user's home namespace. + description: > + Information about current user's root. + + root_namespace_id: The namespace ID for user's root namespace. It will + be the namespace ID of the shared team root if the user is member of a + team with a separate team root. Otherwise it will be same as + :field:`RootInfo.home_namespace_id`. + + home_namespace_id: The namespace ID for user's home namespace. + UploadSessionFinishBatchLaunch: + type: object + properties: + .tag: + title: Choice of UploadSessionFinishBatchLaunch + type: string + enum: + - async_job_id + - complete + - other + async_job_id: + type: string + description: >- + This response indicates that the processing is asynchronous. The + string is an id that can be used to obtain the status of the + asynchronous job. + complete: + $ref: '#/components/schemas/UploadSessionFinishBatchResult' + description: > + Result returned by :route:`upload_session/finish_batch` that may either + launch an asynchronous job or complete synchronously. + + async_job_id: This response indicates that the processing is + asynchronous. The string is an id that can be used to obtain the status + of the asynchronous job. + + complete: None + + other: None + ListFileRequestsResult: + type: object + properties: + file_requests: + type: array + description: >- + The file requests owned by this user. Apps with the app folder + permission will only see file requests in their app folder. + items: + $ref: '#/components/schemas/FileRequest' + description: > + Result for :route:`list`. + + file_requests: The file requests owned by this user. Apps with the app + folder permission will only see file requests in their app folder. + ListRevisionsError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of ListRevisionsError + type: string + enum: + - path + - other + description: | + path: None + other: None + FilePermission: + type: object + properties: + action: + $ref: '#/components/schemas/FileAction' + reason: + $ref: '#/components/schemas/PermissionDeniedReason' + allow: + type: boolean + description: True if the user is allowed to take the action. + description: > + Whether the user is allowed to take the sharing action on the file. + + action: The action that the user may wish to take on the file. + + allow: True if the user is allowed to take the action. + + reason: The reason why the user is denied the permission. Not present if + the action is allowed. + ListFolderError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of ListFolderError + type: string + enum: + - path + - other + description: | + path: None + other: None + FileRequest: + type: object + properties: + title: + type: string + description: The title of the file request. + url: + type: string + description: The URL of the file request. + destination: + type: string + description: >- + The path of the folder in the Dropbox where uploaded files will be + sent. This can be :val:`null` if the destination was removed. For + apps with the app folder permission, this will be relative to the + app folder. + created: + type: string + description: When this file request was created. + file_count: + type: number + description: The number of files this file request has received. + deadline: + $ref: '#/components/schemas/FileRequestDeadline' + id: + type: string + description: The ID of the file request. + is_open: + type: boolean + description: >- + Whether or not the file request is open. If the file request is + closed, it will not accept any more file submissions. + description: > + A :link:`file request https://www.dropbox.com/help/9090` for receiving + files into the user's Dropbox account. + + id: The ID of the file request. + + url: The URL of the file request. + + title: The title of the file request. + + created: When this file request was created. + + is_open: Whether or not the file request is open. If the file request is + closed, it will not accept any more file submissions. + + file_count: The number of files this file request has received. + + destination: The path of the folder in the Dropbox where uploaded files + will be sent. This can be :val:`null` if the destination was removed. + For apps with the app folder permission, this will be relative to the + app folder. + + deadline: The deadline for this file request. Only set if the request + has a deadline. + InviteeInfoWithPermissionLevel: + type: object + properties: + permission_level: + $ref: '#/components/schemas/PaperDocPermissionLevel' + invitee: + $ref: '#/components/schemas/InviteeInfo' + description: | + invitee: Email address invited to the Paper doc. + permission_level: Permission level for the invitee. + SearchError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of SearchError + type: string + enum: + - path + - other + description: | + path: None + other: None + AddPropertiesError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of AddPropertiesError + type: string + enum: + - template_not_found + - restricted_content + - other + - path + - unsupported_folder + - property_field_too_large + - does_not_fit_template + - property_group_already_exists + template_not_found: + type: string + description: Template does not exist for the given identifier. + description: > + template_not_found: Template does not exist for the given identifier. + + restricted_content: You do not have permission to modify this template. + + other: None + + path: None + + unsupported_folder: This folder cannot be tagged. Tagging folders is not + supported for team-owned templates. + + property_field_too_large: One or more of the supplied property field + values is too large. + + does_not_fit_template: One or more of the supplied property fields does + not conform to the template specifications. + + property_group_already_exists: A property group associated with this + template and file already exists. + DeleteArg: + type: object + properties: + path: + type: string + description: Path in the user's Dropbox to delete. + parent_rev: + type: string + description: >- + Perform delete if given "rev" matches the existing file's latest + "rev". This field does not support deleting a folder. + description: > + path: Path in the user's Dropbox to delete. + + parent_rev: Perform delete if given "rev" matches the existing file's + latest "rev". This field does not support deleting a folder. + SharedLinkMetadata: + type: object + properties: + name: + type: string + description: >- + The linked file name (including extension). This never contains a + slash. + url: + type: string + description: URL of the shared link. + expires: + type: string + description: Expiration time, if set. By default the link won't expire. + path_lower: + type: string + description: >- + The lowercased full path in the user's Dropbox. This always starts + with a slash. This field will only be present only if the linked + file is in the authenticated user's dropbox. + content_owner_team_info: + $ref: '#/components/schemas/Team' + link_permissions: + $ref: '#/components/schemas/LinkPermissions' + team_member_info: + $ref: '#/components/schemas/TeamMemberInfo' + id: + type: string + description: A unique identifier for the linked file. + description: > + The metadata of a shared link. + + url: URL of the shared link. + + name: The linked file name (including extension). This never contains a + slash. + + link_permissions: The link's access permissions. + + id: A unique identifier for the linked file. + + expires: Expiration time, if set. By default the link won't expire. + + path_lower: The lowercased full path in the user's Dropbox. This always + starts with a slash. This field will only be present only if the linked + file is in the authenticated user's dropbox. + + team_member_info: The team membership information of the link's owner. + This field will only be present if the link's owner is a team member. + + content_owner_team_info: The team information of the content's owner. + This field will only be present if the content's owner is a team member + and the content's owner team is different from the link's owner team. + AddMemberSelectorError: + type: object + properties: + invalid_dropbox_id: + type: string + description: The value is the ID that could not be identified. + invalid_email: + type: string + description: The value is the e-email address that is malformed. + .tag: + title: Choice of AddMemberSelectorError + type: string + enum: + - automatic_group + - invalid_dropbox_id + - invalid_email + - unverified_dropbox_id + - group_deleted + - group_not_on_team + - other + unverified_dropbox_id: + type: string + description: >- + The value is the ID of the Dropbox user with an unverified e-mail + address. Invite unverified users by e-mail address instead of by + their Dropbox ID. + description: > + automatic_group: Automatically created groups can only be added to team + folders. + + invalid_dropbox_id: The value is the ID that could not be identified. + + invalid_email: The value is the e-email address that is malformed. + + unverified_dropbox_id: The value is the ID of the Dropbox user with an + unverified e-mail address. Invite unverified users by e-mail address + instead of by their Dropbox ID. + + group_deleted: At least one of the specified groups in + :field:`AddFolderMemberArg.members` is deleted. + + group_not_on_team: Sharing to a group that is not on the current user's + team. + + other: None + MemberAction: + type: object + properties: + .tag: + title: Choice of MemberAction + type: string + enum: + - leave_a_copy + - make_editor + - make_owner + - make_viewer + - make_viewer_no_comment + - remove + - other + description: > + Actions that may be taken on members of a shared folder. + + leave_a_copy: Allow the member to keep a copy of the folder when + removing. + + make_editor: Make the member an editor of the folder. + + make_owner: Make the member an owner of the folder. + + make_viewer: Make the member a viewer of the folder. + + make_viewer_no_comment: Make the member a viewer of the folder without + commenting permissions. + + remove: Remove the member from the folder. + + other: None + ListRevisionsResult: + type: object + properties: + is_deleted: + type: boolean + description: >- + If the file identified by the latest revision in the response is + either deleted or moved. + server_deleted: + type: string + description: The time of deletion if the file was deleted. + entries: + type: array + description: >- + The revisions for the file. Only revisions that are not deleted will + show up here. + items: + $ref: '#/components/schemas/FileMetadata' + description: > + is_deleted: If the file identified by the latest revision in the + response is either deleted or moved. + + entries: The revisions for the file. Only revisions that are not deleted + will show up here. + + server_deleted: The time of deletion if the file was deleted. + RelocationError: + type: object + properties: + to: + $ref: '#/components/schemas/WriteError' + from_lookup: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of RelocationError + type: string + enum: + - from_lookup + - from_write + - to + - cant_copy_shared_folder + - cant_nest_shared_folder + - cant_move_folder_into_itself + - too_many_files + - duplicated_or_nested_paths + - cant_transfer_ownership + - insufficient_quota + - other + from_write: + $ref: '#/components/schemas/WriteError' + description: > + from_lookup: None + + from_write: None + + to: None + + cant_copy_shared_folder: Shared folders can't be copied. + + cant_nest_shared_folder: Your move operation would result in nested + shared folders. This is not allowed. + + cant_move_folder_into_itself: You cannot move a folder into itself. + + too_many_files: The operation would involve more than 10,000 files and + folders. + + duplicated_or_nested_paths: There are duplicated/nested paths among + :field:`RelocationArg.from_path` and :field:`RelocationArg.to_path`. + + cant_transfer_ownership: Your move operation would result in an + ownership transfer. You may reissue the request with the field + :field:`RelocationArg.allow_ownership_transfer` to true. + + insufficient_quota: The current user does not have enough space to move + or copy the files. + + other: None + LinkPassword: + type: object + properties: + .tag: + title: Choice of LinkPassword + type: string + enum: + - remove_password + - set_password + - other + set_password: + type: string + description: Set a new password or change an existing password. + description: | + remove_password: Remove the currently set password for the link. + set_password: Set a new password or change an existing password. + other: None + UnmountFolderError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharedFolderAccessError' + .tag: + title: Choice of UnmountFolderError + type: string + enum: + - access_error + - no_permission + - not_unmountable + - other + description: > + access_error: None + + no_permission: The current user does not have permission to perform this + action. + + not_unmountable: The shared folder can't be unmounted. One example where + this can occur is when the shared folder's parent folder is also a + shared folder that resides in the current user's Dropbox. + + other: None + GroupType: + type: object + properties: + .tag: + title: Choice of GroupType + type: string + enum: + - team + - user_managed + - other + description: > + The group type determines how a group is created and managed. + + team: A group to which team members are automatically added. Applicable + to :link:`team folders https://www.dropbox.com/help/986` only. + + user_managed: A group is created and managed by a user. + + other: None + ThumbnailArg: + type: object + properties: + path: + type: string + description: The path to the image file you want to thumbnail. + size: + $ref: '#/components/schemas/ThumbnailSize' + mode: + $ref: '#/components/schemas/ThumbnailMode' + format: + $ref: '#/components/schemas/ThumbnailFormat' + description: > + path: The path to the image file you want to thumbnail. + + format: The format for the thumbnail image, jpeg (default) or png. For + images that are photos, jpeg should be preferred, while png is better + for screenshots and digital arts. + + size: The size for the thumbnail image. + + mode: How to resize and crop the image to achieve the desired size. + ListSharedLinksArg: + type: object + properties: + cursor: + type: string + description: The cursor returned by your last call to :route:`list_shared_links`. + path: + type: string + description: See :route:`list_shared_links` description. + direct_only: + type: boolean + description: See :route:`list_shared_links` description. + description: > + path: See :route:`list_shared_links` description. + + cursor: The cursor returned by your last call to + :route:`list_shared_links`. + + direct_only: See :route:`list_shared_links` description. + ListFileMembersError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharingFileAccessError' + .tag: + title: Choice of ListFileMembersError + type: string + enum: + - user_error + - access_error + - other + user_error: + $ref: '#/components/schemas/SharingUserError' + description: | + Error for :route:`list_file_members`. + user_error: None + access_error: None + other: None + UnshareFileArg: + type: object + properties: + file: + type: string + description: The file to unshare. + description: | + Arguments for :route:`unshare_file`. + file: The file to unshare. + PaperDocCreateError: + type: object + properties: + .tag: + title: Choice of PaperDocCreateError + type: string + enum: + - insufficient_permissions + - other + - content_malformed + - folder_not_found + - doc_length_exceeded + - image_size_exceeded + description: > + insufficient_permissions: Your account does not have permissions to + perform this action. + + other: None + + content_malformed: The provided content was malformed and cannot be + imported to Paper. + + folder_not_found: The specified Paper folder is cannot be found. + + doc_length_exceeded: The newly created Paper doc would be too large. + Please split the content into multiple docs. + + image_size_exceeded: The imported document contains an image that is too + large. The current limit is 1MB. Note: This only applies to HTML with + data uri. + PropertiesSearchArg: + type: object + properties: + template_filter: + $ref: '#/components/schemas/TemplateFilter' + queries: + type: array + description: Queries to search. + items: + $ref: '#/components/schemas/PropertiesSearchQuery' + description: > + queries: Queries to search. + + template_filter: Filter results to contain only properties associated + with these template IDs. + FileMetadata: + type: object + properties: + parent_shared_folder_id: + type: string + description: >- + Please use :field:`FileSharingInfo.parent_shared_folder_id` or + :field:`FolderSharingInfo.parent_shared_folder_id` instead. + name: + type: string + description: >- + The last component of the path (including extension). This never + contains a slash. + property_groups: + type: array + description: >- + Additional information if the file has custom properties with the + property template specified. + items: + $ref: '#/components/schemas/PropertyGroup' + rev: + type: string + description: >- + A unique identifier for the current revision of a file. This field + is the same rev as elsewhere in the API and can be used to detect + changes and avoid conflicts. + client_modified: + type: string + description: >- + For files, this is the modification time set by the desktop client + when the file was added to Dropbox. Since this time is not verified + (the Dropbox server stores whatever the desktop client sends up), + this should only be used for display purposes (such as sorting) and + not, for example, to determine if a file has changed or not. + symlink_info: + $ref: '#/components/schemas/SymlinkInfo' + path_display: + type: string + description: >- + The cased path to be used for display purposes only. In rare + instances the casing will not correctly match the user's filesystem, + but this behavior will match the path provided in the Core API v1, + and at least the last path component will have the correct casing. + Changes to only the casing of paths won't be returned by + :route:`list_folder/continue`. This field will be null if the file + or folder is not mounted. + has_explicit_shared_members: + type: boolean + description: >- + This flag will only be present if + include_has_explicit_shared_members is true in :route:`list_folder` + or :route:`get_metadata`. If this flag is present, it will be true + if this file has any explicit shared members. This is different + from sharing_info in that this could be true in the case where a + file has explicit members but is not contained within a shared + folder. + path_lower: + type: string + description: >- + The lowercased full path in the user's Dropbox. This always starts + with a slash. This field will be null if the file or folder is not + mounted. + server_modified: + type: string + description: The last time the file was modified on Dropbox. + sharing_info: + $ref: '#/components/schemas/FileSharingInfo' + media_info: + $ref: '#/components/schemas/MediaInfo' + content_hash: + type: string + description: >- + A hash of the file content. This field can be used to verify data + integrity. For more information see our :link:`Content hash + /developers/reference/content-hash` page. + id: + type: string + description: A unique identifier for the file. + size: + type: number + description: The file size in bytes. + description: > + name: The last component of the path (including extension). This never + contains a slash. + + id: A unique identifier for the file. + + client_modified: For files, this is the modification time set by the + desktop client when the file was added to Dropbox. Since this time is + not verified (the Dropbox server stores whatever the desktop client + sends up), this should only be used for display purposes (such as + sorting) and not, for example, to determine if a file has changed or + not. + + server_modified: The last time the file was modified on Dropbox. + + rev: A unique identifier for the current revision of a file. This field + is the same rev as elsewhere in the API and can be used to detect + changes and avoid conflicts. + + size: The file size in bytes. + + path_lower: The lowercased full path in the user's Dropbox. This always + starts with a slash. This field will be null if the file or folder is + not mounted. + + path_display: The cased path to be used for display purposes only. In + rare instances the casing will not correctly match the user's + filesystem, but this behavior will match the path provided in the Core + API v1, and at least the last path component will have the correct + casing. Changes to only the casing of paths won't be returned by + :route:`list_folder/continue`. This field will be null if the file or + folder is not mounted. + + parent_shared_folder_id: Please use + :field:`FileSharingInfo.parent_shared_folder_id` or + :field:`FolderSharingInfo.parent_shared_folder_id` instead. + + media_info: Additional information if the file is a photo or video. + + symlink_info: Set if this file is a symlink. + + sharing_info: Set if this file is contained in a shared folder. + + property_groups: Additional information if the file has custom + properties with the property template specified. + + has_explicit_shared_members: This flag will only be present if + include_has_explicit_shared_members is true in :route:`list_folder` or + :route:`get_metadata`. If this flag is present, it will be true if this + file has any explicit shared members. This is different from + sharing_info in that this could be true in the case where a file has + explicit members but is not contained within a shared folder. + + content_hash: A hash of the file content. This field can be used to + verify data integrity. For more information see our :link:`Content hash + /developers/reference/content-hash` page. + UploadSessionStartArg: + type: object + properties: + close: + type: boolean + description: >- + If true, the current session will be closed, at which point you + won't be able to call :route:`upload_session/append_v2` anymore with + the current session. + description: > + close: If true, the current session will be closed, at which point you + won't be able to call :route:`upload_session/append_v2` anymore with the + current session. + SearchArg: + type: object + properties: + start: + type: number + description: The starting index within the search results (used for paging). + max_results: + type: number + description: The maximum number of search results to return. + path: + type: string + description: >- + The path in the user's Dropbox to search. Should probably be a + folder. + mode: + $ref: '#/components/schemas/SearchMode' + query: + type: string + description: >- + The string to search for. The search string is split on spaces into + multiple tokens. For file name searching, the last token is used for + prefix matching (i.e. "bat c" matches "bat cave" but not "batman + car"). + description: > + path: The path in the user's Dropbox to search. Should probably be a + folder. + + query: The string to search for. The search string is split on spaces + into multiple tokens. For file name searching, the last token is used + for prefix matching (i.e. "bat c" matches "bat cave" but not "batman + car"). + + start: The starting index within the search results (used for paging). + + max_results: The maximum number of search results to return. + + mode: The search mode (filename, filename_and_content, or + deleted_filename). Note that searching file content is only available + for Dropbox Business accounts. + RelinquishFolderMembershipError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharedFolderAccessError' + .tag: + title: Choice of RelinquishFolderMembershipError + type: string + enum: + - access_error + - folder_owner + - mounted + - group_access + - team_folder + - no_permission + - no_explicit_access + - other + description: > + access_error: None + + folder_owner: The current user is the owner of the shared folder. Owners + cannot relinquish membership to their own folders. Try unsharing or + transferring ownership first. + + mounted: The shared folder is currently mounted. Unmount the shared + folder before relinquishing membership. + + group_access: The current user has access to the shared folder via a + group. You can't relinquish membership to folders shared via groups. + + team_folder: This action cannot be performed on a team shared folder. + + no_permission: The current user does not have permission to perform this + action. + + no_explicit_access: The current user only has inherited access to the + shared folder. You can't relinquish inherited membership to folders. + + other: None + ListFolderArg: + type: object + properties: + shared_link: + $ref: '#/components/schemas/SharedLink' + include_property_groups: + $ref: '#/components/schemas/TemplateFilterBase' + recursive: + type: boolean + description: >- + If true, the list folder operation will be applied recursively to + all subfolders and the response will contain contents of all + subfolders. + include_has_explicit_shared_members: + type: boolean + description: >- + If true, the results will include a flag for each file indicating + whether or not that file has any explicit members. + include_deleted: + type: boolean + description: >- + If true, the results will include entries for files and folders that + used to exist but were deleted. + limit: + type: number + description: >- + The maximum number of results to return per request. Note: This is + an approximate number and there can be slightly more entries + returned in some cases. + include_media_info: + type: boolean + description: >- + If true, :field:`FileMetadata.media_info` is set for photo and + video. + include_mounted_folders: + type: boolean + description: >- + If true, the results will include entries under mounted folders + which includes app folder, shared folder and team folder. + path: + type: string + description: A unique identifier for the file. + description: > + path: A unique identifier for the file. + + recursive: If true, the list folder operation will be applied + recursively to all subfolders and the response will contain contents of + all subfolders. + + include_media_info: If true, :field:`FileMetadata.media_info` is set for + photo and video. + + include_deleted: If true, the results will include entries for files and + folders that used to exist but were deleted. + + include_has_explicit_shared_members: If true, the results will include a + flag for each file indicating whether or not that file has any explicit + members. + + include_mounted_folders: If true, the results will include entries under + mounted folders which includes app folder, shared folder and team + folder. + + limit: The maximum number of results to return per request. Note: This + is an approximate number and there can be slightly more entries returned + in some cases. + + shared_link: A shared link to list the contents of. If the link is + password-protected, the password must be provided. If this field is + present, :field:`ListFolderArg.path` will be relative to root of the + shared link. Only non-recursive mode is supported for shared link. + + include_property_groups: If set to a valid list of template IDs, + :field:`FileMetadata.property_groups` is set if there exists property + data associated with the file and each of the listed templates. + AddPaperDocUser: + type: object + properties: + doc_id: + type: string + description: The Paper doc ID. + quiet: + type: boolean + description: >- + Clients should set this to true if no email message shall be sent to + added users. + members: + type: array + description: >- + User which should be added to the Paper doc. Specify only email + address or Dropbox account ID. + items: + $ref: '#/components/schemas/AddMember' + custom_message: + type: string + description: >- + A personal message that will be emailed to each successfully added + member. + description: > + doc_id: The Paper doc ID. + + members: User which should be added to the Paper doc. Specify only email + address or Dropbox account ID. + + custom_message: A personal message that will be emailed to each + successfully added member. + + quiet: Clients should set this to true if no email message shall be sent + to added users. + AddMember: + type: object + properties: + member: + $ref: '#/components/schemas/MemberSelector' + permission_level: + $ref: '#/components/schemas/PaperDocPermissionLevel' + description: > + member: User which should be added to the Paper doc. Specify only email + address or Dropbox account ID. + + permission_level: Permission for the user. + GracePeriod: + type: object + properties: + .tag: + title: Choice of GracePeriod + type: string + enum: + - one_day + - two_days + - seven_days + - thirty_days + - always + - other + description: | + one_day: None + two_days: None + seven_days: None + thirty_days: None + always: None + other: None + UserInfoWithPermissionLevel: + type: object + properties: + permission_level: + $ref: '#/components/schemas/PaperDocPermissionLevel' + user: + $ref: '#/components/schemas/UserInfo' + description: | + user: User shared on the Paper doc. + permission_level: Permission level for the user. + PollError: + type: object + properties: + .tag: + title: Choice of PollError + type: string + enum: + - invalid_async_job_id + - internal_error + - other + description: > + Error returned by methods for polling the status of asynchronous job. + + invalid_async_job_id: The job ID is invalid. + + internal_error: Something went wrong with the job on Dropbox's end. + You'll need to verify that the action you were taking succeeded, and if + not, try again. This should happen very rarely. + + other: None + DeleteBatchArg: + type: object + properties: + entries: + type: array + items: + $ref: '#/components/schemas/DeleteArg' + description: | + entries: None + RelinquishFileMembershipError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharingFileAccessError' + .tag: + title: Choice of RelinquishFileMembershipError + type: string + enum: + - access_error + - group_access + - no_permission + - other + description: > + access_error: None + + group_access: The current user has access to the shared file via a + group. You can't relinquish membership to a file shared via groups. + + no_permission: The current user does not have permission to perform this + action. + + other: None + ListFileMembersBatchArg: + type: object + properties: + files: + type: array + description: Files for which to return members. + items: + type: string + limit: + type: number + description: >- + Number of members to return max per query. Defaults to 10 if no + limit is specified. + description: > + Arguments for :route:`list_file_members/batch`. + + files: Files for which to return members. + + limit: Number of members to return max per query. Defaults to 10 if no + limit is specified. + GetThumbnailBatchResult: + type: object + properties: + entries: + type: array + description: List of files and their thumbnails. + items: + $ref: '#/components/schemas/GetThumbnailBatchResultEntry' + description: | + entries: List of files and their thumbnails. + CreateFolderArg: + type: object + properties: + path: + type: string + description: Path in the user's Dropbox to create. + autorename: + type: boolean + description: >- + If there's a conflict, have the Dropbox server try to autorename the + folder to avoid the conflict. + description: > + path: Path in the user's Dropbox to create. + + autorename: If there's a conflict, have the Dropbox server try to + autorename the folder to avoid the conflict. + PlatformType: + type: object + properties: + .tag: + title: Choice of PlatformType + type: string + enum: + - web + - mobile + - desktop + - unknown + - other + description: | + Possible platforms on which a user may view content. + web: The content was viewed on the web. + mobile: The content was viewed on a mobile client. + desktop: The content was viewed on a desktop client. + unknown: The content was viewed on an unknown platform. + other: None + SharedContentLinkMetadata: + type: object + properties: + current_audience: + $ref: '#/components/schemas/LinkAudience' + url: + type: string + description: The URL of the link. + password_protected: + type: boolean + description: Whether the link is protected by a password. + audience_exceptions: + $ref: '#/components/schemas/AudienceExceptions' + expiry: + type: string + description: >- + Whether the link has an expiry set on it. A link with an expiry will + have its audience changed to members when the expiry is reached. + access_level: + $ref: '#/components/schemas/AccessLevel' + audience_restricting_shared_folder: + $ref: '#/components/schemas/AudienceRestrictingSharedFolder' + link_permissions: + type: array + description: A list of permissions for actions you can perform on the link. + items: + $ref: '#/components/schemas/LinkPermission' + audience_options: + type: array + description: >- + The audience options that are available for the content. Some + audience options may be unavailable. For example, team_only may be + unavailable if the content is not owned by a user on a team. The + 'default' audience option is always available if the user can modify + link settings. + items: + $ref: '#/components/schemas/LinkAudience' + description: > + Metadata of a shared link for a file or folder. + + audience_options: The audience options that are available for the + content. Some audience options may be unavailable. For example, + team_only may be unavailable if the content is not owned by a user on a + team. The 'default' audience option is always available if the user can + modify link settings. + + current_audience: The current audience of the link. + + link_permissions: A list of permissions for actions you can perform on + the link. + + password_protected: Whether the link is protected by a password. + + url: The URL of the link. + + access_level: The access level on the link for this file. + + audience_restricting_shared_folder: The shared folder that prevents the + link audience for this link from being more restrictive. + + expiry: Whether the link has an expiry set on it. A link with an expiry + will have its audience changed to members when the expiry is reached. + + audience_exceptions: The content inside this folder with link audience + different than this folder's. This is only returned when an endpoint + that returns metadata for a single shared folder is called, e.g. + /get_folder_metadata. + InviteeMembershipInfo: + type: object + properties: + invitee: + $ref: '#/components/schemas/InviteeInfo' + access_type: + $ref: '#/components/schemas/AccessLevel' + user: + $ref: '#/components/schemas/UserInfo' + is_inherited: + type: boolean + description: True if the member has access from a parent folder. + initials: + type: string + description: Never set. + permissions: + type: array + description: >- + The permissions that requesting user has on this member. The set of + permissions corresponds to the MemberActions in the request. + items: + $ref: '#/components/schemas/MemberPermission' + description: > + Information about an invited member of a shared content. + + access_type: The access type for this member. + + invitee: Recipient of the invitation. + + permissions: The permissions that requesting user has on this member. + The set of permissions corresponds to the MemberActions in the request. + + initials: Never set. + + is_inherited: True if the member has access from a parent folder. + + user: The user this invitation is tied to, if available. + GetAccountError: + type: object + properties: + .tag: + title: Choice of GetAccountError + type: string + enum: + - no_account + - other + description: > + no_account: The specified :field:`GetAccountArg.account_id` does not + exist. + + other: None + JobStatus: + type: object + properties: + failed: + $ref: '#/components/schemas/JobError' + .tag: + title: Choice of JobStatus + type: string + enum: + - in_progress + - complete + - failed + description: | + in_progress: The asynchronous job is still in progress. + complete: The asynchronous job has finished. + failed: The asynchronous job returned an error. + WriteConflictError: + type: object + properties: + .tag: + title: Choice of WriteConflictError + type: string + enum: + - file + - folder + - file_ancestor + - other + description: > + file: There's a file in the way. + + folder: There's a folder in the way. + + file_ancestor: There's a file at an ancestor path, so we couldn't create + the required parent folders. + + other: None + LinkPermission: + type: object + properties: + action: + $ref: '#/components/schemas/LinkAction' + reason: + $ref: '#/components/schemas/PermissionDeniedReason' + allow: + type: boolean + description: | + Permissions for actions that can be performed on a link. + action: None + allow: None + reason: None + Team: + type: object + properties: + id: + type: string + description: The team's unique ID. + name: + type: string + description: The name of the team. + description: | + Information about a team. + id: The team's unique ID. + name: The name of the team. + SaveUrlResult: + type: object + properties: + .tag: + title: Choice of SaveUrlResult + type: string + enum: + - async_job_id + - complete + async_job_id: + type: string + description: >- + This response indicates that the processing is asynchronous. The + string is an id that can be used to obtain the status of the + asynchronous job. + complete: + $ref: '#/components/schemas/FileMetadata' + description: > + async_job_id: This response indicates that the processing is + asynchronous. The string is an id that can be used to obtain the status + of the asynchronous job. + + complete: Metadata of the file where the URL is saved to. + SetAccessInheritanceArg: + type: object + properties: + access_inheritance: + $ref: '#/components/schemas/AccessInheritance' + shared_folder_id: + type: string + description: The ID for the shared folder. + description: | + shared_folder_id: The ID for the shared folder. + access_inheritance: The access inheritance settings for the folder. + ListFolderLongpollError: + type: object + properties: + .tag: + title: Choice of ListFolderLongpollError + type: string + enum: + - reset + - other + description: > + reset: Indicates that the cursor has been invalidated. Call + :route:`list_folder` to obtain a new cursor. + + other: None + ListFilesResult: + type: object + properties: + cursor: + type: string + description: Cursor used to obtain additional shared files. + entries: + type: array + description: Information about the files shared with current user. + items: + $ref: '#/components/schemas/SharedFileMetadata' + description: | + Success results for :route:`list_received_files`. + entries: Information about the files shared with current user. + cursor: Cursor used to obtain additional shared files. + CreateSharedLinkWithSettingsArg: + type: object + properties: + path: + type: string + description: The path to be shared by the shared link. + settings: + $ref: '#/components/schemas/SharedLinkSettings' + description: | + path: The path to be shared by the shared link. + settings: The requested settings for the newly created shared link. + ModifyTemplateError: + type: object + properties: + .tag: + title: Choice of ModifyTemplateError + type: string + enum: + - template_not_found + - restricted_content + - other + - conflicting_property_names + - too_many_properties + - too_many_templates + - template_attribute_too_large + template_not_found: + type: string + description: Template does not exist for the given identifier. + description: > + template_not_found: Template does not exist for the given identifier. + + restricted_content: You do not have permission to modify this template. + + other: None + + conflicting_property_names: A property field key with that name already + exists in the template. + + too_many_properties: There are too many properties in the changed + template. The maximum number of properties per template is 32. + + too_many_templates: There are too many templates for the team. + + template_attribute_too_large: The template name, description or one or + more of the property field keys is too large. + GetFileMetadataBatchArg: + type: object + properties: + files: + type: array + description: The files to query. + items: + type: string + actions: + type: array + description: >- + A list of `FileAction`s corresponding to `FilePermission`s that + should appear in the response's + :field:`SharedFileMetadata.permissions` field describing the actions + the authenticated user can perform on the file. + items: + $ref: '#/components/schemas/FileAction' + description: > + Arguments of :route:`get_file_metadata/batch`. + + files: The files to query. + + actions: A list of `FileAction`s corresponding to `FilePermission`s that + should appear in the response's :field:`SharedFileMetadata.permissions` + field describing the actions the authenticated user can perform on the + file. + PropertiesSearchContinueArg: + type: object + properties: + cursor: + type: string + description: >- + The cursor returned by your last call to :route:`properties/search` + or :route:`properties/search/continue`. + description: > + cursor: The cursor returned by your last call to + :route:`properties/search` or :route:`properties/search/continue`. + GetFileMetadataArg: + type: object + properties: + actions: + type: array + description: >- + A list of `FileAction`s corresponding to `FilePermission`s that + should appear in the response's + :field:`SharedFileMetadata.permissions` field describing the actions + the authenticated user can perform on the file. + items: + $ref: '#/components/schemas/FileAction' + file: + type: string + description: The file to query. + description: > + Arguments of :route:`get_file_metadata`. + + file: The file to query. + + actions: A list of `FileAction`s corresponding to `FilePermission`s that + should appear in the response's :field:`SharedFileMetadata.permissions` + field describing the actions the authenticated user can perform on the + file. + AddFolderMemberArg: + type: object + properties: + shared_folder_id: + type: string + description: The ID for the shared folder. + quiet: + type: boolean + description: >- + Whether added members should be notified via email and device + notifications of their invite. + members: + type: array + description: >- + The intended list of members to add. Added members will receive + invites to join the shared folder. + items: + $ref: '#/components/schemas/AddMember' + custom_message: + type: string + description: Optional message to display to added members in their invitation. + description: > + shared_folder_id: The ID for the shared folder. + + members: The intended list of members to add. Added members will + receive invites to join the shared folder. + + quiet: Whether added members should be notified via email and device + notifications of their invite. + + custom_message: Optional message to display to added members in their + invitation. + UpdateFileMemberArgs: + type: object + properties: + member: + $ref: '#/components/schemas/MemberSelector' + access_level: + $ref: '#/components/schemas/AccessLevel' + file: + type: string + description: File for which we are changing a member's access. + description: | + Arguments for :route:`update_file_member`. + file: File for which we are changing a member's access. + member: The member whose access we are changing. + access_level: The new access level for the member. + SpaceUsage: + type: object + properties: + allocation: + $ref: '#/components/schemas/SpaceAllocation' + used: + type: number + description: The user's total space usage (bytes). + description: | + Information about a user's space usage and quota. + used: The user's total space usage (bytes). + allocation: The user's space allocation. + CreateFolderBatchResultEntry: + type: object + properties: + failure: + $ref: '#/components/schemas/CreateFolderEntryError' + .tag: + title: Choice of CreateFolderBatchResultEntry + type: string + enum: + - success + - failure + success: + $ref: '#/components/schemas/CreateFolderEntryResult' + description: | + success: None + failure: None + UpdateFolderMemberError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharedFolderAccessError' + .tag: + title: Choice of UpdateFolderMemberError + type: string + enum: + - access_error + - member_error + - no_explicit_access + - insufficient_plan + - no_permission + - other + no_explicit_access: + $ref: '#/components/schemas/AddFolderMemberError' + member_error: + $ref: '#/components/schemas/SharedFolderMemberError' + description: > + access_error: None + + member_error: None + + no_explicit_access: If updating the access type required the member to + be added to the shared folder and there was an error when adding the + member. + + insufficient_plan: The current user's account doesn't support this + action. An example of this is when downgrading a member from editor to + viewer. This action can only be performed by users that have upgraded to + a Pro or Business plan. + + no_permission: The current user does not have permission to perform this + action. + + other: None + PaperDocExportResult: + type: object + properties: + owner: + type: string + description: The Paper doc owner's email address. + revision: + type: number + description: The Paper doc revision. Simply an ever increasing number. + mime_type: + type: string + description: >- + MIME type of the export. This corresponds to :type:`ExportFormat` + specified in the request. + title: + type: string + description: The Paper doc title. + description: > + owner: The Paper doc owner's email address. + + title: The Paper doc title. + + revision: The Paper doc revision. Simply an ever increasing number. + + mime_type: MIME type of the export. This corresponds to + :type:`ExportFormat` specified in the request. + DeleteBatchError: + type: object + properties: + .tag: + title: Choice of DeleteBatchError + type: string + enum: + - too_many_write_operations + - other + description: > + too_many_write_operations: Use + :field:`DeleteError.too_many_write_operations`. :route:`delete_batch` + now provides smaller granularity about which entry has failed because of + this. + + other: None + UserFileMembershipInfo: + type: object + properties: + access_type: + $ref: '#/components/schemas/AccessLevel' + platform_type: + $ref: '#/components/schemas/PlatformType' + user: + $ref: '#/components/schemas/UserInfo' + time_last_seen: + type: string + description: >- + The UTC timestamp of when the user has last seen the content, if + they have. + is_inherited: + type: boolean + description: True if the member has access from a parent folder. + permissions: + type: array + description: >- + The permissions that requesting user has on this member. The set of + permissions corresponds to the MemberActions in the request. + items: + $ref: '#/components/schemas/MemberPermission' + initials: + type: string + description: Never set. + description: > + The information about a user member of the shared content with an + appended last seen timestamp. + + access_type: The access type for this member. + + user: The account information for the membership user. + + permissions: The permissions that requesting user has on this member. + The set of permissions corresponds to the MemberActions in the request. + + initials: Never set. + + is_inherited: True if the member has access from a parent folder. + + time_last_seen: The UTC timestamp of when the user has last seen the + content, if they have. + + platform_type: The platform on which the user has last seen the content, + or unknown. + MemberAccessLevelResult: + type: object + properties: + access_level: + $ref: '#/components/schemas/AccessLevel' + access_details: + type: array + description: >- + The parent folders that a member has access to. The field is present + if the user has access to the first parent folder where the member + gains access. + items: + $ref: '#/components/schemas/ParentFolderAccessInfo' + warning: + type: string + description: >- + A localized string with additional information about why the user + has this access level to the content. + description: > + Contains information about a member's access level to content after an + operation. + + access_level: The member still has this level of access to the content + through a parent folder. + + warning: A localized string with additional information about why the + user has this access level to the content. + + access_details: The parent folders that a member has access to. The + field is present if the user has access to the first parent folder where + the member gains access. + JobError: + type: object + properties: + remove_folder_member_error: + $ref: '#/components/schemas/RemoveFolderMemberError' + unshare_folder_error: + $ref: '#/components/schemas/UnshareFolderError' + .tag: + title: Choice of JobError + type: string + enum: + - unshare_folder_error + - remove_folder_member_error + - relinquish_folder_membership_error + - other + relinquish_folder_membership_error: + $ref: '#/components/schemas/RelinquishFolderMembershipError' + description: > + Error occurred while performing an asynchronous job from + :route:`unshare_folder` or :route:`remove_folder_member`. + + unshare_folder_error: Error occurred while performing + :route:`unshare_folder` action. + + remove_folder_member_error: Error occurred while performing + :route:`remove_folder_member` action. + + relinquish_folder_membership_error: Error occurred while performing + :route:`relinquish_folder_membership` action. + + other: None + PreviewError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of PreviewError + type: string + enum: + - path + - in_progress + - unsupported_extension + - unsupported_content + description: > + path: An error occurs when downloading metadata for the file. + + in_progress: This preview generation is still in progress and the file + is not ready for preview yet. + + unsupported_extension: The file extension is not supported preview + generation. + + unsupported_content: The file content is not supported for preview + generation. + CreateFileRequestError: + type: object + properties: + .tag: + title: Choice of CreateFileRequestError + type: string + enum: + - disabled_for_team + - other + - not_found + - not_a_folder + - app_lacks_access + - no_permission + - email_unverified + - validation_error + - invalid_location + - rate_limit + description: > + There was an error creating the file request. + + disabled_for_team: This user's Dropbox Business team doesn't allow file + requests. + + other: None + + not_found: This file request ID was not found. + + not_a_folder: The specified path is not a folder. + + app_lacks_access: This file request is not accessible to this app. Apps + with the app folder permission can only access file requests in their + app folder. + + no_permission: This user doesn't have permission to access or modify + this file request. + + email_unverified: This user's email address is not verified. File + requests are only available on accounts with a verified email address. + Users can verify their email address :link:`here + https://www.dropbox.com/help/317`. + + validation_error: There was an error validating the request. For + example, the title was invalid, or there were disallowed characters in + the destination path. + + invalid_location: File requests are not available on the specified + folder. + + rate_limit: The user has reached the rate limit for creating file + requests. The limit is currently 100 file requests per day. + SharingTeamPolicyType: + type: object + properties: + .tag: + title: Choice of SharingTeamPolicyType + type: string + enum: + - people_with_link_can_edit + - people_with_link_can_view_and_comment + - invite_only + description: > + The sharing policy type of the Paper doc. + + people_with_link_can_edit: Users who have a link to this doc can edit + it. + + people_with_link_can_view_and_comment: Users who have a link to this doc + can view and comment on it. + + invite_only: Users must be explicitly invited to this doc. + ThumbnailSize: + type: object + properties: + .tag: + title: Choice of ThumbnailSize + type: string + enum: + - w32h32 + - w64h64 + - w128h128 + - w256h256 + - w480h320 + - w640h480 + - w960h640 + - w1024h768 + - w2048h1536 + description: | + w32h32: 32 by 32 px. + w64h64: 64 by 64 px. + w128h128: 128 by 128 px. + w256h256: 256 by 256 px. + w480h320: 480 by 320 px. + w640h480: 640 by 480 px. + w960h640: 960 by 640 px. + w1024h768: 1024 by 768 px. + w2048h1536: 2048 by 1536 px. + UpdatePropertiesArg: + type: object + properties: + path: + type: string + description: A unique identifier for the file or folder. + update_property_groups: + type: array + description: The property groups "delta" updates to apply. + items: + $ref: '#/components/schemas/PropertyGroupUpdate' + description: | + path: A unique identifier for the file or folder. + update_property_groups: The property groups "delta" updates to apply. + GetThumbnailBatchArg: + type: object + properties: + entries: + type: array + description: List of files to get thumbnails. + items: + $ref: '#/components/schemas/ThumbnailArg' + description: | + Arguments for :route:`get_thumbnail_batch`. + entries: List of files to get thumbnails. + AddFileMemberError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharingFileAccessError' + .tag: + title: Choice of AddFileMemberError + type: string + enum: + - user_error + - access_error + - rate_limit + - invalid_comment + - other + user_error: + $ref: '#/components/schemas/SharingUserError' + description: > + Errors for :route:`add_file_member`. + + user_error: None + + access_error: None + + rate_limit: The user has reached the rate limit for invitations. + + invalid_comment: The custom message did not pass comment permissions + checks. + + other: None + RelocationBatchArg: + type: object + properties: + allow_ownership_transfer: + type: boolean + description: >- + Allow moves by owner even if it would result in an ownership + transfer for the content being moved. This does not apply to copies. + allow_shared_folder: + type: boolean + description: >- + If true, :route:`copy_batch` will copy contents in shared folder, + otherwise :field:`RelocationError.cant_copy_shared_folder` will be + returned if :field:`RelocationPath.from_path` contains shared + folder. This field is always true for :route:`move_batch`. + autorename: + type: boolean + description: >- + If there's a conflict with any file, have the Dropbox server try to + autorename that file to avoid the conflict. + entries: + type: array + description: >- + List of entries to be moved or copied. Each entry is + :type:`RelocationPath`. + items: + $ref: '#/components/schemas/RelocationPath' + description: > + entries: List of entries to be moved or copied. Each entry is + :type:`RelocationPath`. + + allow_shared_folder: If true, :route:`copy_batch` will copy contents in + shared folder, otherwise + :field:`RelocationError.cant_copy_shared_folder` will be returned if + :field:`RelocationPath.from_path` contains shared folder. This field is + always true for :route:`move_batch`. + + autorename: If there's a conflict with any file, have the Dropbox server + try to autorename that file to avoid the conflict. + + allow_ownership_transfer: Allow moves by owner even if it would result + in an ownership transfer for the content being moved. This does not + apply to copies. + CreateFolderBatchResult: + type: object + properties: + entries: + type: array + items: + $ref: '#/components/schemas/CreateFolderBatchResultEntry' + description: | + entries: None + GetSharedLinksArg: + type: object + properties: + path: + type: string + description: See :route:`get_shared_links` description. + description: | + path: See :route:`get_shared_links` description. + ListFolderMembersArgs: + type: object + properties: + shared_folder_id: + type: string + description: The ID for the shared folder. + limit: + type: number + description: >- + The maximum number of results that include members, groups and + invitees to return per request. + actions: + type: array + description: >- + This is a list indicating whether each returned member will include + a boolean value :field:`MemberPermission.allow` that describes + whether the current user can perform the MemberAction on the member. + items: + $ref: '#/components/schemas/MemberAction' + description: > + shared_folder_id: The ID for the shared folder. + + actions: This is a list indicating whether each returned member will + include a boolean value :field:`MemberPermission.allow` that describes + whether the current user can perform the MemberAction on the member. + + limit: The maximum number of results that include members, groups and + invitees to return per request. + SaveCopyReferenceArg: + type: object + properties: + path: + type: string + description: Path in the user's Dropbox that is the destination. + copy_reference: + type: string + description: A copy reference returned by :route:`copy_reference/get`. + description: > + copy_reference: A copy reference returned by + :route:`copy_reference/get`. + + path: Path in the user's Dropbox that is the destination. + PropertiesSearchContinueError: + type: object + properties: + .tag: + title: Choice of PropertiesSearchContinueError + type: string + enum: + - reset + - other + description: > + reset: Indicates that the cursor has been invalidated. Call + :route:`properties/search` to obtain a new cursor. + + other: None + RemoveFolderMemberArg: + type: object + properties: + member: + $ref: '#/components/schemas/MemberSelector' + shared_folder_id: + type: string + description: The ID for the shared folder. + leave_a_copy: + type: boolean + description: >- + If true, the removed user will keep their copy of the folder after + it's unshared, assuming it was mounted. Otherwise, it will be + removed from their Dropbox. Also, this must be set to false when + kicking a group. + description: > + shared_folder_id: The ID for the shared folder. + + member: The member to remove from the folder. + + leave_a_copy: If true, the removed user will keep their copy of the + folder after it's unshared, assuming it was mounted. Otherwise, it will + be removed from their Dropbox. Also, this must be set to false when + kicking a group. + TokenFromOAuth1Error: + type: object + properties: + .tag: + title: Choice of TokenFromOAuth1Error + type: string + enum: + - invalid_oauth1_token_info + - app_id_mismatch + - other + description: > + invalid_oauth1_token_info: Part or all of the OAuth 1.0 access token + info is invalid. + + app_id_mismatch: The authorized app does not match the app associated + with the supplied access token. + + other: None + PaperApiCursorError: + type: object + properties: + .tag: + title: Choice of PaperApiCursorError + type: string + enum: + - expired_cursor + - invalid_cursor + - wrong_user_in_cursor + - reset + - other + description: > + expired_cursor: The provided cursor is expired. + + invalid_cursor: The provided cursor is invalid. + + wrong_user_in_cursor: The provided cursor contains invalid user. + + reset: Indicates that the cursor has been invalidated. Call the + corresponding non-continue endpoint to obtain a new cursor. + + other: None + GetMetadataArgs: + type: object + properties: + shared_folder_id: + type: string + description: The ID for the shared folder. + actions: + type: array + description: >- + A list of `FolderAction`s corresponding to `FolderPermission`s that + should appear in the response's + :field:`SharedFolderMetadata.permissions` field describing the + actions the authenticated user can perform on the folder. + items: + $ref: '#/components/schemas/FolderAction' + description: > + shared_folder_id: The ID for the shared folder. + + actions: A list of `FolderAction`s corresponding to `FolderPermission`s + that should appear in the response's + :field:`SharedFolderMetadata.permissions` field describing the actions + the authenticated user can perform on the folder. + GetThumbnailBatchResultData: + type: object + properties: + thumbnail: + type: string + metadata: + $ref: '#/components/schemas/FileMetadata' + description: | + metadata: None + thumbnail: None + ListFolderGetLatestCursorResult: + type: object + properties: + cursor: + type: string + description: >- + Pass the cursor into :route:`list_folder/continue` to see what's + changed in the folder since your previous query. + description: > + cursor: Pass the cursor into :route:`list_folder/continue` to see what's + changed in the folder since your previous query. + PermissionDeniedReason: + type: object + properties: + insufficient_plan: + $ref: '#/components/schemas/InsufficientPlan' + .tag: + title: Choice of PermissionDeniedReason + type: string + enum: + - user_not_same_team_as_owner + - user_not_allowed_by_owner + - target_is_indirect_member + - target_is_owner + - target_is_self + - target_not_active + - folder_is_limited_team_folder + - owner_not_on_team + - permission_denied + - restricted_by_team + - user_account_type + - user_not_on_team + - folder_is_inside_shared_folder + - restricted_by_parent_folder + - insufficient_plan + - other + description: > + Possible reasons the user is denied a permission. + + user_not_same_team_as_owner: User is not on the same team as the folder + owner. + + user_not_allowed_by_owner: User is prohibited by the owner from taking + the action. + + target_is_indirect_member: Target is indirectly a member of the folder, + for example by being part of a group. + + target_is_owner: Target is the owner of the folder. + + target_is_self: Target is the user itself. + + target_not_active: Target is not an active member of the team. + + folder_is_limited_team_folder: Folder is team folder for a limited team. + + owner_not_on_team: The content owner needs to be on a Dropbox team to + perform this action. + + permission_denied: The user does not have permission to perform this + action on the link. + + restricted_by_team: The user's team policy prevents performing this + action on the link. + + user_account_type: The user's account type does not support this action. + + user_not_on_team: The user needs to be on a Dropbox team to perform this + action. + + folder_is_inside_shared_folder: Folder is inside of another shared + folder. + + restricted_by_parent_folder: Policy cannot be changed due to + restrictions from parent folder. + + insufficient_plan: None + + other: None + UploadSessionFinishBatchJobStatus: + type: object + properties: + .tag: + title: Choice of UploadSessionFinishBatchJobStatus + type: string + enum: + - in_progress + - complete + complete: + $ref: '#/components/schemas/UploadSessionFinishBatchResult' + description: | + in_progress: The asynchronous job is still in progress. + complete: The :route:`upload_session/finish_batch` has finished. + SharedLinkCreatePolicy: + type: object + properties: + .tag: + title: Choice of SharedLinkCreatePolicy + type: string + enum: + - default_public + - default_team_only + - team_only + - other + description: > + Policy governing the visibility of shared links. This policy can apply + to newly created shared links, or all shared links. + + default_public: By default, anyone can access newly created shared + links. No login will be required to access the shared links unless + overridden. + + default_team_only: By default, only members of the same team can access + newly created shared links. Login will be required to access the shared + links unless overridden. + + team_only: Only members of the same team can access all shared links. + Login will be required to access all shared links. + + other: None + ImportFormat: + type: object + properties: + .tag: + title: Choice of ImportFormat + type: string + enum: + - html + - markdown + - plain_text + - other + description: > + The import format of the incoming data. + + html: The provided data is interpreted as standard HTML. + + markdown: The provided data is interpreted as markdown. + + Note: The first line of the provided document will be used as the doc + title. + + plain_text: The provided data is interpreted as plain text. + + Note: The first line of the provided document will be used as the doc + title. + + other: None + MemberSelector: + type: object + properties: + .tag: + title: Choice of MemberSelector + type: string + enum: + - dropbox_id + - email + - other + dropbox_id: + type: string + description: Dropbox account, team member, or group ID of member. + email: + type: string + description: E-mail address of member. + description: | + Includes different ways to identify a member of a shared folder. + dropbox_id: Dropbox account, team member, or group ID of member. + email: E-mail address of member. + other: None + RelocationBatchLaunch: + type: object + properties: + .tag: + title: Choice of RelocationBatchLaunch + type: string + enum: + - async_job_id + - complete + - other + async_job_id: + type: string + description: >- + This response indicates that the processing is asynchronous. The + string is an id that can be used to obtain the status of the + asynchronous job. + complete: + $ref: '#/components/schemas/RelocationBatchResult' + description: > + Result returned by :route:`copy_batch` or :route:`move_batch` that may + either launch an asynchronous job or complete synchronously. + + async_job_id: This response indicates that the processing is + asynchronous. The string is an id that can be used to obtain the status + of the asynchronous job. + + complete: None + + other: None + GetFileMetadataBatchResult: + type: object + properties: + result: + $ref: '#/components/schemas/GetFileMetadataIndividualResult' + file: + type: string + description: >- + This is the input file identifier corresponding to one of + :field:`GetFileMetadataBatchArg.files`. + description: > + Per file results of :route:`get_file_metadata/batch`. + + file: This is the input file identifier corresponding to one of + :field:`GetFileMetadataBatchArg.files`. + + result: The result for this particular file. + ListFilesContinueArg: + type: object + properties: + cursor: + type: string + description: Cursor in :field:`ListFilesResult.cursor`. + description: | + Arguments for :route:`list_received_files/continue`. + cursor: Cursor in :field:`ListFilesResult.cursor`. + ListDocsCursorError: + type: object + properties: + cursor_error: + $ref: '#/components/schemas/PaperApiCursorError' + .tag: + title: Choice of ListDocsCursorError + type: string + enum: + - cursor_error + - other + description: | + cursor_error: None + other: None + FileMemberActionError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharingFileAccessError' + .tag: + title: Choice of FileMemberActionError + type: string + enum: + - invalid_member + - no_permission + - access_error + - no_explicit_access + - other + no_explicit_access: + $ref: '#/components/schemas/MemberAccessLevelResult' + description: > + invalid_member: Specified member was not found. + + no_permission: User does not have permission to perform this action on + this member. + + access_error: Specified file was invalid or user does not have access. + + no_explicit_access: The action cannot be completed because the target + member does not have explicit access to the file. The return value is + the access that the member has to the file from a parent folder. + + other: None + TemplateFilter: + type: object + properties: + filter_some: + type: array + description: >- + Only templates with an ID in the supplied list will be returned (a + subset of templates will be returned). + items: + type: string + .tag: + title: Choice of TemplateFilter + type: string + enum: + - filter_some + - other + - filter_none + description: > + filter_some: Only templates with an ID in the supplied list will be + returned (a subset of templates will be returned). + + other: None + + filter_none: No templates will be filtered from the result (all + templates will be returned). + SetAccessInheritanceError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharedFolderAccessError' + .tag: + title: Choice of SetAccessInheritanceError + type: string + enum: + - access_error + - no_permission + - other + description: > + access_error: Unable to access shared folder. + + no_permission: The current user does not have permission to perform this + action. + + other: None + ListFoldersContinueError: + type: object + properties: + .tag: + title: Choice of ListFoldersContinueError + type: string + enum: + - invalid_cursor + - other + description: | + invalid_cursor: :field:`ListFoldersContinueArg.cursor` is invalid. + other: None + AddPropertiesArg: + type: object + properties: + path: + type: string + description: A unique identifier for the file or folder. + property_groups: + type: array + description: The property groups which are to be added to a Dropbox file. + items: + $ref: '#/components/schemas/PropertyGroup' + description: > + path: A unique identifier for the file or folder. + + property_groups: The property groups which are to be added to a Dropbox + file. + MediaInfo: + type: object + properties: + .tag: + title: Choice of MediaInfo + type: string + enum: + - pending + - metadata + metadata: + $ref: '#/components/schemas/MediaMetadata' + description: > + pending: Indicate the photo/video is still under processing and metadata + is not available yet. + + metadata: The metadata for the photo/video. + LinkPermissions: + type: object + properties: + requested_visibility: + $ref: '#/components/schemas/RequestedVisibility' + resolved_visibility: + $ref: '#/components/schemas/ResolvedVisibility' + can_revoke: + type: boolean + description: Whether the caller can revoke the shared link. + revoke_failure_reason: + $ref: '#/components/schemas/SharedLinkAccessFailureReason' + description: > + can_revoke: Whether the caller can revoke the shared link. + + resolved_visibility: The current visibility of the link after + considering the shared links policies of the the team (in case the + link's owner is part of a team) and the shared folder (in case the + linked file is part of a shared folder). This field is shown only if the + caller has access to this info (the link's owner always has access to + this data). + + requested_visibility: The shared link's requested visibility. This can + be overridden by the team and shared folder policies. The final + visibility, after considering these policies, can be found in + :field:`resolved_visibility`. This is shown only if the caller is the + link's owner. + + revoke_failure_reason: The failure reason for revoking the link. This + field will only be present if the :field:`can_revoke` is :val:`false`. + DeleteBatchResultEntry: + type: object + properties: + failure: + $ref: '#/components/schemas/DeleteError' + .tag: + title: Choice of DeleteBatchResultEntry + type: string + enum: + - success + - failure + success: + $ref: '#/components/schemas/DeleteBatchResultData' + description: | + success: None + failure: None + PropertyGroup: + type: object + properties: + fields: + type: array + description: >- + The actual properties associated with the template. There can be up + to 32 property types per template. + items: + $ref: '#/components/schemas/PropertyField' + template_id: + type: string + description: A unique identifier for the associated template. + description: > + A subset of the property fields described by the corresponding + :type:`PropertyGroupTemplate`. Properties are always added to a Dropbox + file as a :type:`PropertyGroup`. The possible key names and value types + in this group are defined by the corresponding + :type:`PropertyGroupTemplate`. + + template_id: A unique identifier for the associated template. + + fields: The actual properties associated with the template. There can be + up to 32 property types per template. + CreateFolderBatchLaunch: + type: object + properties: + .tag: + title: Choice of CreateFolderBatchLaunch + type: string + enum: + - async_job_id + - complete + - other + async_job_id: + type: string + description: >- + This response indicates that the processing is asynchronous. The + string is an id that can be used to obtain the status of the + asynchronous job. + complete: + $ref: '#/components/schemas/CreateFolderBatchResult' + description: > + Result returned by :route:`create_folder_batch` that may either launch + an asynchronous job or complete synchronously. + + async_job_id: This response indicates that the processing is + asynchronous. The string is an id that can be used to obtain the status + of the asynchronous job. + + complete: None + + other: None + ListUsersOnFolderContinueArgs: + type: object + properties: + cursor: + type: string + description: >- + The cursor obtained from :route:`docs/folder_users/list` or + :route:`docs/folder_users/list/continue`. Allows for pagination. + doc_id: + type: string + description: The Paper doc ID. + description: > + doc_id: The Paper doc ID. + + cursor: The cursor obtained from :route:`docs/folder_users/list` or + :route:`docs/folder_users/list/continue`. Allows for pagination. + RelocationBatchError: + type: object + properties: + to: + $ref: '#/components/schemas/WriteError' + from_lookup: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of RelocationBatchError + type: string + enum: + - from_lookup + - from_write + - to + - cant_copy_shared_folder + - cant_nest_shared_folder + - cant_move_folder_into_itself + - too_many_files + - duplicated_or_nested_paths + - cant_transfer_ownership + - insufficient_quota + - other + - too_many_write_operations + from_write: + $ref: '#/components/schemas/WriteError' + description: > + from_lookup: None + + from_write: None + + to: None + + cant_copy_shared_folder: Shared folders can't be copied. + + cant_nest_shared_folder: Your move operation would result in nested + shared folders. This is not allowed. + + cant_move_folder_into_itself: You cannot move a folder into itself. + + too_many_files: The operation would involve more than 10,000 files and + folders. + + duplicated_or_nested_paths: There are duplicated/nested paths among + :field:`RelocationArg.from_path` and :field:`RelocationArg.to_path`. + + cant_transfer_ownership: Your move operation would result in an + ownership transfer. You may reissue the request with the field + :field:`RelocationArg.allow_ownership_transfer` to true. + + insufficient_quota: The current user does not have enough space to move + or copy the files. + + other: None + + too_many_write_operations: There are too many write operations in user's + Dropbox. Please retry this request. + UnshareFileError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharingFileAccessError' + .tag: + title: Choice of UnshareFileError + type: string + enum: + - user_error + - access_error + - other + user_error: + $ref: '#/components/schemas/SharingUserError' + description: | + Error result for :route:`unshare_file`. + user_error: None + access_error: None + other: None + SearchMatchType: + type: object + properties: + .tag: + title: Choice of SearchMatchType + type: string + enum: + - filename + - content + - both + description: > + Indicates what type of match was found for a given item. + + filename: This item was matched on its file or folder name. + + content: This item was matched based on its file contents. + + both: This item was matched based on both its contents and its file + name. + SharedFileMembers: + type: object + properties: + cursor: + type: string + description: >- + Present if there are additional shared file members that have not + been returned yet. Pass the cursor into + :route:`list_file_members/continue` to list additional members. + users: + type: array + description: The list of user members of the shared file. + items: + $ref: '#/components/schemas/UserFileMembershipInfo' + groups: + type: array + description: The list of group members of the shared file. + items: + $ref: '#/components/schemas/GroupMembershipInfo' + invitees: + type: array + description: >- + The list of invited members of a file, but have not logged in and + claimed this. + items: + $ref: '#/components/schemas/InviteeMembershipInfo' + description: > + Shared file user, group, and invitee membership. + + Used for the results of :route:`list_file_members` and + :route:`list_file_members/continue`, and used as part of the results for + :route:`list_file_members/batch`. + + users: The list of user members of the shared file. + + groups: The list of group members of the shared file. + + invitees: The list of invited members of a file, but have not logged in + and claimed this. + + cursor: Present if there are additional shared file members that have + not been returned yet. Pass the cursor into + :route:`list_file_members/continue` to list additional members. + WriteError: + type: object + properties: + malformed_path: + type: string + .tag: + title: Choice of WriteError + type: string + enum: + - malformed_path + - conflict + - no_write_permission + - insufficient_space + - disallowed_name + - team_folder + - too_many_write_operations + - other + conflict: + $ref: '#/components/schemas/WriteConflictError' + description: > + malformed_path: None + + conflict: Couldn't write to the target path because there was something + in the way. + + no_write_permission: The user doesn't have permissions to write to the + target location. + + insufficient_space: The user doesn't have enough available space (bytes) + to write more data. + + disallowed_name: Dropbox will not save the file or folder because of its + name. + + team_folder: This endpoint cannot move or delete team folders. + + too_many_write_operations: There are too many write operations in user's + Dropbox. Please retry this request. + + other: None + FileAction: + type: object + properties: + .tag: + title: Choice of FileAction + type: string + enum: + - disable_viewer_info + - edit_contents + - enable_viewer_info + - invite_viewer + - invite_viewer_no_comment + - unshare + - relinquish_membership + - share_link + - create_link + - other + description: > + Sharing actions that may be taken on files. + + disable_viewer_info: Disable viewer information on the file. + + edit_contents: Change or edit contents of the file. + + enable_viewer_info: Enable viewer information on the file. + + invite_viewer: Add a member with view permissions. + + invite_viewer_no_comment: Add a member with view permissions but no + comment permissions. + + unshare: Stop sharing this file. + + relinquish_membership: Relinquish one's own membership to the file. + + share_link: Use create_link instead. + + create_link: Create a shared link to the file. + + other: None + PropertiesSearchMatch: + type: object + properties: + path: + type: string + description: The path for the matched file or folder. + is_deleted: + type: boolean + description: Whether the file or folder is deleted. + id: + type: string + description: The ID for the matched file or folder. + property_groups: + type: array + description: List of custom property groups associated with the file. + items: + $ref: '#/components/schemas/PropertyGroup' + description: > + id: The ID for the matched file or folder. + + path: The path for the matched file or folder. + + is_deleted: Whether the file or folder is deleted. + + property_groups: List of custom property groups associated with the + file. + MemberPolicy: + type: object + properties: + .tag: + title: Choice of MemberPolicy + type: string + enum: + - team + - anyone + - other + description: > + Policy governing who can be a member of a shared folder. Only applicable + to folders owned by a user on a team. + + team: Only a teammate can become a member. + + anyone: Anyone can become a member. + + other: None + UploadWriteFailed: + type: object + properties: + reason: + $ref: '#/components/schemas/WriteError' + upload_session_id: + type: string + description: >- + The upload session ID; data has already been uploaded to the + corresponding upload session and this ID may be used to retry the + commit with :route:`upload_session/finish`. + description: > + reason: The reason why the file couldn't be saved. + + upload_session_id: The upload session ID; data has already been uploaded + to the corresponding upload session and this ID may be used to retry the + commit with :route:`upload_session/finish`. + LaunchEmptyResult: + type: object + properties: + .tag: + title: Choice of LaunchEmptyResult + type: string + enum: + - async_job_id + - complete + async_job_id: + type: string + description: >- + This response indicates that the processing is asynchronous. The + string is an id that can be used to obtain the status of the + asynchronous job. + description: > + Result returned by methods that may either launch an asynchronous job or + complete synchronously. Upon synchronous completion of the job, no + additional information is returned. + + async_job_id: This response indicates that the processing is + asynchronous. The string is an id that can be used to obtain the status + of the asynchronous job. + + complete: The job finished synchronously and successfully. + OfficeAddInPolicy: + type: object + properties: + .tag: + title: Choice of OfficeAddInPolicy + type: string + enum: + - disabled + - enabled + - other + description: | + disabled: Office Add-In is disabled. + enabled: Office Add-In is enabled. + other: None + PaperDocUpdateError: + type: object + properties: + .tag: + title: Choice of PaperDocUpdateError + type: string + enum: + - insufficient_permissions + - other + - doc_not_found + - content_malformed + - revision_mismatch + - doc_length_exceeded + - image_size_exceeded + - doc_archived + - doc_deleted + description: > + insufficient_permissions: Your account does not have permissions to + perform this action. + + other: None + + doc_not_found: The required doc was not found. + + content_malformed: The provided content was malformed and cannot be + imported to Paper. + + revision_mismatch: The provided revision does not match the document + head. + + doc_length_exceeded: The newly created Paper doc would be too large, + split the content into multiple docs. + + image_size_exceeded: The imported document contains an image that is too + large. The current limit is 1MB. Note: This only applies to HTML with + data uri. + + doc_archived: This operation is not allowed on archived Paper docs. + + doc_deleted: This operation is not allowed on deleted Paper docs. + UploadSessionFinishError: + type: object + properties: + properties_error: + $ref: '#/components/schemas/InvalidPropertyGroupError' + path: + $ref: '#/components/schemas/WriteError' + .tag: + title: Choice of UploadSessionFinishError + type: string + enum: + - lookup_failed + - path + - properties_error + - too_many_shared_folder_targets + - too_many_write_operations + - other + lookup_failed: + $ref: '#/components/schemas/UploadSessionLookupError' + description: > + lookup_failed: The session arguments are incorrect; the value explains + the reason. + + path: Unable to save the uploaded contents to a file. Data has already + been appended to the upload session. Please retry with empty data body + and updated offset. + + properties_error: The supplied property group is invalid. The file has + uploaded without property groups. + + too_many_shared_folder_targets: The batch request commits files into too + many different shared folders. Please limit your batch request to files + contained in a single shared folder. + + too_many_write_operations: There are too many write operations happening + in the user's Dropbox. You should retry uploading this file. + + other: None + RemoveTemplateArg: + type: object + properties: + template_id: + type: string + description: >- + An identifier for a template created by + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + description: > + template_id: An identifier for a template created by + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + ResolvedVisibility: + type: object + properties: + .tag: + title: Choice of ResolvedVisibility + type: string + enum: + - public + - team_only + - password + - team_and_password + - shared_folder_only + - other + description: > + The actual access permissions values of shared links after taking into + account user preferences and the team and shared folder settings. Check + the :type:`RequestedVisibility` for more info on the possible visibility + values that can be set by the shared link's owner. + + public: Anyone who has received the link can access it. No login + required. + + team_only: Only members of the same team can access the link. Login is + required. + + password: A link-specific password is required to access the link. Login + is not required. + + team_and_password: Only members of the same team who have the + link-specific password can access the link. Login is required. + + shared_folder_only: Only members of the shared folder containing the + linked file can access the link. Login is required. + + other: None + PaperDocCreateUpdateResult: + type: object + properties: + title: + type: string + description: The Paper doc title. + doc_id: + type: string + description: Doc ID of the newly created doc. + revision: + type: number + description: The Paper doc revision. Simply an ever increasing number. + description: | + doc_id: Doc ID of the newly created doc. + revision: The Paper doc revision. Simply an ever increasing number. + title: The Paper doc title. + FolderMetadata: + type: object + properties: + parent_shared_folder_id: + type: string + description: >- + Please use :field:`FileSharingInfo.parent_shared_folder_id` or + :field:`FolderSharingInfo.parent_shared_folder_id` instead. + name: + type: string + description: >- + The last component of the path (including extension). This never + contains a slash. + path_display: + type: string + description: >- + The cased path to be used for display purposes only. In rare + instances the casing will not correctly match the user's filesystem, + but this behavior will match the path provided in the Core API v1, + and at least the last path component will have the correct casing. + Changes to only the casing of paths won't be returned by + :route:`list_folder/continue`. This field will be null if the file + or folder is not mounted. + shared_folder_id: + type: string + description: Please use :field:`sharing_info` instead. + path_lower: + type: string + description: >- + The lowercased full path in the user's Dropbox. This always starts + with a slash. This field will be null if the file or folder is not + mounted. + sharing_info: + $ref: '#/components/schemas/FolderSharingInfo' + property_groups: + type: array + description: >- + Additional information if the file has custom properties with the + property template specified. Note that only properties associated + with user-owned templates, not team-owned templates, can be attached + to folders. + items: + $ref: '#/components/schemas/PropertyGroup' + id: + type: string + description: A unique identifier for the folder. + description: > + name: The last component of the path (including extension). This never + contains a slash. + + id: A unique identifier for the folder. + + path_lower: The lowercased full path in the user's Dropbox. This always + starts with a slash. This field will be null if the file or folder is + not mounted. + + path_display: The cased path to be used for display purposes only. In + rare instances the casing will not correctly match the user's + filesystem, but this behavior will match the path provided in the Core + API v1, and at least the last path component will have the correct + casing. Changes to only the casing of paths won't be returned by + :route:`list_folder/continue`. This field will be null if the file or + folder is not mounted. + + parent_shared_folder_id: Please use + :field:`FileSharingInfo.parent_shared_folder_id` or + :field:`FolderSharingInfo.parent_shared_folder_id` instead. + + shared_folder_id: Please use :field:`sharing_info` instead. + + sharing_info: Set if the folder is contained in a shared folder or is a + shared folder mount point. + + property_groups: Additional information if the file has custom + properties with the property template specified. Note that only + properties associated with user-owned templates, not team-owned + templates, can be attached to folders. + UploadSessionOffsetError: + type: object + properties: + correct_offset: + type: number + description: The offset up to which data has been collected. + description: | + correct_offset: The offset up to which data has been collected. + LinkMetadata: + type: object + properties: + url: + type: string + description: URL of the shared link. + expires: + type: string + description: Expiration time, if set. By default the link won't expire. + visibility: + $ref: '#/components/schemas/Visibility' + description: > + Metadata for a shared link. This can be either a + :type:`PathLinkMetadata` or :type:`CollectionLinkMetadata`. + + url: URL of the shared link. + + visibility: Who can access the link. + + expires: Expiration time, if set. By default the link won't expire. + SharedFolderMetadata: + type: object + properties: + owner_team: + $ref: '#/components/schemas/Team' + parent_shared_folder_id: + type: string + description: >- + The ID of the parent shared folder. This field is present only if + the folder is contained within another shared folder. + link_metadata: + $ref: '#/components/schemas/SharedContentLinkMetadata' + time_invited: + type: string + description: >- + Timestamp indicating when the current user was invited to this + shared folder. + preview_url: + type: string + description: URL for displaying a web preview of the shared folder. + access_type: + $ref: '#/components/schemas/AccessLevel' + name: + type: string + description: The name of the this shared folder. + owner_display_names: + type: array + description: >- + The display names of the users that own the folder. If the folder is + part of a team folder, the display names of the team admins are also + included. Absent if the owner display names cannot be fetched. + items: + type: string + access_inheritance: + $ref: '#/components/schemas/AccessInheritance' + shared_folder_id: + type: string + description: The ID of the shared folder. + path_lower: + type: string + description: >- + The lower-cased full path of this shared folder. Absent for + unmounted folders. + policy: + $ref: '#/components/schemas/FolderPolicy' + is_inside_team_folder: + type: boolean + description: Whether this folder is inside of a team folder. + is_team_folder: + type: boolean + description: >- + Whether this folder is a :link:`team folder + https://www.dropbox.com/en/help/986`. + permissions: + type: array + description: >- + Actions the current user may perform on the folder and its contents. + The set of permissions corresponds to the FolderActions in the + request. + items: + $ref: '#/components/schemas/FolderPermission' + description: > + The metadata which includes basic information about the shared folder. + + access_type: The current user's access level for this shared folder. + + is_inside_team_folder: Whether this folder is inside of a team folder. + + is_team_folder: Whether this folder is a :link:`team folder + https://www.dropbox.com/en/help/986`. + + name: The name of the this shared folder. + + policy: Policies governing this shared folder. + + preview_url: URL for displaying a web preview of the shared folder. + + shared_folder_id: The ID of the shared folder. + + time_invited: Timestamp indicating when the current user was invited to + this shared folder. + + owner_display_names: The display names of the users that own the folder. + If the folder is part of a team folder, the display names of the team + admins are also included. Absent if the owner display names cannot be + fetched. + + owner_team: The team that owns the folder. This field is not present if + the folder is not owned by a team. + + parent_shared_folder_id: The ID of the parent shared folder. This field + is present only if the folder is contained within another shared folder. + + path_lower: The lower-cased full path of this shared folder. Absent for + unmounted folders. + + link_metadata: The metadata of the shared content link to this shared + folder. Absent if there is no link on the folder. This is for an + unreleased feature so it may not be returned yet. + + permissions: Actions the current user may perform on the folder and its + contents. The set of permissions corresponds to the FolderActions in the + request. + + access_inheritance: Whether the folder inherits its members from its + parent. + ListSharedLinksResult: + type: object + properties: + has_more: + type: boolean + description: >- + Is true if there are additional shared links that have not been + returned yet. Pass the cursor into :route:`list_shared_links` to + retrieve them. + cursor: + type: string + description: >- + Pass the cursor into :route:`list_shared_links` to obtain the + additional links. Cursor is returned only if no path is given. + links: + type: array + description: Shared links applicable to the path argument. + items: + $ref: '#/components/schemas/SharedLinkMetadata' + description: > + links: Shared links applicable to the path argument. + + has_more: Is true if there are additional shared links that have not + been returned yet. Pass the cursor into :route:`list_shared_links` to + retrieve them. + + cursor: Pass the cursor into :route:`list_shared_links` to obtain the + additional links. Cursor is returned only if no path is given. + UpdateFileRequestError: + type: object + properties: + .tag: + title: Choice of UpdateFileRequestError + type: string + enum: + - disabled_for_team + - other + - not_found + - not_a_folder + - app_lacks_access + - no_permission + - email_unverified + - validation_error + description: > + There is an error updating the file request. + + disabled_for_team: This user's Dropbox Business team doesn't allow file + requests. + + other: None + + not_found: This file request ID was not found. + + not_a_folder: The specified path is not a folder. + + app_lacks_access: This file request is not accessible to this app. Apps + with the app folder permission can only access file requests in their + app folder. + + no_permission: This user doesn't have permission to access or modify + this file request. + + email_unverified: This user's email address is not verified. File + requests are only available on accounts with a verified email address. + Users can verify their email address :link:`here + https://www.dropbox.com/help/317`. + + validation_error: There was an error validating the request. For + example, the title was invalid, or there were disallowed characters in + the destination path. + CreateFolderResult: + type: object + properties: + metadata: + $ref: '#/components/schemas/FolderMetadata' + description: | + metadata: Metadata of the created folder. + RelocationBatchResultData: + type: object + properties: + metadata: + $ref: '#/components/schemas/Metadata' + description: | + metadata: Metadata of the relocated object. + Visibility: + type: object + properties: + .tag: + title: Choice of Visibility + type: string + enum: + - public + - team_only + - password + - team_and_password + - shared_folder_only + - other + description: > + Who can access a shared link. The most open visibility is + :field:`public`. The default depends on many aspects, such as team and + user preferences and shared folder settings. + + public: Anyone who has received the link can access it. No login + required. + + team_only: Only members of the same team can access the link. Login is + required. + + password: A link-specific password is required to access the link. Login + is not required. + + team_and_password: Only members of the same team who have the + link-specific password can access the link. + + shared_folder_only: Only members of the shared folder containing the + linked file can access the link. Login is required. + + other: None + DownloadArg: + type: object + properties: + path: + type: string + description: The path of the file to download. + rev: + type: string + description: Please specify revision in :field:`path` instead. + description: | + path: The path of the file to download. + rev: Please specify revision in :field:`path` instead. + SharePathError: + type: object + properties: + .tag: + title: Choice of SharePathError + type: string + enum: + - is_file + - inside_shared_folder + - contains_shared_folder + - contains_app_folder + - contains_team_folder + - is_app_folder + - inside_app_folder + - is_public_folder + - inside_public_folder + - already_shared + - invalid_path + - is_osx_package + - inside_osx_package + - other + already_shared: + $ref: '#/components/schemas/SharedFolderMetadata' + description: > + is_file: A file is at the specified path. + + inside_shared_folder: We do not support sharing a folder inside a shared + folder. + + contains_shared_folder: We do not support shared folders that contain + shared folders. + + contains_app_folder: We do not support shared folders that contain app + folders. + + contains_team_folder: We do not support shared folders that contain team + folders. + + is_app_folder: We do not support sharing an app folder. + + inside_app_folder: We do not support sharing a folder inside an app + folder. + + is_public_folder: A public folder can't be shared this way. Use a public + link instead. + + inside_public_folder: A folder inside a public folder can't be shared + this way. Use a public link instead. + + already_shared: Folder is already shared. Contains metadata about the + existing shared folder. + + invalid_path: Path is not valid. + + is_osx_package: We do not support sharing a Mac OS X package. + + inside_osx_package: We do not support sharing a folder inside a Mac OS X + package. + + other: None + DeleteError: + type: object + properties: + path_lookup: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of DeleteError + type: string + enum: + - path_lookup + - path_write + - too_many_write_operations + - too_many_files + - other + path_write: + $ref: '#/components/schemas/WriteError' + description: > + path_lookup: None + + path_write: None + + too_many_write_operations: There are too many write operations in user's + Dropbox. Please retry this request. + + too_many_files: There are too many files in one request. Please retry + with fewer files. + + other: None + CreateFileRequestArgs: + type: object + properties: + open: + type: boolean + description: >- + Whether or not the file request should be open. If the file request + is closed, it will not accept any file submissions, but it can be + opened later. + destination: + type: string + description: >- + The path of the folder in the Dropbox where uploaded files will be + sent. For apps with the app folder permission, this will be relative + to the app folder. + deadline: + $ref: '#/components/schemas/FileRequestDeadline' + title: + type: string + description: The title of the file request. Must not be empty. + description: > + Arguments for :route:`create`. + + title: The title of the file request. Must not be empty. + + destination: The path of the folder in the Dropbox where uploaded files + will be sent. For apps with the app folder permission, this will be + relative to the app folder. + + deadline: The deadline for the file request. Deadlines can only be set + by Pro and Business accounts. + + open: Whether or not the file request should be open. If the file + request is closed, it will not accept any file submissions, but it can + be opened later. + ChangeFileMemberAccessArgs: + type: object + properties: + member: + $ref: '#/components/schemas/MemberSelector' + access_level: + $ref: '#/components/schemas/AccessLevel' + file: + type: string + description: File for which we are changing a member's access. + description: | + Arguments for :route:`change_file_member_access`. + file: File for which we are changing a member's access. + member: The member whose access we are changing. + access_level: The new access level for the member. + ListFolderContinueError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of ListFolderContinueError + type: string + enum: + - path + - reset + - other + description: > + path: None + + reset: Indicates that the cursor has been invalidated. Call + :route:`list_folder` to obtain a new cursor. + + other: None + UnshareFolderArg: + type: object + properties: + shared_folder_id: + type: string + description: The ID for the shared folder. + leave_a_copy: + type: boolean + description: >- + If true, members of this shared folder will get a copy of this + folder after it's unshared. Otherwise, it will be removed from their + Dropbox. The current user, who is an owner, will always retain their + copy. + description: > + shared_folder_id: The ID for the shared folder. + + leave_a_copy: If true, members of this shared folder will get a copy of + this folder after it's unshared. Otherwise, it will be removed from + their Dropbox. The current user, who is an owner, will always retain + their copy. + TemplateFilterBase: + type: object + properties: + filter_some: + type: array + description: >- + Only templates with an ID in the supplied list will be returned (a + subset of templates will be returned). + items: + type: string + .tag: + title: Choice of TemplateFilterBase + type: string + enum: + - filter_some + - other + description: > + filter_some: Only templates with an ID in the supplied list will be + returned (a subset of templates will be returned). + + other: None + UserOnPaperDocFilter: + type: object + properties: + .tag: + title: Choice of UserOnPaperDocFilter + type: string + enum: + - visited + - shared + - other + description: > + visited: all users who have visited the Paper doc. + + shared: All uses who are shared on the Paper doc. This includes all + users who have visited the Paper doc as well as those who have not. + + other: None + UploadSessionFinishArg: + type: object + properties: + cursor: + $ref: '#/components/schemas/UploadSessionCursor' + commit: + $ref: '#/components/schemas/CommitInfo' + description: | + cursor: Contains the upload session ID and the offset. + commit: Contains the path and other optional modifiers for the commit. + FullAccount: + type: object + properties: + referral_link: + type: string + description: The user's :link:`referral link https://www.dropbox.com/referrals`. + account_type: + $ref: '#/components/schemas/AccountType' + account_id: + type: string + description: The user's unique Dropbox ID. + locale: + type: string + description: >- + The language that the user specified. Locale tags will be + :link:`IETF language tags + http://en.wikipedia.org/wiki/IETF_language_tag`. + email_verified: + type: boolean + description: Whether the user has verified their e-mail address. + team_member_id: + type: string + description: >- + This account's unique team member id. This field will only be + present if :field:`team` is present. + root_info: + $ref: '#/components/schemas/RootInfo' + disabled: + type: boolean + description: Whether the user has been disabled. + is_paired: + type: boolean + description: >- + Whether the user has a personal and work account. If the current + account is personal, then :field:`team` will always be :val:`null`, + but :field:`is_paired` will indicate if a work account is linked. + team: + $ref: '#/components/schemas/FullTeam' + country: + type: string + description: >- + The user's two-letter country code, if available. Country codes are + based on :link:`ISO 3166-1 http://en.wikipedia.org/wiki/ISO_3166-1`. + email: + type: string + description: >- + The user's e-mail address. Do not rely on this without checking the + :field:`email_verified` field. Even then, it's possible that the + user has since lost access to their e-mail. + profile_photo_url: + type: string + description: URL for the photo representing the user, if one is set. + name: + $ref: '#/components/schemas/Name' + description: > + Detailed information about the current user's account. + + account_id: The user's unique Dropbox ID. + + name: Details of a user's name. + + email: The user's e-mail address. Do not rely on this without checking + the :field:`email_verified` field. Even then, it's possible that the + user has since lost access to their e-mail. + + email_verified: Whether the user has verified their e-mail address. + + disabled: Whether the user has been disabled. + + locale: The language that the user specified. Locale tags will be + :link:`IETF language tags + http://en.wikipedia.org/wiki/IETF_language_tag`. + + referral_link: The user's :link:`referral link + https://www.dropbox.com/referrals`. + + is_paired: Whether the user has a personal and work account. If the + current account is personal, then :field:`team` will always be + :val:`null`, but :field:`is_paired` will indicate if a work account is + linked. + + account_type: What type of account this user has. + + root_info: The root info for this account. + + profile_photo_url: URL for the photo representing the user, if one is + set. + + country: The user's two-letter country code, if available. Country codes + are based on :link:`ISO 3166-1 http://en.wikipedia.org/wiki/ISO_3166-1`. + + team: If this account is a member of a team, information about that + team. + + team_member_id: This account's unique team member id. This field will + only be present if :field:`team` is present. + CreateSharedLinkError: + type: object + properties: + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of CreateSharedLinkError + type: string + enum: + - path + - other + description: | + path: None + other: None + PathLinkMetadata: + type: object + properties: + url: + type: string + description: URL of the shared link. + path: + type: string + description: Path in user's Dropbox. + expires: + type: string + description: Expiration time, if set. By default the link won't expire. + visibility: + $ref: '#/components/schemas/Visibility' + description: | + Metadata for a path-based shared link. + url: URL of the shared link. + visibility: Who can access the link. + path: Path in user's Dropbox. + expires: Expiration time, if set. By default the link won't expire. + TransferFolderArg: + type: object + properties: + shared_folder_id: + type: string + description: The ID for the shared folder. + to_dropbox_id: + type: string + description: A account or team member ID to transfer ownership to. + description: | + shared_folder_id: The ID for the shared folder. + to_dropbox_id: A account or team member ID to transfer ownership to. + AlphaGetMetadataError: + type: object + properties: + properties_error: + $ref: '#/components/schemas/LookUpPropertiesError' + path: + $ref: '#/components/schemas/LookupError' + .tag: + title: Choice of AlphaGetMetadataError + type: string + enum: + - path + - properties_error + description: | + path: None + properties_error: None + RemoveFolderMemberError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharedFolderAccessError' + .tag: + title: Choice of RemoveFolderMemberError + type: string + enum: + - access_error + - member_error + - folder_owner + - group_access + - team_folder + - no_permission + - too_many_files + - other + member_error: + $ref: '#/components/schemas/SharedFolderMemberError' + description: > + access_error: None + + member_error: None + + folder_owner: The target user is the owner of the shared folder. You + can't remove this user until ownership has been transferred to another + member. + + group_access: The target user has access to the shared folder via a + group. + + team_folder: This action cannot be performed on a team shared folder. + + no_permission: The current user does not have permission to perform this + action. + + too_many_files: This shared folder has too many files for leaving a + copy. You can still remove this user without leaving a copy. + + other: None + GetFileRequestError: + type: object + properties: + .tag: + title: Choice of GetFileRequestError + type: string + enum: + - disabled_for_team + - other + - not_found + - not_a_folder + - app_lacks_access + - no_permission + - email_unverified + - validation_error + description: > + There was an error retrieving the specified file request. + + disabled_for_team: This user's Dropbox Business team doesn't allow file + requests. + + other: None + + not_found: This file request ID was not found. + + not_a_folder: The specified path is not a folder. + + app_lacks_access: This file request is not accessible to this app. Apps + with the app folder permission can only access file requests in their + app folder. + + no_permission: This user doesn't have permission to access or modify + this file request. + + email_unverified: This user's email address is not verified. File + requests are only available on accounts with a verified email address. + Users can verify their email address :link:`here + https://www.dropbox.com/help/317`. + + validation_error: There was an error validating the request. For + example, the title was invalid, or there were disallowed characters in + the destination path. + FileRequestDeadline: + type: object + properties: + deadline: + type: string + description: The deadline for this file request. + allow_late_uploads: + $ref: '#/components/schemas/GracePeriod' + description: > + deadline: The deadline for this file request. + + allow_late_uploads: If set, allow uploads after the deadline has passed. + These uploads will be marked overdue. + InsufficientPlan: + type: object + properties: + message: + type: string + description: >- + A message to tell the user to upgrade in order to support expected + action. + upsell_url: + type: string + description: >- + A URL to send the user to in order to obtain the account type they + need, e.g. upgrading. Absent if there is no action the user can take + to upgrade. + description: > + message: A message to tell the user to upgrade in order to support + expected action. + + upsell_url: A URL to send the user to in order to obtain the account + type they need, e.g. upgrading. Absent if there is no action the user + can take to upgrade. + PaperDocUpdatePolicy: + type: object + properties: + .tag: + title: Choice of PaperDocUpdatePolicy + type: string + enum: + - append + - prepend + - overwrite_all + - other + description: > + append: The content will be appended to the doc. + + prepend: The content will be prepended to the doc. + + Note: the doc title will not be affected. + + overwrite_all: The document will be overwitten at the head with the + provided content. + + other: None + UploadSessionFinishBatchArg: + type: object + properties: + entries: + type: array + description: Commit information for each file in the batch. + items: + $ref: '#/components/schemas/UploadSessionFinishArg' + description: | + entries: Commit information for each file in the batch. + Dimensions: + type: object + properties: + width: + type: number + description: Width of the photo/video. + height: + type: number + description: Height of the photo/video. + description: | + Dimensions for a photo or video. + height: Height of the photo/video. + width: Width of the photo/video. + PropertiesSearchError: + type: object + properties: + .tag: + title: Choice of PropertiesSearchError + type: string + enum: + - property_group_lookup + - other + property_group_lookup: + $ref: '#/components/schemas/LookUpPropertiesError' + description: | + property_group_lookup: None + other: None + GetFileMetadataError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharingFileAccessError' + .tag: + title: Choice of GetFileMetadataError + type: string + enum: + - user_error + - access_error + - other + user_error: + $ref: '#/components/schemas/SharingUserError' + description: | + Error result for :route:`get_file_metadata`. + user_error: None + access_error: None + other: None + GetTemplateResult: + type: object + properties: + fields: + type: array + description: >- + Definitions of the property fields associated with this template. + There can be up to 32 properties in a single template. + items: + $ref: '#/components/schemas/PropertyFieldTemplate' + name: + type: string + description: >- + Display name for the template. Template names can be up to 256 + bytes. + description: + type: string + description: >- + Description for the template. Template descriptions can be up to + 1024 bytes. + description: > + name: Display name for the template. Template names can be up to 256 + bytes. + + description: Description for the template. Template descriptions can be + up to 1024 bytes. + + fields: Definitions of the property fields associated with this + template. There can be up to 32 properties in a single template. + LookupError: + type: object + properties: + malformed_path: + type: string + .tag: + title: Choice of LookupError + type: string + enum: + - malformed_path + - not_found + - not_file + - not_folder + - restricted_content + - other + description: > + malformed_path: None + + not_found: There is nothing at the given path. + + not_file: We were expecting a file, but the given path refers to + something that isn't a file. + + not_folder: We were expecting a folder, but the given path refers to + something that isn't a folder. + + restricted_content: The file cannot be transferred because the content + is restricted. For example, sometimes there are legal restrictions due + to copyright claims. + + other: None + CreateFolderBatchJobStatus: + type: object + properties: + failed: + $ref: '#/components/schemas/CreateFolderBatchError' + .tag: + title: Choice of CreateFolderBatchJobStatus + type: string + enum: + - in_progress + - complete + - failed + - other + complete: + $ref: '#/components/schemas/CreateFolderBatchResult' + description: | + in_progress: The asynchronous job is still in progress. + complete: The batch create folder has finished. + failed: The batch create folder has failed. + other: None + ListTemplateResult: + type: object + properties: + template_ids: + type: array + description: >- + List of identifiers for templates added by See + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + items: + type: string + description: > + template_ids: List of identifiers for templates added by See + :route:`templates/add_for_user` or :route:`templates/add_for_team`. + TemplateError: + type: object + properties: + .tag: + title: Choice of TemplateError + type: string + enum: + - template_not_found + - restricted_content + - other + template_not_found: + type: string + description: Template does not exist for the given identifier. + description: | + template_not_found: Template does not exist for the given identifier. + restricted_content: You do not have permission to modify this template. + other: None + GetCopyReferenceResult: + type: object + properties: + expires: + type: string + description: >- + The expiration date of the copy reference. This value is currently + set to be far enough in the future so that expiration is effectively + not an issue. + copy_reference: + type: string + description: A copy reference to the file or folder. + metadata: + $ref: '#/components/schemas/Metadata' + description: > + metadata: Metadata of the file or folder. + + copy_reference: A copy reference to the file or folder. + + expires: The expiration date of the copy reference. This value is + currently set to be far enough in the future so that expiration is + effectively not an issue. + PropertiesSearchMode: + type: object + properties: + .tag: + title: Choice of PropertiesSearchMode + type: string + enum: + - field_name + - other + field_name: + type: string + description: Search for a value associated with this field name. + description: | + field_name: Search for a value associated with this field name. + other: None + RelocationArg: + type: object + properties: + allow_ownership_transfer: + type: boolean + description: >- + Allow moves by owner even if it would result in an ownership + transfer for the content being moved. This does not apply to copies. + from_path: + type: string + description: Path in the user's Dropbox to be copied or moved. + to_path: + type: string + description: Path in the user's Dropbox that is the destination. + autorename: + type: boolean + description: >- + If there's a conflict, have the Dropbox server try to autorename the + file to avoid the conflict. + allow_shared_folder: + type: boolean + description: >- + If true, :route:`copy` will copy contents in shared folder, + otherwise :field:`RelocationError.cant_copy_shared_folder` will be + returned if :field:`from_path` contains shared folder. This field is + always true for :route:`move`. + description: > + from_path: Path in the user's Dropbox to be copied or moved. + + to_path: Path in the user's Dropbox that is the destination. + + allow_shared_folder: If true, :route:`copy` will copy contents in shared + folder, otherwise :field:`RelocationError.cant_copy_shared_folder` will + be returned if :field:`from_path` contains shared folder. This field is + always true for :route:`move`. + + autorename: If there's a conflict, have the Dropbox server try to + autorename the file to avoid the conflict. + + allow_ownership_transfer: Allow moves by owner even if it would result + in an ownership transfer for the content being moved. This does not + apply to copies. + AlphaGetMetadataArg: + type: object + properties: + include_property_groups: + $ref: '#/components/schemas/TemplateFilterBase' + include_property_templates: + type: array + description: >- + If set to a valid list of template IDs, + :field:`FileMetadata.property_groups` is set for files with custom + properties. + items: + type: string + include_has_explicit_shared_members: + type: boolean + description: >- + If true, the results will include a flag for each file indicating + whether or not that file has any explicit members. + include_deleted: + type: boolean + description: >- + If true, :type:`DeletedMetadata` will be returned for deleted file + or folder, otherwise :field:`LookupError.not_found` will be + returned. + include_media_info: + type: boolean + description: >- + If true, :field:`FileMetadata.media_info` is set for photo and + video. + path: + type: string + description: The path of a file or folder on Dropbox. + description: > + path: The path of a file or folder on Dropbox. + + include_media_info: If true, :field:`FileMetadata.media_info` is set for + photo and video. + + include_deleted: If true, :type:`DeletedMetadata` will be returned for + deleted file or folder, otherwise :field:`LookupError.not_found` will be + returned. + + include_has_explicit_shared_members: If true, the results will include a + flag for each file indicating whether or not that file has any explicit + members. + + include_property_groups: If set to a valid list of template IDs, + :field:`FileMetadata.property_groups` is set if there exists property + data associated with the file and each of the listed templates. + + include_property_templates: If set to a valid list of template IDs, + :field:`FileMetadata.property_groups` is set for files with custom + properties. + ListUsersCursorError: + type: object + properties: + cursor_error: + $ref: '#/components/schemas/PaperApiCursorError' + .tag: + title: Choice of ListUsersCursorError + type: string + enum: + - insufficient_permissions + - other + - doc_not_found + - cursor_error + description: > + insufficient_permissions: Your account does not have permissions to + perform this action. + + other: None + + doc_not_found: The required doc was not found. + + cursor_error: None + UploadSessionCursor: + type: object + properties: + session_id: + type: string + description: The upload session ID (returned by :route:`upload_session/start`). + offset: + type: number + description: >- + The amount of data that has been uploaded so far. We use this to + make sure upload data isn't lost or duplicated in the event of a + network error. + description: > + session_id: The upload session ID (returned by + :route:`upload_session/start`). + + offset: The amount of data that has been uploaded so far. We use this to + make sure upload data isn't lost or duplicated in the event of a network + error. + ListFolderMembersContinueError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharedFolderAccessError' + .tag: + title: Choice of ListFolderMembersContinueError + type: string + enum: + - access_error + - invalid_cursor + - other + description: | + access_error: None + invalid_cursor: :field:`ListFolderMembersContinueArg.cursor` is invalid. + other: None + RestoreArg: + type: object + properties: + path: + type: string + description: The path to the file you want to restore. + rev: + type: string + description: The revision to restore for the file. + description: | + path: The path to the file you want to restore. + rev: The revision to restore for the file. + MediaMetadata: + type: object + properties: + dimensions: + $ref: '#/components/schemas/Dimensions' + location: + $ref: '#/components/schemas/GpsCoordinates' + time_taken: + type: string + description: The timestamp when the photo/video is taken. + description: | + Metadata for a photo or video. + dimensions: Dimension of the photo/video. + location: The GPS coordinate of the photo/video. + time_taken: The timestamp when the photo/video is taken. + DeleteBatchJobStatus: + type: object + properties: + failed: + $ref: '#/components/schemas/DeleteBatchError' + .tag: + title: Choice of DeleteBatchJobStatus + type: string + enum: + - in_progress + - complete + - failed + - other + complete: + $ref: '#/components/schemas/DeleteBatchResult' + description: | + in_progress: The asynchronous job is still in progress. + complete: The batch delete has finished. + failed: The batch delete has failed. + other: None + RemoveFileMemberError: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharingFileAccessError' + .tag: + title: Choice of RemoveFileMemberError + type: string + enum: + - user_error + - access_error + - no_explicit_access + - other + user_error: + $ref: '#/components/schemas/SharingUserError' + no_explicit_access: + $ref: '#/components/schemas/MemberAccessLevelResult' + description: > + Errors for :route:`remove_file_member_2`. + + user_error: None + + access_error: None + + no_explicit_access: This member does not have explicit access to the + file and therefore cannot be removed. The return value is the access + that a user might have to the file from a parent folder. + + other: None + CreateFolderError: + type: object + properties: + path: + $ref: '#/components/schemas/WriteError' + .tag: + title: Choice of CreateFolderError + type: string + enum: + - path + description: | + path: None + ListRevisionsMode: + type: object + properties: + .tag: + title: Choice of ListRevisionsMode + type: string + enum: + - path + - id + - other + description: > + path: Returns revisions with the same file path as identified by the + latest file entry at the given file path or id. + + id: Returns revisions with the same file id as identified by the latest + file entry at the given file path or id. + + other: None + DeleteBatchLaunch: + type: object + properties: + .tag: + title: Choice of DeleteBatchLaunch + type: string + enum: + - async_job_id + - complete + - other + async_job_id: + type: string + description: >- + This response indicates that the processing is asynchronous. The + string is an id that can be used to obtain the status of the + asynchronous job. + complete: + $ref: '#/components/schemas/DeleteBatchResult' + description: > + Result returned by :route:`delete_batch` that may either launch an + asynchronous job or complete synchronously. + + async_job_id: This response indicates that the processing is + asynchronous. The string is an id that can be used to obtain the status + of the asynchronous job. + + complete: None + + other: None + TokenFromOAuth1Arg: + type: object + properties: + oauth1_token: + type: string + description: The supplied OAuth 1.0 access token. + oauth1_token_secret: + type: string + description: The token secret associated with the supplied access token. + description: > + oauth1_token: The supplied OAuth 1.0 access token. + + oauth1_token_secret: The token secret associated with the supplied + access token. + ListUsersOnPaperDocResponse: + type: object + properties: + cursor: + $ref: '#/components/schemas/Cursor' + has_more: + type: boolean + description: >- + Will be set to True if a subsequent call with the provided cursor to + :route:`docs/users/list/continue` returns immediately with some + results. If set to False please allow some delay before making + another call to :route:`docs/users/list/continue`. + doc_owner: + $ref: '#/components/schemas/UserInfo' + users: + type: array + description: >- + List of users with their respective permission levels that are + invited on the Paper folder. + items: + $ref: '#/components/schemas/UserInfoWithPermissionLevel' + invitees: + type: array + description: >- + List of email addresses with their respective permission levels that + are invited on the Paper doc. + items: + $ref: '#/components/schemas/InviteeInfoWithPermissionLevel' + description: > + invitees: List of email addresses with their respective permission + levels that are invited on the Paper doc. + + users: List of users with their respective permission levels that are + invited on the Paper folder. + + doc_owner: The Paper doc owner. This field is populated on every single + response. + + cursor: Pass the cursor into :route:`docs/users/list/continue` to + paginate through all users. The cursor preserves all properties as + specified in the original call to :route:`docs/users/list`. + + has_more: Will be set to True if a subsequent call with the provided + cursor to :route:`docs/users/list/continue` returns immediately with + some results. If set to False please allow some delay before making + another call to :route:`docs/users/list/continue`. + GetThumbnailBatchError: + type: object + properties: + .tag: + title: Choice of GetThumbnailBatchError + type: string + enum: + - too_many_files + - other + description: | + too_many_files: The operation involves more than 25 files. + other: None + ListFileMembersIndividualResult: + type: object + properties: + access_error: + $ref: '#/components/schemas/SharingFileAccessError' + .tag: + title: Choice of ListFileMembersIndividualResult + type: string + enum: + - result + - access_error + - other + result: + $ref: '#/components/schemas/ListFileMembersCountResult' + description: | + result: The results of the query for this file if it was successful. + access_error: The result of the query for this file if it was an error. + other: None + PropertyField: + type: object + properties: + name: + type: string + description: >- + Key of the property field associated with a file and template. Keys + can be up to 256 bytes. + value: + type: string + description: >- + Value of the property field associated with a file and template. + Values can be up to 1024 bytes. + description: > + Raw key/value data to be associated with a Dropbox file. Property fields + are added to Dropbox files as a :type:`PropertyGroup`. + + name: Key of the property field associated with a file and template. + Keys can be up to 256 bytes. + + value: Value of the property field associated with a file and template. + Values can be up to 1024 bytes. + PropertiesSearchResult: + type: object + properties: + matches: + type: array + description: A list (possibly empty) of matches for the query. + items: + $ref: '#/components/schemas/PropertiesSearchMatch' + cursor: + type: string + description: >- + Pass the cursor into :route:`properties/search/continue` to continue + to receive search results. Cursor will be null when there are no + more results. + description: > + matches: A list (possibly empty) of matches for the query. + + cursor: Pass the cursor into :route:`properties/search/continue` to + continue to receive search results. Cursor will be null when there are + no more results. + ListPaperDocsFilterBy: + type: object + properties: + .tag: + title: Choice of ListPaperDocsFilterBy + type: string + enum: + - docs_accessed + - docs_created + - other + description: > + docs_accessed: Fetches all Paper doc IDs that the user has ever + accessed. + + docs_created: Fetches only the Paper doc IDs that the user has created. + + other: None + AccessInheritance: + type: object + properties: + .tag: + title: Choice of AccessInheritance + type: string + enum: + - inherit + - no_inherit + - other + description: > + Information about the inheritance policy of a shared folder. + + inherit: The shared folder inherits its members from the parent folder. + + no_inherit: The shared folder does not inherit its members from the + parent folder. + + other: None + ListFolderLongpollResult: + type: object + properties: + changes: + type: boolean + description: >- + Indicates whether new changes are available. If true, call + :route:`list_folder/continue` to retrieve the changes. + backoff: + type: number + description: >- + If present, backoff for at least this many seconds before calling + :route:`list_folder/longpoll` again. + description: > + changes: Indicates whether new changes are available. If true, call + :route:`list_folder/continue` to retrieve the changes. + + backoff: If present, backoff for at least this many seconds before + calling :route:`list_folder/longpoll` again. + AclUpdatePolicy: + type: object + properties: + .tag: + title: Choice of AclUpdatePolicy + type: string + enum: + - owner + - editors + - other + description: > + Who can change a shared folder's access control list (ACL). In other + words, who can add, remove, or change the privileges of members. + + owner: Only the owner can update the ACL. + + editors: Any editor can update the ACL. This may be further restricted + to editors on the same team. + + other: None + ListFileMembersContinueArg: + type: object + properties: + cursor: + type: string + description: >- + The cursor returned by your last call to :route:`list_file_members`, + :route:`list_file_members/continue`, or + :route:`list_file_members/batch`. + description: > + Arguments for :route:`list_file_members/continue`. + + cursor: The cursor returned by your last call to + :route:`list_file_members`, :route:`list_file_members/continue`, or + :route:`list_file_members/batch`. + ListPaperDocsResponse: + type: object + properties: + cursor: + $ref: '#/components/schemas/Cursor' + has_more: + type: boolean + description: >- + Will be set to True if a subsequent call with the provided cursor to + :route:`docs/list/continue` returns immediately with some results. + If set to False please allow some delay before making another call + to :route:`docs/list/continue`. + doc_ids: + type: array + description: >- + The list of Paper doc IDs that can be used to access the given Paper + docs or supplied to other API methods. The list is sorted in the + order specified by the initial call to :route:`docs/list`. + items: + type: string + description: > + doc_ids: The list of Paper doc IDs that can be used to access the given + Paper docs or supplied to other API methods. The list is sorted in the + order specified by the initial call to :route:`docs/list`. + + cursor: Pass the cursor into :route:`docs/list/continue` to paginate + through all files. The cursor preserves all properties as specified in + the original call to :route:`docs/list`. + + has_more: Will be set to True if a subsequent call with the provided + cursor to :route:`docs/list/continue` returns immediately with some + results. If set to False please allow some delay before making another + call to :route:`docs/list/continue`. + RelinquishFileMembershipArg: + type: object + properties: + file: + type: string + description: The path or id for the file. + description: | + file: The path or id for the file. + GetSharedLinksResult: + type: object + properties: + links: + type: array + description: Shared links applicable to the path argument. + items: + $ref: '#/components/schemas/LinkMetadata' + description: | + links: Shared links applicable to the path argument. + CreateFolderEntryError: + type: object + properties: + path: + $ref: '#/components/schemas/WriteError' + .tag: + title: Choice of CreateFolderEntryError + type: string + enum: + - path + - other + description: | + path: None + other: None + LinkAction: + type: object + properties: + .tag: + title: Choice of LinkAction + type: string + enum: + - change_access_level + - change_audience + - remove_expiry + - remove_password + - set_expiry + - set_password + - other + description: | + Actions that can be performed on a link. + change_access_level: Change the access level of the link. + change_audience: Change the audience of the link. + remove_expiry: Remove the expiry date of the link. + remove_password: Remove the password of the link. + set_expiry: Create or modify the expiry date of the link. + set_password: Create or modify the password of the link. + other: None + LinkExpiry: + type: object + properties: + set_expiry: + type: string + description: Set a new expiry or change an existing expiry. + .tag: + title: Choice of LinkExpiry + type: string + enum: + - remove_expiry + - set_expiry + - other + description: | + remove_expiry: Remove the currently set expiry for the link. + set_expiry: Set a new expiry or change an existing expiry. + other: None + PendingUploadMode: + type: object + properties: + .tag: + title: Choice of PendingUploadMode + type: string + enum: + - file + - folder + description: > + Flag to indicate pending upload default (for linking to not-yet-existing + paths). + + file: Assume pending uploads are files. + + folder: Assume pending uploads are folders. + GetSharedLinksError: + type: object + properties: + path: + type: string + .tag: + title: Choice of GetSharedLinksError + type: string + enum: + - path + - other + description: | + path: None + other: None + RelocationBatchJobStatus: + type: object + properties: + failed: + $ref: '#/components/schemas/RelocationBatchError' + .tag: + title: Choice of RelocationBatchJobStatus + type: string + enum: + - in_progress + - complete + - failed + complete: + $ref: '#/components/schemas/RelocationBatchResult' + description: | + in_progress: The asynchronous job is still in progress. + complete: The copy or move batch job has finished. + failed: The copy or move batch job has failed with exception.