%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/public/ |
| Current File : /home/graphicd/public_html/vebto/public/swagger.yaml |
openapi: 3.0.0
info:
description: "Access token should be sent along with every request to SITE_NAME API in authorization header: `Authorization: Bearer <Token>` <br> This token can either be acquired via `auth/login` endpoint or from account settings page on [SITE_NAME website](SITE_URL/account/settings)."
version: "1.0.0"
title: SITE_NAME API
security:
- accessToken: [ ]
tags:
- name: Uploads
description: Upload files to SITE_NAME
- name: Chunked Uploads
description: Upload files using chunked uploading
- name: Auth
description: Authenticate requests to the API
- name: Files and Folders
description: FileEntry refers to either a file or folder on SITE_NAME
- name: Sharing
description: Manage file entry collaborators
- name: Starring
description: Mark or unmark entries as starred
- name: Shareable Links
description: Manage shareable links for file or folder
paths:
/uploads:
post:
tags:
- Uploads
summary: Upload a file to SITE_NAME
operationId: upload
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: Content of file to upload to SITE_NAME
parentId:
type: integer
description: ID of folder where this file should be uploaded, `null` will upload to root
example: null
relativePath:
type: string
description: "Folders in the path provided here will be auto created, if they don't exist already. This is mainly useful when uploading a folder from browser. It should include original filename as well: <br> `/some/folders/here/file-name.jpg`"
responses:
'201':
description: File was uploaded
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
fileEntry:
$ref: '#/components/schemas/FileEntry'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
/uploads/sessions/load:
post:
tags:
- Chunked Uploads
operationId: loadUploadSession
description: "This will either create a new upload session for specified `fingerprint`, or load an existing one if it was previously created.<br><br>All parameters for chunked uploading should be included via headers and prefixed with `Be-`"
parameters:
- in: header
name: "Be-Fingerprint"
required: true
schema:
type: string
description: Unique fingerprint for the file. Can be checksum of file content or serialized string from file name, content length and last modified date. This fingerprint will need to be sent to SITE_NAME when uploading each chunk.
- in: header
name: "Be-Chunk-Count"
required: true
schema:
type: integer
description: Total number of chunks for the file (file size / chunk size usually)
example: 15
- in: header
name: "Be-Original-Filename"
required: true
schema:
type: string
example: image.png
- in: header
name: "Be-Metadata"
schema:
type: string
description: "Additional metadata. Value should be base64 encoded"
example: "key1: value1, key2: value2, key3: value3"
responses:
'200':
description: Upload Session was created or existing one loaded. If file was already fully uploaded for this session `fileEntry` will be included and no further actions are required.
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
uploadedChunks:
type: array
items:
type: object
properties:
number:
type: integer
description: Number (index) of the chunk
size:
type: integer
description: Size of the chunk in bytes
fileEntry:
$ref: '#/components/schemas/FileEntry'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
/uploads/sessions/chunks:
post:
tags:
- Chunked Uploads
operationId: uploadChunk
description: "Uploads a sinle file chunk to SITE_NAME.<br><br>All parameters for chunked uploading should be included via headers and prefixed with `Be-`"
parameters:
- in: header
name: "Be-Fingerprint"
required: true
schema:
type: string
description: Unique fingerprint for the file. Can be checksum of file content or serialized string from file name, content length and last modified date. This fingerprint will need to be sent to SITE_NAME when uploading each chunk.
- in: header
name: "Be-Chunk-Count"
required: true
schema:
type: integer
description: Total number of chunks for the file (file size / chunk size usually)
example: 15
- in: header
name: "Be-Chunk-Index"
required: true
schema:
type: integer
description: Index of this chunk
example: 3
- in: header
name: "Be-Original-Filename"
required: true
schema:
type: string
example: image.png
- in: header
name: "Be-Metadata"
schema:
type: string
description: "Additional metadata. Value should be base64 encoded"
example: "key1: value1, key2: value2, key3: value3"
responses:
'200':
description: Chunk was uploaded. If all chunks have been uploaded already for this session `fileEntry` will be included and no further actions are required.
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
fileEntry:
$ref: '#/components/schemas/FileEntry'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
/entries:
get:
tags:
- Files and Folders
summary: Get file entries
description: Get the list of all file entries you have access to
operationId: indexEntry
parameters:
- name: perPage
in: query
description: How many entries to return per page
schema:
type: "integer"
format: "int64"
default: 50
- name: deletedOnly
in: query
description: Whether only trashed entries should be returned
schema:
type: "boolean"
- name: starredOnly
in: query
description: Whether only starred entries should be returned
schema:
type: "boolean"
- name: recentOnly
in: query
description: Whether only recent entries should be returned
schema:
type: "boolean"
- name: sharedOnly
in: query
description: Whether only entries that have been shared with you should be returned
schema:
type: "boolean"
- name: query
in: query
description: Search query entry names should be filtered on
schema:
type: "string"
- name: type
in: query
description: File type entries should be filtered on
schema:
type: "string"
enum:
- "folder"
- "image"
- "text"
- "audio"
- "video"
- "pdf"
- name: parentIds
in: query
description: Only entries that are children of specified folders will be returned
explode: false
schema:
type: array
items:
type: string
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FileEntry'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
put:
tags:
- Files and Folders
summary: Update an existing file entry
operationId: entryUpdate
responses:
'200':
description: Entry updated
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
fileEntry:
$ref: '#/components/schemas/FileEntry'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
example: 'New name for the entry'
description:
type: string
example: 'New description for the entry'
delete:
tags:
- Files and Folders
summary: Move entries to trash or delete permanently
operationId: entriesDelete
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
entryIds:
description: list of entry IDs to delete
type: array
items:
type: string
deleteForever:
description: Whether entries should be deleted permantently, instead of being moved to trash
type: string
example: false
responses:
'200':
description: Entries deleted successfully
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
/folders:
post:
tags:
- Files and Folders
summary: Create a new folder
operationId: createFolder
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
example: "new folder name"
parentId:
type: integer
description: "ID of parent folder or null if it should be created at root"
example: null
responses:
'200':
description: Folder created
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
folder:
$ref: '#/components/schemas/FileEntry'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
/entries/move:
post:
tags:
- Files and Folders
summary: Movie specified entries to a different folder
operationId: entriesMove
responses:
'200':
description: File entries moved successfully
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
entries:
type: array
items:
$ref: '#/components/schemas/FileEntry'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
requestBody:
content:
application/json:
schema:
type: object
required:
- entryIds
properties:
entryIds:
description: List of entry ids
type: array
items:
type: integer
format: "int32"
destination:
type: integer
format: "int32"
description: ID of folder specified entries should be moved to
example: null
/entries/copy:
post:
tags:
- Files and Folders
summary: Copy specified entries to a folder
operationId: entriesCopy
responses:
'200':
description: File entries copied successfully
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
entries:
type: array
items:
$ref: '#/components/schemas/FileEntry'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
requestBody:
content:
application/json:
schema:
type: object
required:
- entryIds
properties:
entryIds:
description: List of entry ids
type: array
items:
type: integer
format: "int32"
destination:
type: integer
format: "int32"
description: ID of folder specified entries should be moved to
example: null
/entries/restore:
post:
tags:
- Files and Folders
summary: Restore file entries from trash to original folder
operationId: entriesRestore
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- entryIds
properties:
entryIds:
description: List of entry IDs
type: array
items:
type: integer
format: "int32"
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
/entries/add-users:
post:
tags:
- Sharing
summary: Share file or folder with specified users
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
entryIds:
type: array
items:
type: integer
emails:
type: array
items:
type: string
example: example@gmail.com
permissions:
type: array
items:
type: string
example: edit
enum:
- view
- edit
- download
responses:
'200':
description: Shared file entry successfully
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
users:
type: array
items:
$ref: '#/components/schemas/User'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
/entries/update-user/{userId}:
put:
tags:
- Sharing
summary: Change permissions user has for shared entries
parameters:
- in: path
name: userId
schema:
type: integer
required: true
requestBody:
content:
application/json:
schema:
type: object
properties:
entryIds:
type: array
items:
type: integer
permissions:
type: array
items:
type: string
example: edit
enum:
- view
- edit
- download
responses:
'200':
description: Changed permissions successfully
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
users:
type: array
items:
$ref: '#/components/schemas/User'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
/entries/remove-user/{userId}:
delete:
tags:
- Sharing
summary: Unshare file or folder with specified user
parameters:
- in: path
name: userId
schema:
type: integer
example: 1
required: true
description: ID of the user with whom entries should be unshared
- in: query
name: entryIds
description: list of entry IDs to unshare with user
schema:
type: array
items:
type: string
example: 1
responses:
'200':
description: Unshared file entry successfully
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
users:
type: array
items:
$ref: '#/components/schemas/User'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
/entries/star:
post:
tags:
- Starring
summary: Mark specified entries as starred
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
entryIds:
type: array
items:
type: integer
responses:
'200':
description: Marked as starred successfully
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
tag:
$ref: '#/components/schemas/Tag'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
/entries/unstar:
post:
tags:
- Starring
summary: Unmark specified entries as starred
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
entryIds:
type: array
items:
type: integer
responses:
'200':
description: Unmarked as starred successfully
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
tag:
$ref: '#/components/schemas/Tag'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
/entries/{entryId}/shareable-link:
get:
tags:
- Shareable Links
summary: Retrieve shareable link for specified entry
operationId: getShareableLink
parameters:
- name: entryId
in: path
description: ID or hash of entry for which to get shareable link
required: true
schema:
type: integer
format: int64
minimum: 1
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Shareable-Link-Response'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'404':
description: File entry or shareable link not found
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
post:
tags:
- Shareable Links
summary: Create new shareable link for specified entry
operationId: createShareableLink
parameters:
- name: entryId
in: path
description: ID or hash of entry for which to get shareable link
required: true
schema:
type: integer
format: int64
minimum: 1
requestBody:
content:
application/json:
schema:
type: object
properties:
password:
type: string
example: "new password"
expires_at:
type: string
description: "2021-03-06T17:34:00.000000Z"
allow_edit:
type: boolean
example: false
allow_download:
type: boolean
example: false
responses:
'200':
description: Shareable link created
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
link:
$ref: '#/components/schemas/ShareableLink'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
/shareable-link/{linkId}:
put:
tags:
- Shareable Links
summary: Update shareable link details
operationId: updateShareableLink
parameters:
- name: linkId
in: path
description: ID of the link that needs to be deleted
required: true
schema:
type: integer
format: int64
minimum: 1
requestBody:
content:
application/json:
schema:
type: object
properties:
password:
type: string
example: "new password"
expires_at:
type: string
description: "2021-03-06T17:34:00.000000Z"
allow_edit:
type: boolean
example: false
allow_download:
type: boolean
example: false
responses:
'200':
description: Shareable link updated
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
link:
$ref: '#/components/schemas/ShareableLink'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'404':
description: Shareable link not found
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
delete:
tags:
- Shareable Links
summary: Delete shareable link by ID
operationId: deleteShareableLink
parameters:
- name: linkId
in: path
description: ID of the link that needs to be deleted
required: true
schema:
type: integer
format: int64
minimum: 1
responses:
'200':
description: Shareable link deleted
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'404':
description: Shareable link not found
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
/auth/register:
post:
security:
[ ]
tags:
- Auth
summary: Register for a new account
operationId: register
responses:
'200':
description: User registered
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
user:
$ref: '#/components/schemas/User'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
email:
type: string
example: 'example@gmail.com'
password:
type: string
example: 'password'
device_name:
type: string
example: 'iphone 12'
/auth/login:
post:
security:
[ ]
tags:
- Auth
summary: Get access token
description: "Logs in specified user and returns user object along with access token. <br><br> Access Token is a string that enables SITE_NAME to verify that a request belongs to an authorized session. This token should be sent along with every request to SITE_NAME API in a authorization header: `Authorization: Bearer <Token>`."
operationId: login
responses:
'200':
description: Operation successful
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
user:
$ref: '#/components/schemas/User'
'401':
$ref: '#/components/schemas/401-Response'
'403':
$ref: '#/components/schemas/403-Response'
'422':
description: Invalid data specified
content:
application/json:
schema:
$ref: '#/components/schemas/422-Response'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
email:
type: string
example: 'example@gmail.com'
password:
type: string
example: 'password'
device_name:
type: string
example: 'iphone 12'
components:
schemas:
FileEntry:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
example: image.png
file_name:
type: string
example: j6oWHDG1z613UqFHLZpE1Yrqngw0N8XLuGNLNWJV
description: actual file name for this entry on storage
file_size:
type: integer
format: int64
example: 111863
description: In bytes
parent_id:
type: integer
format: int64
example: 1
description: Parent folder ID
parent:
$ref: '#/components/schemas/FileEntry'
thumbnail:
type: string
example: thumbnail.png
description: Relative path to thumbnail image for the file (if it exists)
mime:
type: string
example: image/png
url:
type: string
example: secure/uploads/3260
description: relative url for previewing file or folder contents
hash:
type: string
example: MzI2MHxwYWRkaQ
type:
type: string
enum:
- "image"
- "folder"
- "text"
- "audio"
- "video"
- "pdf"
description:
type: string
example: Example description entered by user
deleted_at:
type: string
example: "2021-02-23T14:42:38.000000Z"
description: date entry was moved to trash (if it's in trash currently)
created_at:
type: string
example: "2021-02-23T14:42:38.000000Z"
description: date entry was uploaded
updated_at:
type: string
example: "2021-02-23T14:42:38.000000Z"
description: date entry was last modified (content, name or location changed)
path:
type: string
example: "3260/3261/3262"
description: full path of parent folder IDs for this entry up to root
users:
type: array
items:
type: object
properties:
id:
type: integer
format: int64
email:
type: string
example: "example@gmail.com"
User:
type: object
properties:
id:
type: integer
format: int64
access_token:
type: string
description: Access token that can be used to authenticate API requests for this user
display_name:
type: string
first_name:
type: string
last_name:
type: string
email:
type: string
created_at:
type: string
example: "2021-02-23T14:42:38.000000Z"
updated_at:
type: string
example: "2021-02-23T14:42:38.000000Z"
Tag:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
xml:
name: Tag
ShareableLink:
type: object
properties:
id:
type: integer
format: int64
hash:
type: string
example: 3h8N1nxZq7WtyRmXDIosFupSl9MCrD
description: ID for link that will be visible in url
password:
type: string
example: $2y$10$BI8kz6zFeB0CA0P425eMSe7KJcm8OKjWijHTQrRP.cjqRtynMq4Sy
description: Passwords are hashed, so this will not match the password that was entered in plain text
user_id:
type: integer
format: int64
description: ID of user that created this link
entry_id:
type: integer
format: int64
description: ID of file entry this link is attached to
entry:
$ref: '#/components/schemas/FileEntry'
expires_at:
type: string
example: "2021-03-06T17:34:00.000000Z"
allow_edit:
type: boolean
example: false
allow_download:
type: boolean
example: false
Shareable-Link-Response:
type: object
properties:
status:
type: string
example: success
link:
$ref: '#/components/schemas/ShareableLink'
folderChildren:
description: If link is for folder, this will list immediate children of that folder
type: array
items:
$ref: '#/components/schemas/FileEntry'
errors:
type: object
properties:
some_data_1:
type: string
example: Error message for data 1
some_data_2:
type: string
example: Error message for data 2
401-Response:
description: Unauthenticated. Either access token is not provided or is invalid.
403-Response:
description: Unauthorized access. You don't have permissions required to perform this operation.
422-Response:
type: object
properties:
status:
type: string
example: error
message:
type: string
example: 'Reason for the error'
errors:
type: object
properties:
some_data_1:
type: string
example: Error message for data 1
some_data_2:
type: string
example: Error message for data 2
securitySchemes:
accessToken:
type: http
scheme: bearer