{ "opencollection": "1.0.0", "info": { "name": "Resourcly analytics storage API", "version": "1.0.0" }, "items": [ { "info": { "name": "storage", "type": "folder" }, "items": [ { "info": { "name": "Get download URL", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/storage/download-url", "params": [ { "name": "business_node_id", "value": "", "type": "query", "description": "Leaf business node ID" }, { "name": "key", "value": "", "type": "query", "description": "Node-relative file key" }, { "name": "disposition", "value": "", "type": "query", "description": "\\" } ] }, "docs": "Returns a V4 signed GET URL for the file. By default the URL forces a download (Content-Disposition attachment); with disposition=inline it renders in the browser with the object's own Content-Type (used for previews)." }, { "info": { "name": "Create folder", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/storage/folders" }, "docs": "Creates an empty folder (zero-byte placeholder object) in the given directory of the business node's storage space. Refused with 409 inside folders synced from an external data source." }, { "info": { "name": "List storage directory", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/storage/list", "params": [ { "name": "business_node_id", "value": "", "type": "query", "description": "Leaf business node ID (root of the storage space)" }, { "name": "path", "value": "", "type": "query", "description": "Directory path relative to the node root (empty = root)" }, { "name": "page_token", "value": "", "type": "query", "description": "Opaque page token from a previous response" }, { "name": "page_size", "value": "", "type": "query", "description": "Items per page (default 200, max 1000)" } ] }, "docs": "Lists one level of files and folders in the business node's storage space. Page through with page_token; an empty next_page_token means the level is exhausted. Folder keys can repeat across pages and should be deduped client-side." }, { "info": { "name": "Delete file or folder", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/storage/objects", "params": [ { "name": "business_node_id", "value": "", "type": "query", "description": "Leaf business node ID" }, { "name": "key", "value": "", "type": "query", "description": "Node-relative key (folder keys may end with /)" }, { "name": "type", "value": "", "type": "query", "description": "\\" } ] }, "docs": "Deletes a single file, or every object under a folder key. Type must be \"file\" or \"folder\". Deleting a folder synced from an external data source (or a folder containing one) also disconnects that data source; items INSIDE a synced folder cannot be deleted (409), and deletion is refused with 409 while an affected sync is running." }, { "info": { "name": "Paste (copy/move) items", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/storage/paste" }, "docs": "Copies or moves a batch of files/folders (siblings from one folder level) into a destination directory, optionally in a different accessible business node. Both modes resolve name collisions with numeric \" (2)\" suffixes — nothing is overwritten. Moving a folder into itself or its own subtree is rejected. Nothing can be pasted INTO a folder synced from an external data source, and items inside a synced folder can be copied out but not moved (409). Partial failures return 200 with a failed list." }, { "info": { "name": "Prepare upload", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/storage/prepare-upload" }, "docs": "Returns the key an upload should use for the given file — unchanged when free, numerically suffixed (\"a.pdf\" → \"a (2).pdf\") when the name is already taken — plus a V4 signed PUT URL for exactly that key. PUT the file body to upload_url sending upload_headers verbatim: they carry an if-generation-match precondition (412 if the object appeared meanwhile — re-resolve and retry) and a content-length-range that GCS enforces on the actual received bytes (400 when over max_size_bytes). Called once per " }, { "info": { "name": "Rename or move", "type": "http" }, "http": { "method": "PUT", "url": "{{baseUrl}}/storage/rename" }, "docs": "Moves a file or folder (copy + delete) to a new key within the same business node. A folder move relocates every object under its prefix; the destination must not be inside the source, and a destination name that already exists is rejected with 409. Items inside a folder synced from an external data source cannot be renamed or moved, and nothing can move into one (409); renaming or moving the synced folder itself (or an ancestor) keeps its connection pointed at the new location." } ] } ], "bundled": true }