Skip to content

Authentication

All the following routes require the usual authentication header. But you can also use other ways of authentication:

  • For the download routes, you can use a token generated by the /internal/services/documents/v1/companies/:company_id/download/token route (see bellow).
  • All the routes can use a query string ?public_token=token to authenticate the user.
  • All the routes can use a query string ?twake_tab_token=token to authenticate the user in the context of a channel tab for instance.

Navigation and drive capabilities

Fetch a drive item

Used to fetch a drive item

URL : /internal/services/documents/v1/companies/:company_id/item/:id

Method : GET

Auth required : Yes

Success Response

Code : 200 OK

Content example

javascript
{
  item: {
    id: string;
    company_id: string;

    parent_id: string;
    in_trash: boolean;
    is_directory: string;
    name: string;
    extension: string;
    description: string;
    tags: [];

    added: string;
    last_modified: string;
    last_version_cache: DriveItemVersion;

    access_info: DriveItemAccessInfo;
  }
  versions: {
    id: string;

    provider: string | "drive" | "internal";
    file_id: string;
    file_metadata: FileMetadata;

    date_added: number;
    creator_id: string;
    application_id: string;
  }
  [];
  children: {
    id: string;
    company_id: string;

    parent_id: string;
    in_trash: boolean;
    is_directory: string;
    name: string;
    extension: string;
    description: string;
    tags: [];

    added: string;
    last_modified: string;
    last_version_cache: DriveItemVersion;

    access_info: DriveItemAccessInfo;
  }
  [];
}

Error Responses

If the item cannot be fetched the server will return an error with one of the following status codes:

  • 401 Unauthorized - The user is not authorized.
  • 500 Internal Server Error - An error occurred while performing the operation.

Create a drive item

Used to create a drive item

URL : /internal/services/documents/v1/companies/:company_id/item

Method : POST

Headers: Content-Type: application/json OR Content-Type: multipart/form-data

Auth required : Yes

Data constraints

javascript
{
  item: {
      id: string;
      company_id: string;

      parent_id: string;
      in_trash: boolean;
      is_directory: string;
      name: string;
      extension: string;
      description: string;
      tags: [];

      added: string;
      last_modified: string;
      last_version_cache: DriveItemVersion;

      access_info: DriveItemAccessInfo;
  },
  version: {
      id: string;

      provider: string | 'drive' | 'internal';
      file_id: string;
      file_metadata: FileMetadata;

      date_added: number;
      creator_id: string;
      application_id: string;
  },
  file?: File // The multipart/form-data file to be uploaded ( optional )
}

Success Response

Code : 200 OK

Error Responses

If the request is missing required fields or the item cannot be created, the server will return an error with one of the following status codes:

  • 400 Bad Request - The request is missing required fields.
  • 401 Unauthorized - The user is not authorized.
  • 500 Internal Server Error - An error occurred while performing the operation.

Update a drive item

Used to update a drive item

URL : /internal/services/documents/v1/companies/:company_id/item/:id

Method : POST

Auth required : Yes

Data constraints

javascript
{
  id: string;
  company_id: string;

  parent_id: string;
  in_trash: boolean;
  is_directory: string;
  name: string;
  extension: string;
  description: string;
  tags: [];

  added: string;
  last_modified: string;
  last_version_cache: DriveItemVersion;

  access_info: DriveItemAccessInfo;
}

Success Response

Code : 200 OK

Error Responses

If the request is missing required fields or the item cannot be updated, the server will return an error with one of the following status codes:

  • 400 Bad Request - The request is missing required fields.
  • 401 Unauthorized - The user is not authorized.
  • 500 Internal Server Error - An error occurred while performing the operation.

Delete a drive item

Used to delete a drive item

URL : /internal/services/documents/v1/companies/:company_id/item/:id

Method : DELETE

Auth required : Yes

Success Response

Code : 200 OK

Create a drive item version

Used to create a drive item version

URL : /internal/services/documents/v1/companies/:company_id/item/:id/version

Method : POST

Auth required : Yes

Data constraints

javascript
{
  id: string;

  provider: string | 'drive' | 'internal';
  file_id: string;
  file_metadata: {
      source: 'internal' | 'drive' | string;
      external_id: string | any;

      name?: string;
      mime?: string;
      size?: number;
      thumbnails?: {
          index: number;
          id: string;

          type: string;
          size: number;
          width: number;
          height: number;

          url: string;
          full_url?: string;
      }[];
  };

  date_added: number;
  creator_id: string;
  application_id: string;
}

Success Response

Code : 200 OK

Download

Get a download token

Before to download, if you can't pass an authorisation token (for example in the browser context) you can generate a token that you will pass in the query string to download the file using the next routes.

URL : /internal/services/documents/v1/companies/:company_id/item/download/token?items=id1,id2,id3&version_id:optional_id

Method : GET

Auth required : Yes

Success Response

{
  "token": string
}

Download

Shortcut to download a file (you can also use the file-service directly). If the item is a folder, a zip will be automatically generated.

URL : /internal/services/documents/v1/companies/:company_id/item/:id/download?version_id=:optional_id

Method : GET

Auth required : Yes

Zip download

Used to create a zip archive containing the requested drive items ( files and folders ).

URL : /internal/services/documents/v1/companies/:company_id/item/download/zip?items=id1,id2,id3

Method : GET

Auth required : Yes

Tabs (for Twake)

If you want to use the Twake tabs, you must store the configuration of the tabs in the database.

Get tab configuration

Get a tab configuration to get the attached folder/document id.

URL : /internal/services/documents/v1/companies/:company_id/tabs/:id

Method : GET

Auth required : Yes

Success Response

{
  "company_id": string;
  "tab_id": string;
  "channel_id": string;
  "item_id": string;
  "level": "read" | "write";
}

Set tab configuration

Get a tab configuration to get the attached folder/document id.

URL : /internal/services/documents/v1/companies/:company_id/tabs/:id

Method : POST

Auth required : Yes

Data constraints :

{
  "company_id": string;
  "tab_id": string;
  "channel_id": string;
  "item_id": string;
  "level": "read" | "write";
}

Success Response

{
  "company_id": string;
  "tab_id": string;
  "channel_id": string;
  "item_id": string;
  "level": "read" | "write";
}