# Introduction to Djib

Universal Data Storage Parachain, powered by Solana

## Origin story

We have been helping different size organisations with the adoption of edge technologies, such as cloud service integration, blockchain and AI. When some of our clients decided to issue NFTs and asked us to mint and maintain their NFTs as well as the underlying technology, Solana, which combines solid scientific knowledge with exceptionally high throughput speed in a carbon neutral way, became an obvious choice. Thanks to the great tooling (such as Metaplex, Candymachine, etc.) on Solana, minting NFTs is an easy task. However, we found a potential mis-implementation and a gap in the Solana ecosystem which haven’t been addressed yet.

With some art and metadata you can easily mint an NFT and upload the asset literally anywhere. This means that even when the "immutable" flag on the NFT is set to “TRUE”, the token is mutable and can be updated without leaving any footprint on the blockchain. This is the mis-implementation. And the fact that – if you want to have your file storage on the blockchain, you need to choose external networks such as Arweave or Filecoin – is not only an expensive inconvenience for the user, but also an important leakage of value from a network point of view. These external networks require you to adopt their crypto currency which drains large amount of value that could have been easily injected to the Solana ecosystem.

We have been always following Solana and were searching for opportunity to contribute to the network in other meaningful ways and believe that the current proposal for the creation of Djib – a Solana-native file storage solution which ensures the true immutability of Solana-based NFTs – will have a significant positive impact on the both the completeness and economics of the Solana network.

## Read more

{% content-ref url="/pages/n5YMYtXuhfdrByFwJYlk" %}
[Djib Dashboard](/products/djib-dashboard)
{% endcontent-ref %}

{% content-ref url="/pages/ixcrNiCUYeAZ9NaLCBed" %}
[Vanilla](/products/vanila)
{% endcontent-ref %}

{% content-ref url="/pages/nJA0TLhvpeb3rusRm9Mp" %}
[Djib-cli](/products/djib-cli)
{% endcontent-ref %}


# Cambrian Explosion of NFTs​

![](/files/HQ4Fka8ulO2tHa0okelK)


# The NFT Storage Problem

#### Recent proliferation of NFTs, but most blockchains:

* Lack native file storage for NFTs and rely on external chains
* Do not provide built-in portability of NFTs across blockchains
* Have design flaws that compromise immutability of the underlying files


# Case study: Solana

* Solana is fast and one the best networks with high throughput but there is no Solana native file storage project
* Solana NFTs are not immutable and can be modified even when immutable flag set to “TRUE”!
* Usage of Filecoin and Arweave is costly:
  * Split user experience
  * Loss of large amount of the value that could have been captured in the Solana ecosystem, but flows out into other networks


# Solution – Djib

Universal File Storage Parachain

Universal blockchain file system parachain, bringing to every blockchain the ability to issue immutable, interoperable NFTs

![](/files/inecdZRLsmgaHXFjIvNi)

Djib is a utility token for Djib platform in which a lifetime guarantee of the 1GB of file storage for each Djib.

Meaning that privacy and security is all your file is guaranteed and you can upload store and share up to one GB of data on Djib platform

Djib is a decentralized dropbox that can be used by various blockchains

Djib enables the broader adoption of the creation of NFT tokens from almost anything (e.g., not only artwork, but also certificates of good standing by regulatory bodies, notaries , law firms, any other documents).

Djib also wants to revolutionize the way that we store data.


# Pilot Implementation on Solana

Djib is implemented as a decentralized and censorship resistant Dropbox on Solana.

Provides a breakthrough storage technology that uses Solana as financial instrument to incentivise contributors.

Takes NFTs to the next level and allows minting NFTs from almost everything by giving better tooling to developers and the Solana community to mint NFTs.

Ensures immutability of the Solana NFTs.

Enhances the Solana ecosystem to enable harness of value and prevents leakage of value from the Solana network to other networks.

![](/files/UgEDYIihC0kDIa2ALuyd)

{% hint style="info" %}
**Why Solana?**

Let stand on the shoulders of giants

Solana ease the financial activities within the network with a very low fee

Fast and low cost on transactions

Good to be used on incentivizing
{% endhint %}


# Architecture

{% hint style="info" %}
**Good to know:** Splitting your product into fundamental concepts, objects, or areas can be a great way to let readers deep dive into the concepts that matter most to them.
{% endhint %}


# intro

Djib network is consists of three other networks:

* Cache network (CDN Layer)
* IPFS Cluster
* Persistence Layer

![](/files/edMz9e26n0A8s19Z0TZw)


# CDN Layer

Cache network

Djib uses a distributed content delivery network (CDN) that combines and utilizes currently existing CDNs and our proprietary Service delivery, this layer of our network is installed on top of entire network to serve clients better (multi-CDN, or CDN of CDNs)

The layer consists of

* Public CDN
* Djib cache nodes

![](/files/eBHiGESbiMIuGbYXtPMA)

### Djib Multi-CDN Architecture

Djib CDN is a one of the CDNs in the cache network which this CDN initially will be maintained by Djib, and by 2023 it is planned to be delivered to the community. By providing bandwidth, storage and small computational power each percipient will receive Djib token as incentive, by being an edge server in the network you will get some coins.

![](/files/ftzplqrybAGokbg94PDq)

### Benefits of Multi-CDN Approach

A Content Delivery Network (CDN) is a **group of geographically-distributed servers which help you deliver your content faster to users.** However, CDNs can perform differently at different times or in different locations. They can experience outages and slowdowns. With a multi-CDN strategy your content is hosted with more than one CDN provider, enabling you to drive better application performance and in many cases, lower costs.

Individual CDN providers, while they operate large commercial networks, do not have unlimited capacity. Large peaks in traffic may overwhelm your CDN provider. Also, CDNs can experience regional or even global outages. With Multi CDN, in case of a problem you can immediately divert traffic to another CDN which is up and running.

If a CDN is compromised, or taken down by a DDoS attack, it can take out thousands of websites relying on that CDN to deliver content. Having multiple CDN providers reduces this risk, because it’s highly unlikely attackers will take out two or more CDN providers at the same time.


# IPFS layer

The Interplanetary File System (IPFS) is a protocol and peer-to-peer network for storing and sharing data in a distributed file system.

IPFS uses content-addressing to uniquely identify each file in a global namespace connecting all computing devices.

Djib is running a cluster of IPFS which is open to community to join by joining to this cluster node owner will be incentivized

![](/files/g2wC47JtrQaSxyQTez2g)

### IPFS Cluster Architecture

The IPFS Cluster software consists of three binary files:

* ipfs-cluster-service runs a Cluster peer (similar to ipfs daemon) using a configuration file and by storing some information on disk.
* ipfs-cluster-ctl is used to communicate with a Cluster peer and perform actions such as pinning IPFS CIDs to the Cluster.
* ipfs-cluster-follow runs a follower Cluster peer. It can be used as a substitute for ipfs-cluster-service for this specific use case and mixes some service and ctl features.

The Cluster peer communicates with the IPFS daemon using the HTTP API (localhost:5001). The IPFS daemon must be launched and running separately.

Usually, ipfs-cluster-ctl is used on the same machine or server on which ipfs-cluster-service is running. For example, ipfs-cluster-ctl pin add \<hash> will instruct the local Cluster peer to submit a pin to the Cluster. The different peers in the Cluster will then proceed to ask their local IPFS daemons to pin that content. The number of pins across the Cluster will depend on the replication factor set in the Cluster configuration file.

#### The Cluster swarm

IPFS Cluster is a fully distributed application.

ipfs-cluster-service runs a Cluster peer and all peers are equal. Cluster peers form an separate, isolated libp2p \[private] network, which uses the cluster\_secret (a 32-bit hex-encoded passphrase present in the configuration of every peer).

This network does not interact with the main IPFS network, nor with other private IPFS networks and is solely used so that Cluster peers can communicate and operate.

The network uses a number of blocks also used by IPFS (DHT, PubSub, Bitswap…) but, unlike IPFS, does not enjoy public bootstrappers.

This means that Cluster peers will normally need their own bootstrappers (it can be any peer in the Cluster), although sometimes they can rely on mDNS discovery.

This also means that Cluster peers operate separately from IPFS with regards to NAT hole punching, ports etc.

#### The shared state: consensus

All peers in the Cluster maintain a global pinset. Making every peer maintain the same view of the pinset regardless of concurrent pinning operations and on a distributed application layout requires coordination given by what is called a consensus component. Cluster supports two implementations:

* a CRDT-based approach, based on Conflict-Free Replicated Datatypes
* a Raft-based approach, based on a popular log-based consensus algorithm

The relevant details and trade-offs between them are outlined in the Consensus Components section. The choice (which must be performed during initialization and cannot be easily changed), heavily affects the procedures for adding, removing and handling failures in Cluster peers.

The shared state can be inspected with ipfs-cluster-ctl pin ls and is the only piece of information present locally in every peer. Pin status (status) information, or peers information (peers ls) for other than the peer that is running the command, must be obtained at runtime from their respective peers and assembled together.

read more [here](https://cluster.ipfs.io/documentation/deployment/architecture/)


# Persistance layer

Djib persistence layer is a High-Performance Object Storage. It can handle unstructured data such as photos, videos, log files, backups, and container images with the maximum supported object size of 5TB.

This is the supporting and foundation of the entire system, Djib constantly will add nodes to this layer every gigabyte capacity added to this layer emits release of one DJIB token. This is going to happen for next 60 years.

Djib will be compatible with other cloud storage such as S3, azure blob storage, etc, it also provides json rpc endpoint for developers to make use of this technology

![](/files/7wadSTT0ryf5jEBUEZzT)


# Official remittance addresses

**SOL:**  3cmZ1nS5XWW99zCQfnNALczzVepMfzmu8Y86Tfue844d\
**BSC:**  0x0BF8b93F90ad80ABB2449344DB3fA649E8e1Fd0A\
**ETH:**  0x0BF8b93F90ad80ABB2449344DB3fA649E8e1Fd0A


# Djib IPFS

a quick node add on facilitating interactions with IPFS network with guaranteed  pinning on the files

Djib IPFS is a serverless IPFS server provided by djib and accessible in quicknode. with this addon that can be simply activated on any of your nodes you can upload files on IPFS and have them automatically pinned with out owning / maintaining any IPFS NODE.&#x20;

Djib provides a user friendly dashboard inwhich you can simply upload adn interact with IPFS network and/or create access token in your setting and interact via rest APIs&#x20;


# Dashboard

in the dashboard you have 2 main items of my drive and settings

<figure><img src="/files/z2fcuDt4SfQG43OJB1k9" alt=""><figcaption><p>djib ipfs drive page</p></figcaption></figure>

you can create folders, and upload files in the folder you simply can export all the addresses on the file by clicking on export&#x20;

export will provide you list of unique paths to the assest on ipfs network.&#x20;

in setting page you can get a report of your consumption&#x20;

<figure><img src="/files/DFFwH5jKUo1a09uFvrcY" alt=""><figcaption></figcaption></figure>

and ultimately you can create access tokens to interact with apis&#x20;

<figure><img src="/files/jjPj29uza19V9LfbZgv9" alt=""><figcaption></figcaption></figure>

by providing the access key you will be able to interact with system apis( read more on api section).


# API

## upload file in to IPFS&#x20;

<mark style="color:green;">`POST`</mark> `https://api.djib.cloud/api/v1/ipfs/drive/upload`

#### Headers

| Name                                        | Type | Description |
| ------------------------------------------- | ---- | ----------- |
| X-API-Key<mark style="color:red;">\*</mark> |      |             |

#### Request Body

| Name                                    | Type | Description        |
| --------------------------------------- | ---- | ------------------ |
| files<mark style="color:red;">\*</mark> | file |                    |
| path                                    | /    | path to the folder |

{% tabs %}
{% tab title="200: OK " %}

```json
{
    "data": {
        "status": "OK"
    },
    "message": null,
    "status": 0
}
```

{% endtab %}
{% endtabs %}

<mark style="color:green;">`POST`</mark> `https://api.djib.cloud/api/v1/ipfs/drive/mkdir`

#### Request Body

| Name                                   | Type | Description                             |
| -------------------------------------- | ---- | --------------------------------------- |
| name<mark style="color:red;">\*</mark> |      | folder name                             |
| parent                                 | /    | parent folder, if empty it is root then |

{% tabs %}
{% tab title="200: OK " %}

```postman_json
{
    "data": {
        "status": "ok"
    },
    "message": null,
    "status": 0
}
```

{% endtab %}
{% endtabs %}

{% openapi src="/files/Xc1hjHIr7QX6xeCNyggy" path="/drive/ls" method="get" %}
[driveyml.yml](https://3144134972-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MrZ6BqPMP2mmJKSKsG8%2Fuploads%2F2w7KQIzlCZzWOBzuRBw7%2Fdriveyml.yml?alt=media\&token=50885c20-da81-47d1-95b9-84abd9700435)
{% endopenapi %}

{% openapi src="/files/Xc1hjHIr7QX6xeCNyggy" path="/drive/export" method="get" %}
[driveyml.yml](https://3144134972-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6MrZ6BqPMP2mmJKSKsG8%2Fuploads%2F2w7KQIzlCZzWOBzuRBw7%2Fdriveyml.yml?alt=media\&token=50885c20-da81-47d1-95b9-84abd9700435)
{% endopenapi %}


# Vanilla

**Djib Vanilla** (<https://vanilla.djib.io/>) is a **lightweight**, **secure**, and **censorship-resistant** web3.0 app to store and share files on the Djib network. With Djib Vanilla, you can upload and share files permanently and mint NFTs on Solana with no coding skill required.

you need to have a chrome extension Solana wallet such as Phantom. after signing in with your wallet vanilla.&#x20;

## No-Code Nft Minting

* select Mint NFT from , then Select Mint One&#x20;

<figure><img src="/files/zelXFQ9KjJdNArWMV9YL" alt=""><figcaption></figcaption></figure>

* now&#x20;

## upload and share files permanently&#x20;

First, connect to your wallet; you can choose any wallet from the list.

![](/files/tbN43XwxMVAGmi3smTFC)

Upload your files. After selecting the files, you can upload by clicking the Upload button.

![](/files/yPMjKxU3OQmbrbs9wTPC)

Your files will be uploaded and displayed to you. It is also possible to download the produced links.

![](/files/aBzNeqP9fRUqp0vqC14Y)


# Djib Dashboard


# My Drive

Djib drive is a file storage and best place for maintained that developed by Djuno.

## Usage

First, connect to your wallet.

![](/files/VvRIDIAZKuBSy3OBuDMr)

Upon your log in, you need a space to upload and share data, therefore choose the required space in a range between 1 GB to 5000 GB.

![](/files/fZHD0sOAi3VMksFmg1mp)

Drive created; and it let  you easily create new folder or upload any data.

![](/files/5BM6ZvVrIqCx4hkrNXn2)

By clicking on **Upload** button you can see two options;

1. Upload files: You can upload one or more files.
2. Upload folder: You can upload a folder with its contents.

![](/files/25FU7CH1yRtLcT7kYArE)

There are options for each item.

Folder options:

* Rename
* Move
* Copy
* Move to Trash
* Share
* Add to Favorites

File options:

* Rename
* Move
* Copy
* Move to Trash
* Share
* Add to Favorites
* Save as NFT
* Download


# Shared

![](/files/0t8DQfdC7EvEZhMIX8FA)

The **`Shared`** page has three sections:

* Shared with me: On this page you will see a list of items that have been shared with you.
* Shared by me: On this page you will see a list of items you have shared.
* Shared public: On this page, you will see a list of items that you have shared publicly. You can also use [Djib Vanilla](https://vanilla.djib.io/) for public sharing.

![](/files/2gAV6qAShjJUuZ5GuQyV)

When choosing an item to share, you have two options:

* Private share
* Public share


# NFTs

You can save the files you have on the drive as NFT.

![](/files/jeNqmarPLQdDO5r2M07p) ![](/files/i1LyAk2n6KT6ltZ4DBti)

By selecting the file to save as NFT, you will see the following medal.

![](/files/53Qv3OlUaHEWi3XSnQQZ)

If the file is an image type, you don't need to select a thumbnail, but if the file is a non-image type, you can select a thumbnail for it.

After saving and paying, you can see your NFT on the **`NFTs`** page

![](/files/bNAIrfcT2o2twN18nT2a)


# Recent

On this page you will see the files that you have recently uploaded.

![](/files/TNjgW3LjXTBcgUZE1SjJ)


# Favorites

On this page you will see a list of your favorite items.

![](/files/2Lgv8Iccd2gO00LOtuO8)

You can add items to your favorites or remove from favorites by selecting or right-clicking on an item.

![Add to Favorites](/files/ikz1mrl2F97zkFRvxsnG) ![Add to Favorites](/files/wR8TkGJsehgHcAO4RxYK) ![Remove from Favorites](/files/jXsnncnURRu7INM5zBvZ) ![Remove from Favorites](/files/oGKQUhVarGMYObhJ5Cht)


# Payments

In this App, you can make all payments in two ways:

1. Instant & direct payment
2. Payment by credit

On the profile page, you can top up your account.

![](/files/6x8RboZBuUxCPGlNx1bv)

By clicking the **`TOP UP`** button, you can enter the amount and after the payment is completed, your credit will be charged.

Also, all your transactions can be seen in the Recent Activity section.

![](/files/7NCENDgnwcC3O0rw1BmT) ![](/files/XjzAL6Q6H3d7YSHOHclG)

For each transaction, for example, buying storage or saving as NFT‌, the App will ask you how you want to pay?

![](/files/hfQro2qRq7B47Ln7AkxI)

By adding to your credit you can benefit from less network fees on blockchains.


# Profile

![](/files/exZ39K3kJBl2CI2y6pN4)

‌By clicking the button at the top of the page will take you to the profile page.

![](/files/c4MkWrArORknTCrbd16B)

In order to be able to use all the features of the app, you must complete your profile verify your email.

After entering the email and saving it, an email containing a link will be sent to you and by opening that link, your email will be confirmed.


# Trash

![](/files/z6Ys0wCiSepP0GLNCLCh)

Items in the trash can be restored or permanently deleted. You can also delete all trash items permanently by clicking the **`Empty Trash`** button.

⚠️ Items in your Trash will be deleted forever after 30 days.


# JSON RPC API

Djib protocol accept HTTP requests using the JSON-RPC 2.0 specification.

[JSON](http://json.org) is a lightweight data-interchange format. It can represent numbers, strings, ordered sequences of values, and collections of name/value pairs.

[JSON-RPC](http://www.jsonrpc.org/specification) is a stateless, light-weight remote procedure call (RPC) protocol. Primarily this specification defines several data structures and the rules around their processing. It is transport agnostic in that the concepts can be used within the same process, over sockets, over HTTP, or in many various message passing environments. It uses JSON ([RFC 4627](http://www.ietf.org/rfc/rfc4627.txt)) as data format.

Djib API is mainly implemented as [JSON RPC 2.0](https://www.jsonrpc.org/specification) with two exceptions:

1. The health check endpoint that provides a health-check mechanism for load balancers or other network infrastructure use.
2. Regular HTTP post to ensure large file support and multiple files supporting the upload and download endpoint.


# Request Formatting

### JSON RPC

To make a JSON-RPC request, send an HTTP POST request with a `Content-Type: application/json` header. The JSON request data should contain 4 fields:

* `jsonrpc: <string>`, set to `"2.0"`
* `id: <number>`, a unique client-generated identifying integer
* `method: <string>`, a string containing the method to be invoked
* `params: <array>`, a JSON array of ordered parameter values

Example using curl:

```shell
curl http://localhost:8899 -X POST -H "Content-Type: application/json" -d '
  {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "handshake",
    "params": [
      "6fUErqTM7DvkRE7czSPvU16qNmN3eHhJAZgmUbECgbC6"
    ]
  }
'
```

The response output will be a JSON object with the following fields:

* `jsonrpc: <string>`, matching the request specification
* `id: <number>`, matching the request identifier
* `result: <array|number|object|string>`, requested data or success confirmation

Requests can be sent in batches by sending an array of JSON-RPC request objects as the data for a single POST.


# Definitions

* **Hash:** A SHA-256 hash of a chunk of data.
* **PublicKey:** The public key of a Ed25519 key-pair.
* **Transaction:** A list of Solana instructions signed by a client keypair to authorize those actions.
* **Signature:** An Ed25519 signature of transaction's payload data including instructions. This can be used to identify transactions.
* **TrackingCode:** The public key of a Ed25519 key-pair.
* **Cid:** A *content identifier*, or CID, is a label used to point to material in IPFS.
* **Token:** An Ed25519 signature of transaction's payload data including instructions.


# API Reference

### Overview

[JSON](http://json.org) is a lightweight data-interchange format. It can represent numbers, strings, ordered sequences of values, and collections of name/value pairs.

[JSON-RPC](http://www.jsonrpc.org/specification) is a stateless, light-weight remote procedure call (RPC) protocol. Primarily this specification defines several data structures and the rules around their processing. It is transport agnostic in that the concepts can be used within the same process, over sockets, over HTTP, or in many various message passing environments. It uses JSON ([RFC 4627](http://www.ietf.org/rfc/rfc4627.txt)) as data format.

Djib API is mainly implemented as [JSON RPC 2.0](https://www.jsonrpc.org/specification) with two exceptions:

1. The health check endpoint that provides a health-check mechanism for load balancers or other network infrastructure use.
2. Regular HTTP post to ensure large file support and multiple files supporting the upload and download endpoint.

{% file src="/files/EjA76RYG6rAmhBoddKQD" %}
Postman Collection Template
{% endfile %}

### Endpoints

<table><thead><tr><th width="150">Network</th><th>Public Net</th><th>API</th></tr></thead><tbody><tr><td>Mainnet</td><td>https://public.djib.io</td><td>https://mainrpc.djib.io</td></tr><tr><td>Testnet</td><td>https://public.djib.io</td><td>https://testrpc.djib.io</td></tr><tr><td>Devnet</td><td>https://public.djib.io</td><td>https://devrpc.djib.io</td></tr></tbody></table>

### Error Codes

**JSON-RPC standard error code**

Standard error codes and their corresponding meanings are as follows:

| Code   | Message          | Definition                                                                                            |
| ------ | ---------------- | ----------------------------------------------------------------------------------------------------- |
| -32600 | Invalid Request  | The JSON sent is not a valid Request object.                                                          |
| -32601 | Method Not Found | The method does not exist / is not available.                                                         |
| -32602 | Invalid Params   | Invalid method parameter(s).                                                                          |
| -32603 | Internal Error   | Internal JSON-RPC error.                                                                              |
| -32700 | Parse Error      | Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text. |

#### Djib RPC Error Code

| Code   | Message                       | Definition                                                                                       |
| ------ | ----------------------------- | ------------------------------------------------------------------------------------------------ |
| -32001 | Invalid Form Params           | Invalid form params on non-rpc method                                                            |
| -32002 | Invalid Public Key            | Invalid Public Key                                                                               |
| -32003 | Invalid Size Unit             | Supported units are: KB for kilobytes, MB for megabytes, GB for gigabytes, and TB for terabytes. |
| -32004 | Authorization Error           | Identity is not correct.                                                                         |
| -32005 | Invalid Size Number           | Size must be a float number, greater than zero.                                                  |
| -32006 | Record Not Found              | Requested record does not exist.                                                                 |
| -32007 | Duplicated Record             | Requested record is duplicated.                                                                  |
| -32008 | Cloud Storage Not Found       | User has no cloud storage.                                                                       |
| -32009 | No Enough Storage             | User has no enough cloud storage.                                                                |
| -32010 | Parent Not Found              | Requested parent does not exist.                                                                 |
| -32011 | File Not Found                | Requested file does not exist.                                                                   |
| -32012 | Incorrect Email Address       | Submitted email is incorrect.                                                                    |
| -32013 | Duplicated Email Address      | Submitted email is duplicated.                                                                   |
| -32014 | Large Avatar File             | Avatar file is large. Maximum acceptable size is 1 MB.                                           |
| -32015 | Not Confirmed Profile         | User profile confirmation is not completed.                                                      |
| -32016 | File Invalid Access           | User has no access to target file or password is incorrect.                                      |
| -32017 | File Shared Previously        | Cannot share file, because file shared before.                                                   |
| -32018 | Invalid NFT MetaData          | Invalid Metadata for NFT.                                                                        |
| -32019 | Unexpected Error NFT Creation | Unexpected Error on creation NFT.                                                                |
| -32020 | NFT Payment Not Finalized     | Payment is not finalized to create NFT.                                                          |
| -32021 | Shared Not Found              | No shared object exist with given access token.                                                  |
| -32022 | Invalid Share Credentials     | Given credentials are invalid to access object.                                                  |
| -32023 | No Sharing Credentials        | Given access link required credentials.                                                          |
| -32024 | Insufficient Funds            | You should top up your credits.                                                                  |
| -32025 | Insufficient SOL              | Insufficient SOL for network fee payer.                                                          |
| -32026 | Insufficient DJIB             | Insufficient DJIB for paying.                                                                    |
| -32027 | Solana Error                  | Solana is busy now! Please try later! You can check Solana status on <https://status.solana.com> |
| -32028 | Transaction Failed            | Transaction failed on Solana. Signature:                                                         |
| -32029 | NFT Not Found                 | NFT not found.                                                                                   |
| -32030 | Invalid Avatar Format         | Avatar format is a html base64 encoded image: 'data:\<ImageContentType>;base64,\<Data>'          |

### Non-RPC API

## Health Check

<mark style="color:blue;">`GET`</mark> `https://{api_url}/health`

Provides a health-check mechanism for load balancers or other network infrastructure use. It always returns HTTP 200 OK response with a body of "ok", "degraded", or "unknown".

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "status": "ok"
}
```

{% endtab %}

{% tab title="200: OK " %}

```javascript
{
    "status": "degraded"
}
```

{% endtab %}

{% tab title="200: OK " %}

```javascript
{
    "status": "unknown"
}
```

{% endtab %}
{% endtabs %}

## Upload file(s)

<mark style="color:green;">`POST`</mark> `https://{api_url}/upload`

This method enables users to upload their files on the IPFS network and their drive.

#### Path Parameters

| Name                                        | Type   | Description                                                                                                                                      |
| ------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| files\[]<mark style="color:red;">\*</mark>  | file   | list of files to be uploaded on Djib network                                                                                                     |
| type<mark style="color:red;">\*</mark>      | String | <p><code>public</code></p><p>for public upload of files on Djib IPFS network,</p><p><code>private</code></p><p>for uploading to user's drive</p> |
| publicKey<mark style="color:red;">\*</mark> | String | the public address of the wallet owner of files                                                                                                  |
| token                                       | String | the access token that you have received from auth method; this method is required for the private mode                                           |
| path                                        | String | destination folder of file on your drive required only for private mode                                                                          |

#### Headers

| Name                                           | Type   | Description         |
| ---------------------------------------------- | ------ | ------------------- |
| Content-Type<mark style="color:red;">\*</mark> | String | multipart/form-data |

{% tabs %}
{% tab title="200: OK Success upload using public mode" %}

```javascript
{
    "result": [
        "{network_url}/<file hash>"
        ...
    ]
}
```

{% endtab %}

{% tab title="200: OK Success upload using private mode" %}

```javascript
{
    "result": [
        "<filepath>"
        ...
    ]
}
```

{% endtab %}
{% endtabs %}

## Download file

<mark style="color:blue;">`GET`</mark> `https://{api_url}/download`

This method enables users to download their file on their drive.

#### Path Parameters

| Name                                    | Type   | Description                                              |
| --------------------------------------- | ------ | -------------------------------------------------------- |
| token<mark style="color:red;">\*</mark> | String | the access token that you have received from auth method |
| path<mark style="color:red;">\*</mark>  | String | requested file destination on user drive                 |

#### Headers

| Name                                           | Type   | Description         |
| ---------------------------------------------- | ------ | ------------------- |
| Content-Type<mark style="color:red;">\*</mark> | String | multipart/form-data |

{% tabs %}
{% tab title="200: OK file downloaded" %}
raw binary file
{% endtab %}
{% endtabs %}

## Download shared file

<mark style="color:blue;">`GET`</mark> `https://{api_url}/download-shared`

This method enables users to download their shared file on their drive.

#### Path Parameters

| Name  | Type   | Description                                              |
| ----- | ------ | -------------------------------------------------------- |
| token | String | the access token that you have received from auth method |
| path  | String | requested file destination on user drive                 |

#### Headers

| Name         | Type   | Description         |
| ------------ | ------ | ------------------- |
| Content-Type | String | multipart/form-data |

## Confirm email

<mark style="color:blue;">`GET`</mark> `https://{api_url}/email-confirm/:token`

This method confirm user email

#### Path Parameters

| Name                                    | Type   | Description |
| --------------------------------------- | ------ | ----------- |
| token<mark style="color:red;">\*</mark> | String | Token       |

### RPC Methods

* [handshake](#handshake)
* [auth](#auth)
* [estimate](#auth-1)
* [createPayment](#createpayment)
* [confirmPayment](#getpaymentaddress)
* [buyStorage](#createdrive)
* [status](#status)
* [lsDrive](#statusdrive-1)
* [createFolder](#createfolder)
* [lsDrive](#lsdrive)
* [destroyDrive](#destroydrive)
* [shareFromDrive](#sharefromdrive)
* [search](#search)
* [recentFiles](#recentfiles)
* [moveTrash](#movetrash)
* [lsTrash](#lsdrive-1)
* [restoreFromTrash](#lsdrive-2)
* [setFavorite](#lsdrive-3)
* [lsFavorite](#lsdrive-4)
* [unsetFavorite](#unsetfavorite)
* [rename](#rename)
* [move](#move)
* [copy](#copy)
* [duplicate](#duplicate)
* [lsPublic](#lspublic)
* [savePublic](#lspublic-1)
* [lsFileShares](#lsfileshares)
* [lsShareWithMe](#copy-1)
* [lsShareByMe](#copy-2)
* [shareObject](#copy-3)
* [revokeShares](#copy-4)
* [getSharedByLink](#copy-5)
* [rmSharedWithMe](#copy-6)
* [deleteTrash](#copy-7)
* [emptyTrash](#copy-8)
* [getProfile](#copy-9)
* [setProfile](#copy-10)
* [resendVerificationEmail](#copy-11)
* [createTopUpPayment](#copy-12)
* [confirmTopUpPayment](#copy-13)
* [lsPayments](#lspayments)
* [lsDailyBalance](#lsdailybalance)
* [createNftPayment](#createnftpayment)
* [saveAsNft](#saveasnft)
* [uploadAsset](#uploadasset)
* [lsNfts](#lsnfts)
* [lsNftFamilies](#lsnftfamilies)

### handshake

Creates a message for signing private drive session authorization

**Parameters**

* `<string>`- A PublickKey of account as base-58 encoded string

**Results**

* `<string>` - An string message for signing on client wallet

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "handshake",
    "params": [
        "<PublicKey>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "Sign this message for authenticating with your wallet. Nonce: <NonceCode>",
    "id": 0
}
```

### auth

Returns an access token for authorizing a private drive session

**Parameters**

* `<string>`- A PublicKey of account as base-58 encoded string
* `<string>`- A signed message signature as base-58 encoded string

**Results**

* `<string>` - An access token as base-58 encoded string

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "auth",
    "params": [
            "<PublicKey>",
            "<Token>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "<Token>",
    "id": 0
}
```

### estimate

Estimates file storage price based on Djib Token for use on private drive storage or public drive uploading

**Parameters**

* `<string>` - Token
* `<number>`- Requested size
* `<string>`- Unit of size \["`KB`", "`MB`", "`GB`", "`TB`"]

**Results**

* `<float>` - Estimated price based on Djib Token

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "estimate",
    "params": [
            "<Token>",
            99614720,
            "KB"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": 94.633984,
    "id": 0
}
```

### createPayment

Creates [Solana Pay](https://docs.solanapay.com/) standard URL for paying Djib Token used on buying storage.

**Parameters**

* `<string>` - An access token as base-58 encoded string
* `<number>`- Requested size
* `<string>`- Unit of size \["`KB`", "`GB`", "`TB`"]

**Results**

* `<object>`- A JSON object containing:
  * `payment_url: <number>`- Solana Pay standard URL
  * `tracking_code: <string>`- A code to track transaction status&#x20;

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "createPayment",
    "params": [
            "<Token>"
            1048576,
            "KB"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": {
        "payment_url": "solana:<PublicKey:str>?amount=<Number:unsigned float>&spl-token=<PublicKey:str>&memo=djib&message=Thanks%21&label=DjibChain&reference=<TrackingCode:str>",
        "tracking_code": "<TrackingCode:str>"
    },
    "id": 0
}
```

### confirmPayment <a href="#confirmpayment" id="confirmpayment"></a>

Confirms the storage payment and returns the final status of payment.

**Parameters**

* `<string>` - An access token as base-58 encoded string
* `<string>` - A code to track transaction status

**Results**

* `<object>`- A JSON object containing:
  * `finalized: <string>` - Status of finalization
  * `signature: <string>` - Signature of transaction

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "confirmPayment",
    "params": [
       "<Token:str>",
       "<TrackingCode:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": {
        "finalized": true,
        "signature": "<Signature:str>"
    },
    "id": 0
}
```

### buyStorage

Buy drive storage on Djib private network. You can use a payment tracking code or credit balance.

**Parameters**

* `<string>` - An access token as base-58 encoded string
* `<object>` -  A JSON object containing:
  * `tracking_code: <string>` - TrackingCode of payment
  * `size: <string>` -  Requested size
  * `unit: <string>` - Unit of size \["`KB`", "`MB`", "`GB`", "`TB`"]
  * `ref_code: <string>` - PublicKey of invitation

**Results**

* `<object>`- A JSON object containing:
  * `<string>` - A status message \["`success`" or "`failed`"]

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "buyStorage",
    "params": [
       "<Token:str>",
        {
           "tracking_code": "<TrackingCode:str>",
           "size": 1,
           "unit": "<Text:str[KB,MB,GB,TB]>",
           "ref_code": "<Token:str>"
       }
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### status <a href="#status" id="status"></a>

Returns status of drive.

**Parameters**

* `<string>` - An access token as base-58 encoded string

**Results**

* `<object>`- A JSON object containing:
  * `cloud: <object>`- A JSON object containing
    * `used_size_kb: <float>`- Used size of drive storage in KB
    * `total_size_kb: <float>`- Total size of drive storage in KB
    * `created_at: <date>`- Date of drive creation
    * `updated_at: <date>`- Date of last modification on drive
  * `prizes: <array>`- Set of prizes&#x20;
  * `credit: <float>`- Credit balance

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "status",
    "params": [
       "<Token>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": {
        "cloud": {
            "used_size_kb": 0,
            "total_size_kb": 0,
            "created_at": "None",
            "updated_at": "None"
        },
        "prizes": [],
        "credit": 0.0
    },
    "id": 0
}
```

### claimPrize

Claims prizes for participatory activities

**Parameters**

* `<string>` - An access token as base-58 encoded string

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "claimPrize",
    "params": [
       "<Token>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### createFolder <a href="#createfolder" id="createfolder"></a>

Creates new folder on drive.

**Parameters**

* `<string>` - An access token as base-58 encoded string
* `<string>` - Path to folder
* `<string>` - Folder name

**Results**

* `<string>`- Created folder path

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "createFolder",
    "params": [
        "<Token:str>",
        "/",
        "<Text:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "<Text of path>",
    "id": 0
}
```

### **lsDrive** <a href="#lsdrive" id="lsdrive"></a>

Returns list of stored objects on drive.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- A Path of stored objects on drive

**Results**

* `<array>`- An array of JSON objects containing:
  * `file_name: <string>`- Path of stored object on drive
  * `extension: <string>`- Extension of stored object on drive
  * `size_byte: <float>`- Size of stored object on drive in bytes
  * `is_folder: <bool>`- Is stored object is folder or not
  * `is_favourite: <bool>`- Is stored object selected as favourite or not
  * `path: <string>`- A path to listed object
  * `parent: <string>`- A path to parent of listed object
  * `content_type: <string>`- The content\_type header of selcted file
  * `public_link: <string>`- Link of file on IPFS public network if file has been shared publicly
  * `created_at: <date>`- Date of object creation
  * `updated_at: <date>`- Date of last modification on object

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "lsDrive",
    "params": [
        "<Token:str>",
        "/"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": [
        {
            "file_name": "djib",
            "extension": "svg",
            "size_byte": 1,
            "is_folder": false,
            "is_favorite": false,
            "path": "/djib.svg",
            "parent": "/",
            "content_type": "image/svg+xml",
            "public_link": null,
            "created_at": "2022-05-19 09:58:48.836000",
            "updated_at": "2022-05-19 09:58:48.836000"
        }
    ],
    "id": 0
}
```

### destroyDrive

Destroys user drive and all contents except publicly shared files.

**Parameters**

* `<string>`- An access token as base-58 encoded string

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "destroyDrive",
    "params": [
        "<Token:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "result": "Coming Soon!",
    "id": 0,
    "jsonrpc": "2.0"
}
```

### shareFromDrive

Shares private objects on Djib public network.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- A path to file&#x20;

**Results**

* `<string>`- shared objects public URL

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "shareFromDrive",
    "params": [
        "<Token:str>",
        "/Object Path"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "https://devnet.djib.io/<Cid:str>",
    "id": 0
}
```

### search

Searches objects on drive.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Keyword&#x20;
* `<object>`- A JSON object containing:
  * `extension: <string>`- Extension of target object
  * `path: <string>`- Path to target object
* `<string>`- Name of object

**Results**

* `<array>`- An array of JSON objects containing:
  * `file_name: <string>`- Path of stored object on drive
  * `extension: <string>`- Extension of stored object on drive
  * `size_byte: <float>`- Size of stored object on drive in bytes
  * `is_folder: <bool>`- Is stored object is folder or not
  * `path: <string>`- A path to listed object
  * `parent: <string>`- A path to parent of listed object
  * `public_link: <string>`- Link of file on IPFS public network if file has been shared publicly
  * `created_at: <date>`- Date of object creation
  * `updated_at: <date>`- Date of last modification on object

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "search",
    "params": [
        "<Token:str>",
        "<Text:str>",
        {
            "extension": "png",
            "path": "/"
        }
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": [
        {
            "file_name": "djib",
            "extension": "svg",
            "size_byte": 1,
            "is_folder": false,
            "is_favorite": false,
            "path": "/djib.svg",
            "parent": "/",
            "content_type": "image/svg+xml",
            "public_link": null,
            "created_at": "2022-05-19 09:58:48.836000",
            "updated_at": "2022-05-19 09:58:48.836000"
        }
    ],
    "id": 0
}
```

### recentFiles

Returns list of recently interacted files on private drive.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<int>`- Number of recent files&#x20;

**Results**

* `<array>`- An array of JSON objects containing:
  * `file_name: <string>`- Path of stored object on drive
  * `extension: <string>`- Extension of stored object on drive
  * `size_byte: <float>`- Size of stored object on drive in bytes
  * `is_folder: <bool>`- Is stored object is folder or not
  * `path: <string>`- A path to listed object
  * `parent: <string>`- A path to parent of listed object
  * `public_link: <string>`- Link of file on IPFS public network if file has been shared publicly
  * `created_at: <date>`- Date of object creation
  * `updated_at: <date>`- Date of last modification on object

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "recentFiles",
    "params": [
        "<Token:str>",
        10
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": [
        {
            "file_name": "djib",
            "extension": "svg",
            "size_byte": 1,
            "is_folder": false,
            "is_favorite": false,
            "path": "/djib.svg",
            "parent": "/",
            "content_type": "image/svg+xml",
            "public_link": null,
            "created_at": "2022-05-19 09:58:48.836000",
            "updated_at": "2022-05-19 09:58:48.836000"
        }
    ],
    "id": 0
}
```

### moveTrash

Moves objects into trash.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<array>`- An array containing objects paths&#x20;

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "moveTrash",
    "params": [
        "<Token:str>",
        [
            "/Object Path"
        ]
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### **lsTrash** <a href="#lsdrive" id="lsdrive"></a>

Returns list of moved objects on trash.

**Parameters**

* `<string>`- An access token as base-58 encoded string

**Results**

* `<array>`- An array of JSON objects containing:
  * `file_name: <string>`- Path of stored object on drive
  * `extension: <string>`- Extension of stored object on drive
  * `size_byte: <float>`- Size of stored object on drive in bytes
  * `is_folder: <bool>`- Is stored object is folder or not
  * `is_favourite: <bool>`- Is stored object selected as favourite or not
  * `path: <string>`- A path to listed object
  * `parent: <string>`- A path to parent of listed object
  * `content_type: <string>`- The content\_type header of selcted file
  * `public_link: <string>`- Link of file on IPFS public network if file has been shared publicly
  * `created_at: <date>`- Date of object creation
  * `updated_at: <date>`- Date of last modification on object
  * `deleted_at: <date>`- Date of moving to trash

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "lsTrash",
    "params": [
        "<Token:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": [
        {
            "file_name": "djib",
            "extension": "svg",
            "size_byte": 1,
            "is_folder": false,
            "is_favorite": false,
            "path": "/djib.svg",
            "parent": "/",
            "content_type": "image/svg+xml",
            "public_link": null,
            "created_at": "2022-05-19 09:58:48.836000",
            "updated_at": "2022-05-19 09:58:48.836000",
            "deleted_at": "2022-05-19 09:58:48.836000"
        }
    ],
    "id": 0
}
```

### **restoreFromTrash** <a href="#lsdrive" id="lsdrive"></a>

Restores object from trash.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Object path on trash
* `<string>`- Delete date of object

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "restoreFromTrash",
    "params": [
        "<Token:str>",
        "/Object Path",
        "<ISODateTime:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### **setFavorite** <a href="#lsdrive" id="lsdrive"></a>

Marks object as favorite.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Object path on drive

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "setFavorite",
    "params": [
        "<Token:str>",
        "/Object Path"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### **lsFavorite** <a href="#lsdrive" id="lsdrive"></a>

Returns list of marked objects as favorite on drive.

**Parameters**

* `<string>`- An access token as base-58 encoded string

**Results**

* `<array>`- An array of JSON objects containing:
  * `file_name: <string>`- Path of stored object on drive
  * `extension: <string>`- Extension of stored object on drive
  * `size_byte: <float>`- Size of stored object on drive in bytes
  * `is_folder: <bool>`- Is stored object is folder or not
  * `is_favourite: <bool>`- Is stored object selected as favourite or not
  * `path: <string>`- A path to listed object
  * `parent: <string>`- A path to parent of listed object
  * `content_type: <string>`- The content\_type header of selcted file
  * `public_link: <string>`- Link of file on IPFS public network if file has been shared publicly
  * `created_at: <date>`- Date of object creation
  * `updated_at: <date>`- Date of last modification on object

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "lsFavorite",
    "params": [
        "<Token:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": [
        {
            "file_name": "djib",
            "extension": "svg",
            "size_byte": 1,
            "is_folder": false,
            "is_favorite": false,
            "path": "/djib.svg",
            "parent": "/",
            "content_type": "image/svg+xml",
            "public_link": null,
            "created_at": "2022-05-19 09:58:48.836000",
            "updated_at": "2022-05-19 09:58:48.836000"
        }
    ],
    "id": 0
}
```

### unsetFavorite

Unsets the object mark from favorite.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Path to object on private drive

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "unsetFavorite",
    "params": [
        "<Token:str>",
        "/Object Path"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### rename

Renames an object on private drive.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Path to object on private drive
* `<string>`- New name for specified object

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "rename",
    "params": [
        "<Token:str>",
        "/Object Path",
        "<Text:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### move

Moves an object to another directory.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Path to object on private drive
* `<string>`- New directory to move in

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "move",
    "params": [
        "<Token:str>",
        "/Old Path",
        "/New Path"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### copy

Copies an object to another directory.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Path to object on private drive
* `<string>`- New directory to copy in

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "copy",
    "params": [
        "<Token:str>",
        "/Object Path",
        "/Dest Path"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### duplicate

Duplicates an object .

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Path to object on private drive

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "duplicate",
    "params": [
        "<Token:str>",
        "/Object Path"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### lsPublic

Returns list of publicly shared files.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<bool>`- Flag to set only public files

**Results**

* `<array>`- An array of JSON objects containing:
  * `cid: <string>`- Cid of shared file
  * `link: <string>`- Link to object on public network
  * `file_name: <string>`- Name of file
  * `size_byte <float>`- Size of stored object on drive in bytes
  * `content_type: <string>`- The content\_type header of selcted file
  * `drive_path: <string>`- Path to object on private drive
  * `created_at: <date>`- Date of object creation

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "lsPublic",
    "params": [
        "<Token:str>",
        false
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": [
        {
            "cid": "<Cid:str>",
            "link": "https://devnet.djib.io/<Cid:str>",
            "file_name": "djib.svg",
            "size_byte": 2431,
            "content_type": "image/svg+xml",
            "drive_path": "/djib.svg",
            "created_at": "2022-05-19 21:14:42.097000"
        }
    ],
    "id": 0
}
```

### savePublic

Saves list of public files on private drive.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<array>`- An array of publicly shared objects
* `<string>`- Path on private drive to save public files&#x20;

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "savePublic",
    "params": [
        "<Token:str>",
        [
            "<Cid:str>"
        ],
        "/Drive Path"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### lsFileShares

List all sharing records of a file.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Path to object on private drive

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "lsFileShares",
    "params": [
        "<Token:str>",
        "/djib"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": {
        "shares": [
            {
                "link": "<Link:str>",
                "has_pass": true,
                "is_public": false,
                "share_email": "john@doe.com",
                "created_at": "2022-06-05 02:33:53.837000"
            }
        ],
        "has_pass": false
    },
    "id": 0
}
```

### lsShareWithMe

List of all objects that shared with user.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<object>`- A JSON objects containing:
  * `path: <string>`- Path to object on private drive
  * `owner: <string>`- Email address of file owner
  * `password: <string>`- Password of file if the file locked

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "lsShareWithMe",
    "params": [
        "<Token:str>",
        {
            "path": "/Shared/Object Path",
            "owner": "john@doe.com",
            "password": "123456"
        }
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": [
        {
            "file_name": "djib",
            "size_byte": 44665,
            "extension": "svg",
            "content_type": "image/xml+svg",
            "is_folder": false,
            "created_at": "2022-05-27 08:26:19.358000",
            "updated_at": "2022-05-27 08:26:19.358000",
            "path": "/Shared/djib.svg",
            "shared_at": "2022-05-27 08:51:01.569000"
        }
    ],
    "id": 0
}
```

### lsShareByMe

List of all objects that shared by user.

**Parameters**

* `<string>`- An access token as base-58 encoded string

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "lsShareByMe",
    "params": [
        "<Token:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": [
        {
            "file_name": "djib",
            "extension": null,
            "size_byte": 0,
            "is_folder": true,
            "is_favorite": false,
            "path": "/djib",
            "parent": "/",
            "content_type": null,
            "public_link": null,
            "created_at": "2022-06-10 00:02:06.987000",
            "updated_at": "2022-06-10 00:02:06.987000"
        }
    ],
    "id": 0
}
```

### shareObject

Share an object.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Path to object on private drive
* `<object>`- A JSON objects containing:
  * `path: <string>`- Path to object on private drive
  * `owner: <string>`- Email address of file owner
  * `password: <string>`- Password of file if the file locked

**Results**

* `<string>`- Sharing code/link of object

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "shareObject",
    "params": [
        "<Token:str>",
        "/djib.svg",
        {
            "password": "a",
            "email": "john@doe.com"
        }
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "<Link:str>",
    "id": 0
}
```

### revokeShares

Delete sharing records of an object.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Path to object on private drive
* `<array>`- An array of sharing codes/links

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "revokeShares",
    "params": [
        "<Token:str>",
        "/File Path",
        [
            "<Link:str>"
        ]
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### getSharedByLink

Get shared record by link/code.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Path to object on private drive
* `<object>`- A JSON objects containing:
  * `path: <string>`- Path to object on private drive
  * `owner: <string>`- Email address of file owner
  * `password: <string>`- Password of file if the file locked

**Results**

* `<string>`- A sharing path for exploring by lsShareWithMe

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "getSharedByLink",
    "params": [
        "<Token:str>",
        "<Link:str>",
        {
            "password": "123456"
        }
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "/Shared/djib",
    "id": 0
}
```

### rmSharedWithMe

Remove sharing record.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Path to object on private drive
* `<string>`- Owner email address

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "rmSharedWithMe",
    "params": [
        "<Token:str>",
        "/djib",
        "john@doe.com"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### deleteTrash

Delete an object from trash permanently.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<string>`- Path to object on private drive
* `<string>`- Object deleted at date

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "deleteTrash",
    "params": [
        "<Token:str>",
        "/Object Path",
        "<DeletedAt:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### emptyTrash

Erase all trash objects permanently.

**Parameters**

* `<string>`- An access token as base-58 encoded string

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "moveTrash",
    "params": [
        "<Token:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### getProfile

Get user profile information.

**Parameters**

* `<string>`- An access token as base-58 encoded string

**Results**

* `<object>`- A JSON objects containing:
  * `email: <string>`- User email address
  * `name: <string>`- User full name
  * `avatar: <string>`- Base64 encoded avatar file
  * `ref_code: <string>`- User referral code
  * `confirmation: <string>`- User email confirmation token

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "getProfile",
    "params": [
        "<Token:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": {
        "email": "<EmailAddress:str>",
        "name": "<Text:str>",
        "avatar": "data:<ImageContentType:str>;base64,<Base64Encoded:str>",
        "confirmation": "<Token:str>",
        "ref_code": "<Token:str>",
        "invited_by": "<PublicKey:str>"
    },
    "id": 0
}
```

### setProfile

Set profile information.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<object>`- A JSON objects containing:
  * `email: <string>`- User email address
  * `name: <string>`- User full name
  * `avatar: <string>`- Base64 encoded avatar file

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "setProfile",
    "params": [
        "<Token:str>",
        {
            "email": "<EmailAddress:str>",
            "name": "<Text:str>",
            "avatar": "data:<ImageContentType:str>;base64,<Base64Encoded:str>"
        }
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### resendVerificationEmail

Resend verification email for confirming.

**Parameters**

* `<string>`- An access token as base-58 encoded string

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "resendVerificationEmail",
    "params": [
        "<Token:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "success",
    "id": 0
}
```

### createTopUpPayment

Creates [Solana Pay](https://docs.solanapay.com/) standard URL for increasing credits balance on Djib Token.

**Parameters**

* `<string>` - An access token as base-58 encoded string
* `<number>`- Requested size

**Results**

* `<object>`- A JSON object containing:
  * `payment_url: <number>`- Solana Pay standard URL
  * `tracking_code: <string>`- A code to track transaction status&#x20;

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "createTopUpPayment",
    "params": [
        "<Token:str>",
        "<Number:unsigned float>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": {
        "payment_url": "solana:<PublicKey:str>?amount=<Number:unsigned float>&spl-token=<PublicKey:str>&memo=djib&message=Thanks%21&label=DjibChain&reference=<TrackingCode:str>",
        "tracking_code": "<TrackingCode:str>"
    },
    "id": 0
}
```

### confirmTopUpPayment

Confirms the storage payment and returns the final status of payment.

**Parameters**

* `<string>` - An access token as base-58 encoded string
* `<string>` - A code to track transaction status

**Results**

* `<object>`- A JSON object containing:
  * `finalized: <string>` - Status of finalization
  * `signature: <string>` - Signature of transaction

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "confirmTopUpPayment",
    "params": [
       "<Token:str>",
       "<TrackingCode:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": {
        "finalized": true,
        "signature": "<Signature:str>"
    },
    "id": 0
}
```

### lsPayments

Returns list of payment records

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<number>`- Margin
* `<number>`- Count

**Results**

* `<object>`- A JSON object containing:
  * `payments: <array>` - A JSON object containing:
    * `method: <string>` - Payment method \['`PAYMENT`', '`TOPUP`']
    * `price: <float>` - Payed price
    * `amount: <float>` - Requested size
    * `unit: <string>` - Unit of request \['`KB`', '`MB`', '`GB`', '`TB`', '`NFT`']
    * `status: <string>` - Status of payment \['`pending`', '`success`', '`failed`']
    * `signature: <string>` - Signature of the transaction
    * `message: <string>` - Message of status
    * `payed_at: <string>` - ISO date time
    * `created_at: <string>` - ISO date time
    * `updated_at: <string>` - ISO date time
  * `options: <object>` - A JSON object containing:
    * `total: <number>` - Total number of all records
    * `count: <number>` - Count
    * `margin: <number>` - Margin

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "lsPayments",
    "params": [
       "<Token:str>",
        0,
        10
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": {
        "payments": [
            {
                "method": "PAYMENT",
                "price": 1.0,
                "amount": 1,
                "unit": "GB",
                "status": "sold",
                "signature": "<Signature:str>",
                "message": "<Text:str>",
                "payed_at": "<ISODateTime:str>",
                "created_at": "<ISODateTime:str>",
                "updated_at": "<ISODateTime:str>"
            }
        ],
        "options": {
            "total": 1,
            "count": 10
        }
    },
    "id": 0
}
```

### lsDailyBalance

Returns balance changes.

**Parameters**

* `<string>`- An access token as base-58 encoded string
* `<number>`- Days ago

**Results**

* `<object>`- A JSON object containing:
  * `time: <string>` - YYYY-MM-DD
  * `balance: <float>` - Balance

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "lsDailyBalance",
    "params": [
       "<Token:str>",
        7
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": [
        {
            "time": "2022-06-23",
            "balance": 0
        },
        {
            "time": "2022-06-24",
            "balance": 0
        },
        {
            "time": "2022-06-25",
            "balance": 0
        },
        {
            "time": "2022-06-26",
            "balance": 0
        },
        {
            "time": "2022-06-27",
            "balance": 0
        },
        {
            "time": "2022-06-28",
            "balance": 0
        },
        {
            "time": "2022-06-29",
            "balance": 0
        },
        {
            "time": "2022-06-30",
            "balance": 0
        }
    ],
    "id": 0
}
```

### createNftPayment

Creates [Solana Pay](https://docs.solanapay.com/) standard URL for paying Djib Token used saving a file as an NFT

**Parameters**

* `<string>` - An access token as base-58 encoded string
* `<number>`- Count of requested NFT

**Results**

* `<string>`- A success message

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "createNftPayment",
    "params": [
        "<Token:str>",
        "<Number:unsigned float>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": {
        "payment_url": "solana:<PublicKey:str>?amount=<Number:unsigned float>&spl-token=<PublicKey:str>&memo=djib&message=Thanks%21&label=DjibChain&reference=<TrackingCode:str>",
        "tracking_code": "<TrackingCode:str>"
    },
    "id": 0
}
```

### saveAsNft

Saves a file as an NFT.

**Parameters**

* `<string>` - An access token as base-58 encoded string
* `<string>` - Path of the object
* `<object>` - A JSON object containing:
  * `thumbnail: <string>`- An IPFS cid of the thumbnail
  * `name: <string>`- Name of NFT
  * `symbol: <string>`- Symbol of NFT
  * `description: <string>`- Description of NFT
  * `seller_fee_basis_points: <number>`- Seller fee in percentage
  * `external_url: <string>`- An external URL
  * `attributes: <array>`- Array of JSON object containing:
    * `trait_type: <string>`- Attribute name
    * `value: <string>`- Value of attribute
  * `collection: <string>`- Collection name
  * `family: <string>`- Family name

**Results**

* `<object>`- A JSON object containing:
  * `cid: <string>`- An IPFS cid of the thumbnail
  * `created_at: <string>`- ISO date time of NFT creation time

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "saveAsNft",
    "params": [
        "<Token:str>",
        "/djib.svg",
        {
            "thumbnail": null,
            "name": "test",
            "symbol": "TEST",
            "description": "Desc for test",
            "seller_fee_basis_points": 0,
            "external_url": "https://app.djib.io",
            "attributes" : [ { "trait_type" : "Power" , "value" : "Rare" } ],
            "collection": "Test1",
            "family": "Test11"
        }
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": {
        "cid": "<Token:str>",
        "created_at": "<ISODateTime:str>"
    },
    "id": 0
}
```

### uploadAsset

Uploads NFT asset after saving NFT

**Parameters**

* `<string>` - An access token as base-58 encoded string
* `<string>` - An IPFS cid of NFT file
* `<string>` - ISO date time of NFT creation time
* `<string>` - Tracking code of payment (Optional)

**Results**

* `<string>`- An IPFS cid of NFT file

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "uploadAsset",
    "params": [
        "<Token:str>",
        "<Cid:str>",
        "<ISODateTime:str>",
        "<TrackingCode:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": "<Cid:str>",
    "id": 0
}
```

### lsNfts

Returns list of all NFTs

**Parameters**

* `<string>` - An access token as base-58 encoded string
* `<object>`- A JSON object containing:
  * `family: <string>`- Name of special family
  * `count: <number>`- Count
  * `margin: <string>`- Margin

**Results**

* `<object>`- A JSON object containing:
  * `nfts: <object>`- A JSON object containing
    * `token: <string>`- Token address of NFT
    * `signature: <string>`- Signature of NFT creation
    * `metadata: <object>`- The NFT metadata saved on blockchain
    * `message: <string>`- Message of NFT creation process
    * `created_at: <date>`- Date of drive creation
    * `updated_at: <date>`- Date of last modification on drive
  * `options: <object>` - A JSON object containing:
    * `family: <string>` - Family name of filter
    * `total: <number>` - Total number of all records
    * `count: <number>` - Count
    * `margin: <number>` - Margin

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "lsNfts",
    "params": [
        "<Token:str>",
        {
            "family": "Test1",
            "count": 10,
            "skip": 0
        }
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": {
        "nfts": [
            {
                "token": "<NFTPublicKey:str>",
                "signature": "<Signature:str>",
                "metadata": {
                    "name": "test",
                    "symbol": "TEST",
                    "description": "Desc for test",
                    "image": "https://public.djib.io/<Cid:str>",
                    "external_url": "https://app.djib.io",
                    "properties": {
                        "creators": [
                            {
                                "address": "<PublicKey:str>",
                                "share": 100
                            },
                            {
                                "address": "DjibYsyKG5sD32Zp1rZHzJyM91ppkAmQ4irDdenUouP7",
                                "share": 0
                            }
                        ],
                        "files": [
                            {
                                "uri": "https://public.djib.io/<Cid:str>",
                                "type": "application/octet-stream"
                            },
                            {
                                "uri": "https://public.djib.io/<Cid:str>",
                                "type": "image/base64"
                            }
                        ]
                    },
                    "collection": {
                        "name": "Test11",
                        "family": "Test1"
                    },
                    "seller_fee_basis_points": 0,
                    "attributes": [
                        {
                            "trait_type": "Power",
                            "value": "Rare"
                        }
                    ]
                },
                "status": "success",
                "message": "Success!",
                "created_at": "2022-06-05 07:34:09.702000",
                "updated_at": "2022-06-05 07:34:09.702000"
            }
        ],
        "options": {
            "family": "Test1",
            "total": 1,
            "skip": 0,
            "count": 10
        }
    },
    "id": 0
}
```

### lsNftFamilies

Returns status of drive.

**Parameters**

* `<string>` - An access token as base-58 encoded string

**Results**

* `<array>`- c
  * `family: <string>`- Family name
  * `collections: <array>`- An array of string

**Example**

Request:

```shell
curl {api_url} -X POST -H "Content-Type: application/json" -d '
{
    "method": "lsNftFamilies",
    "params": [
        "<Token:str>"
    ],
    "jsonrpc": "2.0",
    "id": 0
}
'
```

Result:

```json
{
    "jsonrpc": "2.0",
    "result": [
        {
            "collections": [
                "collection name",
                "collection name1"
            ],
            "family": "family name"
        }
    ],
    "id": 0
}
```


# Djib-cli

djib-cli is an opensource command line interface to interact with djib network

Coming Soon


# Djib Sign

Sign documents electronically in just minutes. Whether you're in an office, at home, on-the-go -- or even across the globe.

With [Djib Sign](https://sign.djib.io/) technology you don't need to be worried about important contracts being shared by email, through chats, and even in hard copies.

You can share documents, request members to sign according a predefined order and store the signed contract on blockchain, as NFT. **Fast, Secure, and Temperament resistant!**


# Get started with Djib Sign

To start working with the app, all you need is a crypto wallet on Solana, Ethereum or Binance blockchain. Djib Sign already supports Phantom and Solflare wallets for Solana and Metamask wallet for Ethereum and Binance blockchain.&#x20;

Log in to the [app](https://sign.djib.io/) by connecting to your wallet, and from there you will be able to upload files, share files and ask members to either sign (according to your defined order) or just view the document, finally you store the signed documents as NFT and all members will have a life-long access to it.&#x20;

No subscription or extra hassle for payment is required throughout the cycle and user pays the fee by DJIB token which directly buys with the crypto asset on their wallet, on Djib Sign dashboard.


# Top up your account

To complete the contract signing cycle user is required to pay the fee by DJIB token, you can buy the token directly on dashboard either through "Buy DJIB" button or in Setting, Top up feature.&#x20;

<figure><img src="/files/eMtdkz86cXLLT6SfbJZx" alt=""><figcaption><p>Setting page, Top up DJIB balance</p></figcaption></figure>

By proceeding the top up you will be redirected to your wallet to confirm the payment by crypto asset and all done! your balance is increased.

<figure><img src="/files/fBrK8ZLAb5znpFTXHedb" alt=""><figcaption><p>Payment being processed</p></figcaption></figure>


# Document sign cycle


# Cache Availability Zones

{% tabs %}
{% tab title="Africa" %}
Algiers, Algeria - (ALG)Operational

Antananarivo, Madagascar - (TNR)Operational

Cape Town, South Africa - (CPT)Operational

Casablanca, Morocco - (CMN)Operational

Dakar, Senegal - (DKR)Operational

Dar Es Salaam, Tanzania - (DAR)Operational

Djibouti City, Djibouti - (JIB)Operational

Durban, South Africa - (DUR)Operational

Harare, Zimbabwe - (HRE)Re-routed

Johannesburg, South Africa - (JNB)Operational

Kigali, Rwanda - (KGL)Operational

Lagos, Nigeria - (LOS)Re-routed

Luanda, Angola - (LAD)Operational

Maputo, Mozambique - (MPM)Re-routed

Mombasa, Kenya - (MBA)Operational

Monrovia, Liberia - (ROB)Re-routed

Nairobi, Kenya - (NBO)Operational

Port Louis, Mauritius - (MRU)Operational

Réunion, France - (RUN)Re-routed

Tunis, Tunisia - (TUN)Re-routed
{% endtab %}

{% tab title="Asia" %}
Almaty, Kazakhstan - (ALA)Re-routed

Anqing, China - (AQG)Operational

Bangalore, India - (BLR)Operational

Bangkok, Thailand - (BKK)Operational

Bandar Seri Begawan, Brunei - (BWN)Operational

Baoji, China - (XIY)Operational

Cebu, Philippines - (CEB)Operational

Changde, China - (CGD)Operational

Changsha, China - (CSX)Operational

Changzhou, China - (CZX)Operational

Chengdu, China - (CTU)Operational

Chennai, India - (MAA)Operational

Chittagong, Bangladesh - (CGP)Re-routed

Colombo, Sri Lanka - (CMB)Operational

Dalian, China - (DLC)Operational

Dhaka, Bangladesh - (DAC)Operational

Foshan, China - (FUO)Operational

Fuzhou, China - (FOC)Operational

Guangzhou, China - (CAN)Operational

Guiyang, China - (KWE)Operational

Haikou, China - (HAK)Operational

Hanoi, Vietnam - (HAN)Re-routed

Hengshui, China - (SJW)Operational

Ho Chi Minh City, Vietnam - (SGN)Operational

Hohhot, China - (HET)Operational

Hong Kong - (HKG)Operational

Huainan, China - (HFE)Operational

Hyderabad, India - (HYD)Operational

Islamabad, Pakistan - (ISB)Operational

Jakarta, Indonesia - (CGK)Operational

Jashore, Bangladesh - (JSR)Operational

Jinan, China - (TNA)Operational

Jinhua, China - (HGH)Operational

Johor Bahru, Malaysia - (JHB)Operational

Karachi, Pakistan - (KHI)Operational

Kathmandu, Nepal - (KTM)Operational

Kolkata, India - (CCU)Operational

Krasnoyarsk, Russia - (KJA)Operational

Kuala Lumpur, Malaysia - (KUL)Re-routed

Lahore, Pakistan - (LHE)Operational

Langfang, China - (PKX)Operational

Lanzhou, China - (LHW)Operational

Luoyang, China - (LYA)Operational

Macau - (MFM)Operational

Malé, Maldives - (MLE)Operational

Manila, Philippines - (MNL)Operational

Mumbai, India - (BOM)Operational

Nagpur, India - (NAG)Operational

New Delhi, India - (DEL)Operational

Osaka, Japan - (KIX)Operational

Patna, India - (PAT)Re-routed

Phnom Penh, Cambodia - (PNH)Re-routed

Qingdao, China - (TAO)Operational

Qinhuangdao, China - (BPE)Operational

Quanzhou, China - (JJN)Operational

Quzhou, China - (JUZ)Operational

Seoul, South Korea - (ICN)Operational

Shanghai, China - (SHA)Operational

Shiyan, China - (WDS)Operational

Singapore, Singapore - (SIN)Partially Re-routed

Surat Thani, Thailand - (URT)Re-routed

Suqian, China - (NKG)Operational

Taipei - (TPE)Operational

Taizhou, China - (HYN)Operational

Thimphu, Bhutan - (PBH)Re-routed

Tianjin, China - (TSN)Operational

Tokyo, Japan - (NRT)Operational

Ulaanbaatar, Mongolia - (ULN)Operational

Vientiane, Laos - (VTE)Operational

Wuxi, China - (WUX)Operational

Xining, China - (XNN)Operational

Xinyu, China - (KHN)Operational

Yangon, Myanmar - (RGN)Re-routed

Yerevan, Armenia - (EVN)Operational

Yichang, China - (YIH)Operational

Zhengzhou, China - (CGO)OperationalAlgiers, Algeria - (ALG)Operational

Antananarivo, Madagascar - (TNR)Operational

Cape Town, South Africa - (CPT)Operational

Casablanca, Morocco - (CMN)Operational

Dakar, Senegal - (DKR)Operational

Dar Es Salaam, Tanzania - (DAR)Operational

Djibouti City, Djibouti - (JIB)Operational

Durban, South Africa - (DUR)Operational

Harare, Zimbabwe - (HRE)Re-routed

Johannesburg, South Africa - (JNB)Operational

Kigali, Rwanda - (KGL)Operational

Lagos, Nigeria - (LOS)Re-routed

Luanda, Angola - (LAD)OperationalAlgiers, Algeria - (ALG)Operational

Antananarivo, Madagascar - (TNR)Operational

Cape Town, South Africa - (CPT)Operational

Casablanca, Morocco - (CMN)Operational

Dakar, Senegal - (DKR)Operational

Dar Es Salaam, Tanzania - (DAR)Operational

Djibouti City, Djibouti - (JIB)Operational

Durban, South Africa - (DUR)Operational

Harare, Zimbabwe - (HRE)Re-routed

Johannesburg, South Africa - (JNB)Operational

Kigali, Rwanda - (KGL)Operational

Lagos, Nigeria - (LOS)Re-routed

Luanda, Angola - (LAD)OperationalAlgiers, Algeria - (ALG)Operational

Antananarivo, Madagascar - (TNR)Operational

Cape Town, South Africa - (CPT)Operational

Casablanca, Morocco - (CMN)Operational

Dakar, Senegal - (DKR)Operational

Dar Es Salaam, Tanzania - (DAR)Operational

Djibouti City, Djibouti - (JIB)Operational

Durban, South Africa - (DUR)Operational

Harare, Zimbabwe - (HRE)Re-routed

Johannesburg, South Africa - (JNB)Operational

Kigali, Rwanda - (KGL)Operational

Lagos, Nigeria - (LOS)Re-routed

Luanda, Angola - (LAD)OperationalAlgiers, Algeria - (ALG)Operational

Antananarivo, Madagascar - (TNR)Operational

Cape Town, South Africa - (CPT)Operational

Casablanca, Morocco - (CMN)Operational

Dakar, Senegal - (DKR)Operational

Dar Es Salaam, Tanzania - (DAR)Operational

Djibouti City, Djibouti - (JIB)Operational

Durban, South Africa - (DUR)Operational

Harare, Zimbabwe - (HRE)Re-routed

Johannesburg, South Africa - (JNB)Operational

Kigali, Rwanda - (KGL)Operational

Lagos, Nigeria - (LOS)Re-routed

Luanda, Angola - (LAD)OperationalAlgiers, Algeria - (ALG)Operational

Antananarivo, Madagascar - (TNR)Operational

Cape Town, South Africa - (CPT)Operational

Casablanca, Morocco - (CMN)Operational

Dakar, Senegal - (DKR)Operational

Dar Es Salaam, Tanzania - (DAR)Operational

Djibouti City, Djibouti - (JIB)Operational

Durban, South Africa - (DUR)Operational

Harare, Zimbabwe - (HRE)Re-routed

Johannesburg, South Africa - (JNB)Operational

Kigali, Rwanda - (KGL)Operational

Lagos, Nigeria - (LOS)Re-routed

Luanda, Angola - (LAD)OperationalAlgiers, Algeria - (ALG)Operational

Antananarivo, Madagascar - (TNR)Operational

Cape Town, South Africa - (CPT)Operational

Casablanca, Morocco - (CMN)Operational

Dakar, Senegal - (DKR)Operational

Dar Es Salaam, Tanzania - (DAR)Operational

Djibouti City, Djibouti - (JIB)Operational

Durban, South Africa - (DUR)Operational

Harare, Zimbabwe - (HRE)Re-routed

Johannesburg, South Africa - (JNB)Operational

Kigali, Rwanda - (KGL)Operational

Lagos, Nigeria - (LOS)Re-routed

Luanda, Angola - (LAD)Operational
{% endtab %}

{% tab title="Europe" %}
Amsterdam, NL - (AMS)Operational

Athens, Greece - (ATH)Operational

Barcelona, Spain - (BCN)Operational

Belgrade, Serbia - (BEG)Operational

Berlin, Germany - (TXL)Operational

Brussels, Belgium - (BRU)Operational

Bucharest, Romania - (OTP)Operational

Budapest, Hungary - (BUD)Operational

Chișinău, Moldova - (KIV)Re-routed

Copenhagen, Denmark - (CPH)Operational

Cork, Ireland - (ORK)Operational

Dublin, Ireland - (DUB)Operational

Düsseldorf, Germany - (DUS)Operational

Edinburgh, United Kingdom - (EDI)Operational

Frankfurt, Germany - (FRA)Operational

Geneva, Switzerland - (GVA)Operational

Gothenburg, Sweden - (GOT)Operational

Hamburg, Germany - (HAM)Operational

Helsinki, Finland - (HEL)Operational

Istanbul, Turkey - (IST)Operational

Kyiv, Ukraine - (KBP)Re-routed

Lisbon, Portugal - (LIS)Operational

London, United Kingdom - (LHR)Operational

Luxembourg City, Luxembourg - (LUX)Operational

Madrid, Spain - (MAD)Operational

Manchester, United Kingdom - (MAN)Operational

Marseille, France - (MRS)Operational

Milan, Italy - (MXP)Operational

Minsk, Belarus - (MSQ)Operational

Moscow, Russia - (DME)Operational

Munich, Germany - (MUC)Operational

Nicosia, Cyprus - (LCA)Operational

Oslo, Norway - (OSL)Operational

Palermo, Italy - (PMO)Operational

Paris, France - (CDG)Operational

Prague, Czech Republic - (PRG)Operational

Reykjavík, Iceland - (KEF)Operational

Riga, Latvia - (RIX)Operational

Rome, Italy - (FCO)Operational

Saint Petersburg, Russia - (LED)Operational

Sofia, Bulgaria - (SOF)Operational

Stockholm, Sweden - (ARN)Operational

Tallinn, Estonia - (TLL)Operational

Tbilisi, Georgia - (TBS)Operational

Thessaloniki, Greece - (SKG)Operational

Vienna, Austria - (VIE)Operational

Vilnius, Lithuania - (VNO)Operational

Warsaw, Poland - (WAW)Operational

Yekaterinburg, Russia - (SVX)Operational

Zagreb, Croatia - (ZAG)Operational

Zürich, Switzerland - (ZRH)Operational

Latin America & the Caribbean

Americana, Brazil - (QWJ)Operational

Arica, Chile - (ARI)Operational

Asunción, Paraguay - (ASU)Operational

Belém, Brazil - (BEL)Operational

Belo Horizonte, Brazil - (CNF)Operational

Blumenau, Brazil - (BNU)Operational

Bogotá, Colombia - (BOG)Operational

Brasilia, Brazil - (BSB)Operational

Buenos Aires, Argentina - (EZE)Operational

Caçador, Brazil - (CFC)Re-routed

Campinas, Brazil - (VCP)Operational

Curitiba, Brazil - (CWB)Operational

Florianopolis, Brazil - (FLN)Operational

Fortaleza, Brazil - (FOR)Re-routed

Goiânia, Brazil - (GYN)Operational

Guatemala City, Guatemala - (GUA)Operational

Guayaquil, Ecuador - (GYE)Re-routed

Itajaí, Brazil - (ITJ)Operational

Lima, Peru - (LIM)Operational

Manaus, Brazil - (MAO)Operational

Medellín, Colombia - (MDE)Operational

Panama City, Panama - (PTY)Re-routed

Paramaribo, Suriname - (PBM)Operational

Porto Alegre, Brazil - (POA)Operational

Port-Au-Prince, Haiti - (PAP)Operational

Quito, Ecuador - (UIO)Operational

Ribeirao Preto, Brazil - (RAO)Operational

Rio de Janeiro, Brazil - (GIG)Operational

Salvador, Brazil - (SSA)Operational

San José, Costa Rica - (SJO)Operational

Santiago, Chile - (SCL)Operational

São José do Rio Preto, Brazil - (SJP)Operational

São Paulo, Brazil - (GRU)Operational

Sorocaba, Brazil - (SOD)Operational

St. George's, Grenada - (GND)Operational

Tegucigalpa, Honduras - (TGU)Operational

Willemstad, Curaçao - (CUR)Operational
{% endtab %}

{% tab title="Middle East" %}
Amman, Jordan - (AMM)Operational

Baghdad, Iraq - (BGW)Operational

Baku, Azerbaijan - (GYD)Re-routed

Beirut, Lebanon - (BEY)Operational

Dammam, Saudi Arabia - (DMM)Operational

Doha, Qatar - (DOH)Operational

Dubai, UAE (DXB)Operational

Kuwait City, Kuwait - (KWI)Operational

Manama, Bahrain - (BAH)Operational

Muscat, Oman - (MCT)Operational

Ramallah - (ZDM)Operational

Riyadh, Saudi Arabia - (RUH)Operational

Tel Aviv, Israel - (TLV)Operational
{% endtab %}

{% tab title="North America" %}
Ashburn, VA, USA - (IAD)Operational

Atlanta, GA, USA - (ATL)Operational

Boston, MA, USA - (BOS)Operational

Buffalo, NY, USA - (BUF)Operational

Calgary, AB, Canada - (YYC)Operational

Charlotte, NC, USA - (CLT)Operational

Chicago, IL, USA - (ORD)Operational

Columbus, OH, USA - (CMH)Operational

Dallas, TX, USA - (DFW)Operational

Denver, CO, USA - (DEN)Operational

Detroit, MI, USA - (DTW)Operational

Honolulu, HI, USA - (HNL)Operational

Houston, TX, USA - (IAH)Operational

Indianapolis, IN, USA - (IND)Operational

Jacksonville, FL, USA - (JAX)Operational

Kansas City, MO, USA - (MCI)Operational

Las Vegas, NV, USA - (LAS)Operational

Los Angeles, CA, USA - (LAX)Operational

McAllen, TX, USA - (MFE)Operational

Memphis, TN, USA - (MEM)Operational

Mexico City, Mexico - (MEX)Operational

Miami, FL, USA - (MIA)Operational

Minneapolis, MN, USA - (MSP)Operational

Montgomery, AL, USA - (MGM)Operational

Montréal, QC, Canada - (YUL)Operational

Nashville, TN, USA - (BNA)Operational

Newark, NJ, USA - (EWR)Operational

Norfolk, VA, USA - (ORF)Operational

Omaha, NE, USA - (OMA)Operational

Philadelphia, USA - (PHL)Operational

Phoenix, AZ, USA - (PHX)Operational

Pittsburgh, PA, USA - (PIT)Operational

Portland, OR, USA - (PDX)Operational

Queretaro, MX, Mexico - (QRO)Re-routed

Richmond, VA, USA - (RIC)Operational

Sacramento, CA, USA - (SMF)Operational

Salt Lake City, UT, USA - (SLC)Operational

San Diego, CA, USA - (SAN)Operational

San Jose, CA, USA - (SJC)Operational

Saskatoon, SK, Canada - (YXE)Operational

Seattle, WA, USA - (SEA)Operational

St. Louis, MO, USA - (STL)Operational

Tallahassee, FL, USA - (TLH)Operational

Tampa, FL, USA - (TPA)Operational

Toronto, ON, Canada - (YYZ)Operational

Vancouver, BC, Canada - (YVR)Operational

Winnipeg, MB, Canada - (YWG)Operational
{% endtab %}

{% tab title="Oceania" %}
Adelaide, SA, Australia - (ADL)Operational

Auckland, New Zealand - (AKL)Operational

Brisbane, QLD, Australia - (BNE)Operational

Canberra, ACT, Australia - (CBR)Operational

Melbourne, VIC, Australia - (MEL)Operational

Noumea, New Caledonia - (NOU)Operational

Perth, WA, Australia - (PER)Operational

Sydney, NSW, Australia - (SYD)
{% endtab %}
{% endtabs %}


# Privacy notice

Last updated November 25, 2020

Thank you for choosing to be part of our community at Djuno Ltd (“**Company**“, “**we**“, “**us**“, “**our**“). We are committed to protecting your personal information and your right to privacy. If you have any questions or concerns about this privacy notice, or our practices with regards to your personal information, please contact us at <support@djib.io>.\
When you visit our website [https://djib.io ](https://blog.djuno.io/)(the “**Website**“), and more generally, use any of our services (the “**Services**“, which include the Website), we appreciate that you are trusting us with your personal information. We take your privacy very seriously. In this privacy notice, we seek to explain to you in the clearest way possible what information we collect, how we use it and what rights you have in relation to it. We hope you take some time to read through it carefully, as it is important. If there are any terms in this privacy notice that you do not agree with, please discontinue use of our Services immediately.\
This privacy notice applies to all information collected through our Services (which, as described above, includes our Website), as well as, any related services, sales, marketing or events.\
**Please read this privacy notice carefully as it will help you understand what we do with the information that we collect.**<br>

### **1. WHAT INFORMATION DO WE COLLECT?**

\
**Information automatically collected**\
***In Short:**  Some information — such as your Internet Protocol (IP) address and/or browser and device characteristics — is collected automatically when you visit our Website.*\
We automatically collect certain information when you visit, use or navigate the Website. This information does not reveal your specific identity (like your name or contact information) but may include device and usage information, such as your IP address, browser and device characteristics, operating system, language preferences, referring URLs, device name, country, location, information about how and when you use our Website and other technical information. This information is not stored by us for further analytics

### **2. HOW DO WE USE YOUR INFORMATION?**

\
***In Short:**  We process your information for purposes based on legitimate business interests, the fulfillment of our contract with you, compliance with our legal obligations, and/or your consent.*\
We use personal information collected via our Website for a variety of business purposes described below. We process your personal information for these purposes in reliance on our legitimate business interests, in order to enter into or perform a contract with you, with your consent, and/or for compliance with our legal obligations. We indicate the specific processing grounds we rely on next to each purpose listed below.\
We use the information we collect or receive:

* **To facilitate account creation and logon process.** If you choose to link your account with us to a third-party account (such as your Google or Facebook account), we use the information you allowed us to collect from those third parties to facilitate account creation and logon process for the performance of the contract.
* **To post testimonials.** We post testimonials on our Website that may contain personal information. Prior to posting a testimonial, we will obtain your consent to use your name and the content of the testimonial. If you wish to update, or delete your testimonial, please contact us at <support@djib.io> and be sure to include your name, testimonial location, and contact information.
* **Request feedback.** We may use your information to request feedback and to contact you about your use of our Website.
* **To enable user-to-user communications.** We may use your information in order to enable user-to-user communications with each user’s consent.
* **To manage user accounts.** We may use your information for the purposes of managing our account and keeping it in working order.
* **To send administrative information to you.** We may use your personal information to send you product, service and new feature information and/or information about changes to our terms, conditions, and policies.
* **To protect our Services.** We may use your information as part of our efforts to keep our Website safe and secure (for example, for fraud monitoring and prevention).
* **To enforce our terms, conditions and policies for business purposes, to comply with legal and regulatory requirements or in connection with our contract.**
* **To respond to legal requests and prevent harm.** If we receive a subpoena or other legal request, we may need to inspect the data we hold to determine how to respond.
* **Fulfill and manage your orders.** We may use your information to fulfill and manage your orders, payments, returns, and exchanges made through the Website.
* **Administer prize draws and competitions.** We may use your information to administer prize draws and competitions when you elect to participate in our competitions.
* **To deliver and facilitate delivery of services to the user.** We may use your information to provide you with the requested service.
* **To respond to user inquiries/offer support to users.** We may use your information to respond to your inquiries and solve any potential issues you might have with the use of our Services.
* **To send you marketing and promotional communications.** We and/or our third-party marketing partners may use the personal information you send to us for our marketing purposes, if this is in accordance with your marketing preferences. For example, when expressing an interest in obtaining information about us or our Website, subscribing to marketing or otherwise contacting us, we will collect personal information from you. You can opt-out of our marketing emails at any time (see the “WHAT ARE YOUR PRIVACY RIGHTS” below).
* **Deliver targeted advertising to you.** We may use your information to develop and display personalized content and advertising (and work with third parties who do so) tailored to your interests and/or location and to measure its effectiveness.
* **For other business purposes.** We may use your information for other business purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Website, products, marketing and your experience. We may use and store this information in aggregated and anonymized form so that it is not associated with individual end users and does not include personal information. We will not use identifiable personal information without your consent.

### **3. WILL YOUR INFORMATION BE SHARED WITH ANYONE?**

\
***In Short:**  We only share information with your consent, to comply with laws, to provide you with services, to protect your rights, or to fulfill business obligations.*\
We may process or share your data that we hold based on the following legal basis:

* **Consent:** We may process your data if you have given us specific consent to use your personal information for a specific purpose.
* **Legitimate Interests:** We may process your data when it is reasonably necessary to achieve our legitimate business interests.
* **Performance of a Contract:** Where we have entered into a contract with you, we may process your personal information to fulfill the terms of our contract.
* **Legal Obligations:** We may disclose your information where we are legally required to do so in order to comply with applicable law, governmental requests, a judicial proceeding, court order, or legal process, such as in response to a court order or a subpoena (including in response to public authorities to meet national security or law enforcement requirements).
* **Vital Interests:** We may disclose your information where we believe it is necessary to investigate, prevent, or take action regarding potential violations of our policies, suspected fraud, situations involving potential threats to the safety of any person and illegal activities, or as evidence in litigation in which we are involved.

More specifically, we may need to process your data or share your personal information in the following situations:

* **Business Transfers.** We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.

### **4. DO WE USE COOKIES AND OTHER TRACKING TECHNOLOGIES?**

\
***In Short:**  We may use cookies and other tracking technologies to collect and store your information.*\
We may use cookies and similar tracking technologies (like web beacons and pixels) to access or store information. Specific information about how we use such technologies and how you can refuse certain cookies is set out in our Cookie Notice.\
**5. IS YOUR INFORMATION TRANSFERRED INTERNATIONALLY?**     \
***In Short:**  We may transfer, store, and process your information in countries other than your own.*\
Our servers are located in. If you are accessing our Website from outside, please be aware that your information may be transferred to, stored, and processed by us in our facilities and by those third parties with whom we may share your personal information (see “WILL YOUR INFORMATION BE SHARED WITH ANYONE?” above), in and other countries.\
If you are a resident in the European Economic Area, then these countries may not necessarily have data protection laws or other similar laws as comprehensive as those in your country. We will however take all necessary measures to protect your personal information in accordance with this privacy notice and applicable law.

### **5. HOW LONG DO WE KEEP YOUR INFORMATION?**

\
***In Short:**  We keep your information for as long as necessary to fulfill the purposes outlined in this privacy notice unless otherwise required by law.*\
We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy notice, unless a longer retention period is required or permitted by law (such as tax, accounting or other legal requirements). No purpose in this notice will require us keeping your personal information for longer than the period of time in which users have an account with us.\
When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.

### **6. HOW DO WE KEEP YOUR INFORMATION SAFE?**

\
***In Short:**  We aim to protect your personal information through a system of organizational and technical security measures.*\
We have implemented appropriate technical and organizational security measures designed to protect the security of any personal information we process. However, despite our safeguards and efforts to secure your information, no electronic transmission over the Internet or information storage technology can be guaranteed to be 100% secure, so we cannot promise or guarantee that hackers, cybercriminals, or other unauthorized third parties will not be able to defeat our security, and improperly collect, access, steal, or modify your information. Although we will do our best to protect your personal information, transmission of personal information to and from our Website is at your own risk. You should only access the Website within a secure environment.

### **7. WHAT ARE YOUR PRIVACY RIGHTS?**

\
***In Short:**  You may review, change, or terminate your account at any time.* If you are a resident in the European Economic Area and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: <http://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm>.\
If you are a resident in Switzerland, the contact details for the data protection authorities are available here: <https://www.edoeb.admin.ch/edoeb/en/home.html>.\
If you have questions or comments about your privacy rights, you may email us at **<Support@djib.io>**\
**Account Information**\
If you would at any time like to review or change the information in your account or terminate your account, you can:

* Log in to your account settings and update your user account.
* Contact us using the contact information provided.

Upon your request to terminate your account, we will deactivate or delete your account and information from our active databases. However, we may retain some information in our files to prevent fraud, troubleshoot problems, assist with any investigations, enforce our Terms of Use and/or comply with applicable legal requirements.\
**Cookies and similar technologies:** Most Web browsers are set to accept cookies by default. If you prefer, you can usually choose to set your browser to remove cookies and to reject cookies. If you choose to remove cookies or reject cookies, this could affect certain features or services of our Website. To opt-out of interest-based advertising by advertisers on our Website visit <http://www.aboutads.info/choices/>.\
**Opting out of email marketing:** You can unsubscribe from our marketing email list at any time by clicking on the unsubscribe link in the emails that we send or by contacting us using the details provided below. You will then be removed from the marketing email list — however, we may still communicate with you, for example to send you service-related emails that are necessary for the administration and use of your account, to respond to service requests, or for other non-marketing purposes. To otherwise opt-out, you may:

* Contact us using the contact information provided.
* Access your account settings and update your preferences.

### &#x38;**. CONTROLS FOR DO-NOT-TRACK FEATURES**

\
Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track (“DNT”) feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage no uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy notice.&#x20;

### **9. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?**

\
***In Short:**  Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.*\
California Civil Code Section 1798.83, also known as the “Shine The Light” law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.\
If you are under 18 years of age, reside in California, and have a registered account with the Website, you have the right to request removal of unwanted data that you publicly post on the Website. To request removal of such data, please contact us using the contact information provided below, and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Website, but please be aware that the data may not be completely or comprehensively removed from all our systems (e.g. backups, etc.).

### **10. DO WE MAKE UPDATES TO THIS NOTICE?**    &#x20;

\
***In Short:**  Yes, we will update this notice as necessary to stay compliant with relevant laws.*\
We may update this privacy notice from time to time. The updated version will be indicated by an updated “Revised” date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.

### **11. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?**    &#x20;

\
If you have questions or comments about this notice, you may contact us by email at <support@djib.io>, or by post to:\
Lytchett House Wareham Road, 13 Freeland Park, Poole, England, BH16 6FA

### **12. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?**    &#x20;

\
Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it in some circumstances. To request to review, update, or delete your personal information, please submit a request form by clicking [here](https://app.termly.io/notify/2ea27c79-45c4-4829-8f65-450f8fc12b34). We will respond to your request within 30 days.This privacy policy was created using [Termly’s Privacy Policy Generator](https://termly.io/products/privacy-policy-generator/?ftseo).


# Terms and conditions

VERSION 1.0 LAST REVISED ON: 18 Nov, 2020

Certain features of the Site may be subject to additional guidelines, terms, or rules, which will be posted on the Site in connection with such features. Without limitation to the preceding sentence, your submission of information, including personal information, through or in connection with the Site is governed by the terms of our privacy policy as updated from time to time (“Privacy Policy”).\
All such additional terms, guidelines, and rules, including our Privacy Policy, are incorporated by reference into these terms of use (these “Terms”).\
These Terms set forth the legally binding terms and conditions that govern your use of the Site. By accessing or using the Site, you are accepting these Terms (on behalf of yourself or the entity that you represent), and you represent and warrant that you have the right, authority, and capacity to enter into these Terms (on behalf of yourself or the entity that you represent). If you do not agree with all of the provisions of these Terms, do not access and/or use the Site.

### 1. ACCOUNTS

#### 1.1 Account Creation.&#x20;

In order to use certain features of the Site, you must register for an account (“Account”) and provide certain information about yourself as prompted by the account registration form. You represent and warrant that: (a) all required registration information you submit is truthful and accurate; (b) you will maintain the accuracy of such information. You may delete your Account at any time, for any reason, by following the instructions on the Site. Company may suspend or terminate your Account in accordance with Section 8.

#### 1.2 Account Responsibilities.&#x20;

You are responsible for maintaining the confidentiality of your Account login information and are fully responsible for all activities that occur under your Account. You agree to immediately notify Company of any unauthorized use, or suspected unauthorized use of your Account or any other breach of security. Company cannot and will not be liable for any loss or damage arising from your failure to comply with the above requirements.

### 2. ACCESS TO THE SITE

#### 2.1 License.&#x20;

Subject to these Terms, Company grants you a non-transferable, non-exclusive, revocable, limited license to use and access the Site solely for your own personal, non-commercial use.

#### 2.2 Certain Restrictions.&#x20;

The rights granted to you in these Terms are subject to the following restrictions: (a) you shall not license, sell, rent, lease, transfer, assign, distribute, host, or otherwise commercially exploit the Site, whether in whole or in part, or any content displayed on the Site; (b) you shall not modify, make derivative works of, disassemble, reverse compile or reverse engineer any part of the Site; (c) you shall not access the Site in order to build a similar or competitive website, product, or service; and (d) except as expressly stated herein, no part of the Site may be copied, reproduced, distributed, republished, downloaded, displayed, posted or transmitted in any form or by any means. Unless otherwise indicated, any future release, update, or other addition to functionality or content of the Site shall be subject to these Terms. All copyright and other proprietary notices on the Site (or on any content displayed on the Site) must be retained on all copies thereof.

#### 2.3 Modification.

Company reserves the right, at any time, to modify, suspend, or discontinue the Site (in whole or in part) with or without notice to you. You agree that Company will not be liable to you or to any third party for any modification, suspension, or discontinuation of the Site or any part thereof.

#### 2.4 No Support or Maintenance.

&#x20;You acknowledge and agree that Company will have no obligation to provide you with any support or maintenance in connection with the Site.

#### 2.5 Ownership.

Excluding any User Content that you may provide (defined below), you acknowledge that all the intellectual property rights, including copyrights, patents, trade marks, and trade secrets, in the Site and its content are owned by Company or Company’s suppliers. Neither these Terms (nor your access to the Site) transfers to you or any third party any rights, title or interest in or to such intellectual property rights, except for the limited access rights expressly set forth in Section 2.1. Company and its suppliers reserve all rights not granted in these Terms. There are no implied licenses granted under these Terms.<br>

### 3. USER CONTENT

#### 3.1 User Content.&#x20;

“User Content” means any and all information and content that a user submits to, or uses with, the Site (e.g., content in the user’s profile or postings). You are solely responsible for your User Content. You assume all risks associated with use of your User Content, including any reliance on its accuracy, completeness or usefulness by others, or any disclosure of your User Content that personally identifies you or any third party. You hereby represent and warrant that your User Content does not violate our Acceptable Use Policy (defined in Section 3.3). You may not represent or imply to others that your User Content is in any way provided, sponsored or endorsed by Company. Because you alone are responsible for your User Content, you may expose yourself to liability if, for example, your User Content violates the Acceptable Use Policy. Company is not obligated to backup any User Content, and your User Content may be deleted from the Site at any time without prior notice. You are solely responsible for creating and maintaining your own backup copies of your User Content if you desire.

#### 3.2 License.&#x20;

You hereby grant (and you represent and warrant that you have the right to grant) to Company an irrevocable, nonexclusive, royalty-free and fully paid, worldwide licence to reproduce, distribute, publicly display and perform, prepare derivative works of, incorporate into other works, and otherwise use and exploit your User Content, and to grant sublicences of the foregoing rights, solely for the purposes of including your User Content in the Site. You hereby irrevocably waive (and agree to cause to be waived) any claims and assertions of moral rights or attribution with respect to your User Content.

#### 3.3 Acceptable Use Policy.&#x20;

The following terms constitute our “Acceptable Use Policy”:\
(a) You agree not to use the Site to collect, upload, transmit, display, or distribute any User Content (i) that violates any third-party right, including any copyright, trademark, patent, trade secret, moral right, privacy right, right of publicity, or any other intellectual property or proprietary right; (ii) that is unlawful, harassing, abusive, tortious, threatening, harmful, invasive of another’s privacy, vulgar, defamatory, false, intentionally misleading, trade libelous, pornographic, obscene, patently offensive, promotes racism, bigotry, hatred, or physical harm of any kind against any group or individual or is otherwise objectionable; (iii) that is harmful to minors in any way; or (iv) that is in violation of any law, regulation, or obligations or restrictions imposed by any third party.\
(b) In addition, you agree not to: (i) upload, transmit, or distribute to or through the Site any computer viruses, worms, or any software intended to damage or alter a computer system or data; (ii) send through the Site unsolicited or unauthorized advertising, promotional materials, junk mail, spam, chain letters, pyramid schemes, or any other form of duplicative or unsolicited messages, whether commercial or otherwise; (iii) use the Site to harvest, collect, gather or assemble information or data regarding other users, including e-mail addresses, without their consent; (iv) interfere with, disrupt, or create an undue burden on servers or networks connected to the Site, or violate the regulations, policies or procedures of such networks; (v) attempt to gain unauthorized access to the Site (or to other computer systems or networks connected to or used together with the Site), whether through password mining or any other means; (vi) harass or interfere with any other user’s use and enjoyment of the Site; or (vi) use software or automated agents or scripts to produce multiple accounts on the Site, or to generate automated searches, requests, or queries to (or to strip, scrape, or mine data from) the Site (provided, however, that we conditionally grant to the operators of public search engines revocable permission to use spiders to copy materials from the Site for the sole purpose of and solely to the extent necessary for creating publicly available searchable indices of the materials, but not caches or archives of such materials, subject to the parameters set forth in our robots.txt file).

#### 3.4 Enforcement.

&#x20;We reserve the right (but have no obligation) to review any User Content, and to investigate and/or take appropriate action against you in our sole discretion if you violate the Acceptable Use Policy or any other provision of these Terms or otherwise create liability for us or any other person. Such action may include removing or modifying your User Content, terminating your Account in accordance with Section 8, and/or reporting you to law enforcement authorities.\
3.5 Feedback. If you provide Company with any feedback or suggestions regarding the Site (“Feedback”), you hereby assign to Company all rights in such Feedback and agree that Company shall have the right to use and fully exploit such Feedback and related information in any manner it deems appropriate. Company will treat any Feedback you provide to Company as non-confidential and non-proprietary. You agree that you will not submit to Company any information or ideas that you consider to be confidential or proprietary.<br>

### 4. INDEMNIFICATION.&#x20;

You agree to indemnify Company (and its officers, employees, and agents), including costs and attorneys’ fees, from any claim or demand made by any third party due to or arising out of (a) your use of the Site, (b) your violation of these Terms, (c) your violation of applicable laws or regulations or (d) your User Content. Company reserves the right, at your expense, to assume the exclusive defence and control of any matter for which you are required to indemnify us, and you agree to cooperate with our defence of these claims. You agree not to settle any matter without the prior written consent of Company. Company will use reasonable efforts to notify you of any such claim, action or proceeding upon becoming aware of it.<br>

### 5. THIRD-PARTY LINKS & ADS; OTHER USERS

#### 5.1 Third-Party Links & Ads.&#x20;

The Site may contain links to third-party websites and services, and/or display advertisements for third parties (collectively, “Third-Party Links & Ads”). Such Third-Party Links & Ads are not under the control of Company, and Company is not responsible for any Third-Party Links & Ads. Company provides access to these Third-Party Links & Ads only as a convenience to you, and does not review, approve, monitor, endorse, warrant, or make any representations with respect to Third-Party Links & Ads. You use all Third-Party Links & Ads at your own risk, and should apply a suitable level of caution and discretion in doing so. When you click on any of the Third-Party Links & Ads, the applicable third party’s terms and policies apply, including the third party’s privacy and data gathering practices. You should make whatever investigation you feel necessary or appropriate before proceeding with any transaction in connection with such Third-Party Links & Ads.

#### 5.2 Other Users.

&#x20;Each Site user is solely responsible for any and all of its own User Content. Because we do not control User Content, you acknowledge and agree that we are not responsible for any User Content, whether provided by you or by others. We make no guarantees regarding the accuracy, currency, suitability, or quality of any User Content. Your interactions with other Site users are solely between you and such users. You agree that Company will not be responsible for any loss or damage incurred as the result of any such interactions. If there is a dispute between you and any Site user, we are under no obligation to become involved.

#### 5.3 Release.&#x20;

Subject to applicable law, you hereby release and forever discharge the Company (and our officers, employees, agents, successors, and assigns) from, and hereby waive and relinquish, each and every past, present and future dispute, claim, controversy, demand, right, obligation, liability, action and cause of action of every kind and nature, that has arisen or arises directly or indirectly out of, or that relates directly or indirectly to, the Site (including any interactions with, or act or omission of, other Site users or any Third-Party Links & Ads).

### 6. DISCLAIMERS

The Site is provided on an “as-is” and “as available” basis, and, to the extent permitted by applicable law, Company (and our suppliers) expressly disclaim any and all warranties and conditions of any kind, whether express, implied, or statutory, including all warranties or conditions of merchantability, fitness for a particular purpose, title, quiet enjoyment, accuracy, or non-infringement. We (and our suppliers) make no warranty that the Site will meet your requirements, will be available on an uninterrupted, timely, secure, or error-free basis, or will be accurate, reliable, free of viruses or other harmful code, complete, legal, or safe.<br>

### 7. LIMITATION ON LIABILITY

To the maximum extent permitted by law, and subject to the final paragraph in this Section 7, in no event shall Company (or our suppliers) be liable to you or any third party for any lost profits, lost data, costs of procurement of substitute products, or any indirect, consequential, exemplary, incidental, special or punitive damages arising from or relating to these Terms or your use of, or inability to use, the Site, even if Company has been advised of the possibility of such damages. Access to, and use of, the Site is at your own discretion and risk, and you will be solely responsible for any damage to your device or computer system, or loss of data resulting therefrom.\
To the maximum extent permitted by law, and subject to the final paragraph in this Section 7, our liability to you for any damages arising from or related to these Terms (for any cause whatsoever and regardless of the form of the action), will at all times be limited to a maximum of fifty pounds sterling (GBP 50). The existence of more than one claim will not enlarge this limit. You agree that our suppliers will have no liability of any kind arising from or relating to these Terms.\
The exclusions in this Section 7 shall apply to the maximum extent permitted by law, but Company does not exclude liability for death or personal injury caused by its negligence, fraud or fraudulent misrepresentation, or any other liability which may not be excluded by law.<br>

### 8. TERM AND TERMINATION.

Subject to this Section, these Terms will remain in full force and effect while you use the Site. We may suspend or terminate your rights to use the Site (including your Account) at any time for any reason at our sole discretion, including for any use of the Site in violation of these Terms. Upon termination of your rights under these Terms, your Account and right to access and use the Site will terminate immediately. You understand that any termination of your Account may involve deletion of your User Content associated with your Account from our live databases. Company will not have any liability whatsoever to you for any termination of your rights under these Terms, including for termination of your Account or deletion of your User Content. Even after your rights under these Terms are terminated, the following provisions of these Terms will remain in effect: Sections 2.2 to 2.5, and Sections 3 to 9.<br>

### 9.GENERAL

#### 9.1 Changes.&#x20;

These Terms are subject to occasional revision, and if we make any substantial changes, we may notify you by sending you an e-mail to the last e-mail address you provided to us (if any), and/or by prominently posting notice of the changes on our Site. You are responsible for providing us with your most current e-mail address. In the event that the last e-mail address that you have provided us is not valid, or for any reason is not capable of delivering to you the notice described above, our dispatch of the e-mail containing such notice will nonetheless constitute effective notice of the changes described in the notice. Any changes to these Terms will be effective upon the earlier of thirty (30) calendar days following our dispatch of an e-mail notice to you (if applicable) or thirty (30) calendar days following our posting of notice of the changes on our Site. These changes will be effective immediately for new users of our Site. Continued use of our Site following notice of such changes shall indicate your acknowledgement of such changes and agreement to be bound by the terms and conditions of such changes.

#### 9.2 Electronic Communications.&#x20;

The communications between you and Company use electronic means, whether you use the Site or send us emails, or whether Company posts notices on the Site or communicates with you via email. For contractual purposes, you (a) consent to receive communications from Company in an electronic form; and (b) agree that all terms and conditions, agreements, notices, disclosures, and other communications that Company provides to you electronically satisfy any legal requirement that such communications would satisfy if it were be in a hardcopy writing.

#### 9.3 Entire Terms.

&#x20;These Terms constitute the entire agreement between you and us regarding the use of the Site.

#### 9.4 Waiver.

&#x20;A waiver by Company of any right or remedy under these Terms shall only be effective if it is in writing, executed by a duly authorized representative of Company and shall apply only to the circumstances for which it is given. Our failure to exercise or enforce any right or remedy under these Terms shall not operate as a waiver of such right or remedy, nor shall it prevent any future exercise or enforcement of such right or remedy. No single or partial exercise of any right or remedy shall preclude or restrict the further exercise of any such right or remedy or other rights or remedies.

#### 9.5 Headings and Interpretation.

&#x20;The section titles in these Terms are for convenience only and have no legal or contractual effect. The word “including” means “including without limitation”.

#### 9.6 Severability.

&#x20;If any provision of these Terms is, for any reason, held to be invalid or unenforceable, the other provisions of these Terms will be unimpaired and the invalid or unenforceable provision will be deemed modified so that it is valid and enforceable to the maximum extent permitted by law.

#### 9.7 Relationship between you and us.&#x20;

You confirm that you are acting on your own behalf and not for the benefit of any other person. Your relationship to Company is that of an independent contractor, and neither party is an agent or partner of the other.

#### 9.8 Assignment.&#x20;

These Terms, and your rights and obligations herein, may not be assigned, subcontracted, delegated, or otherwise transferred by you without Company’s prior written consent, and any attempted assignment, subcontract, delegation, or transfer in violation of the foregoing will be null and void. Company may freely assign these Terms. The terms and conditions set forth in these Terms shall be binding upon assignees.

#### 9.9 Governing Law and Jurisdiction.&#x20;

These Terms and any dispute or claim arising out of or in connection with their subject matter or formation (including non-contractual disputes or claims) shall be governed by and construed in accordance with the law of England and Wales. You agree that the courts of England and Wales shall have exclusive jurisdiction to settle any dispute or claim arising out of or in connection with the subject matter or formation (including non-contractual disputes or claims) of these Terms.

#### 9.10 Copyright/Trademark Information.&#x20;

Copyright © 2020 Djuno Ltd.. All rights reserved. All trademarks, logos and service marks (“Marks”) displayed on the Site are our property or the property of other third parties. You are not permitted to use these Marks without our prior written consent or the consent of such third party which may own the Marks.

#### 9.11 Contact Information.

If you wish to contact us in writing, or if these Terms require you to give notice to us in writing, please contact us at:

#### &#x20;Djib Support Team Address: Lytchett House Wareham Road, 13 Freeland Park, Poole, England, BH16 6FA Email: <support@djib.io>

<br>


