An open API service indexing awesome lists of open source software.

https://github.com/verida/network-data-api

An API that returns public data from the Verida network
https://github.com/verida/network-data-api

Last synced: 6 months ago
JSON representation

An API that returns public data from the Verida network

Awesome Lists containing this project

README

          

# Verida Network Data API

https://github.com/verida/network-data-api

This is a generic API that fetches public data from the Verida network. It also supports fetching IPFS records uploaded via Moralis.

This server is hosted publicly at: [https://data.verida.network](https://data.verida.network)

## Installation instructions

### Set up environment

```sh
cp .env.example .env
```

**`.env` File contains**

- ENABLED_REDIS_CACHE -> Enable Redis cache
- SERVER_PORT -> Optional, defaults to 8182
- REDIS_HOST -> hostname of the Redis server
- REDIS_PORT -> port of the r=Redis server
- CACHE_DATA_TIMEOUT_SECONDS -> Timeout for cache data entries

### Local Redis

Using Docker:

```sh
docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest
```

You can inspect the Redis cache:

```sh
> docker restart redis-stack # if needed
> docker ps # get the container ID
> docker exec -it /bin/sh # get a shell
> redis-cli # start the the redis cli
```

To clear all the caches get the redis-cli (as above) and then:

```sh
flushdb
```

## Running the server

```sh
yarn install
yarn run dev
```

## Run serverless offline

```sh
yarn svl-offline
```

## Deployment

As a Lambda (but see https://github.com/verida/network-data-api/issues/6#issue-1696826403):

```
nvm use
export AWS_PROFILE=verida-original
yarn deploy-prod
```

## Usage

Make HTTP GET requests to fetch data from the network in the following format:

```
https://localhost:8182///////<...deepAttributes>
```

`did`, `contextName`, `databaseName` and `recordId` are required. The rest are optional.

If an `attribute` is specified, just that attribute value from the record is returned.

### Deep attributes

`deepAttributes` represent an unlimited number of levels that can be retrevied with in a JSON result.

Assume there is a record with the following data:

```
{
_id: 'test-record',
data: {
name: {
firstName: 'steve',
lastName: 'jones'
}
}
}
```

It's possible to fetch just `lastName` with:

```
/////test-record/data/name/lastName
```

### Network stats

It's possible to load the stats for a particular network:

```
/network/banksia/stats
```

### Network DIDs

It's possible to load a list of DIDs from network.

List the DIDs created from 21-30:

```
/network/polpos/dids?limit=10&offset=20
```

List the most recent 20 DIDs created:

```
/network/polamoy/dids?limit=20&order=-1
```

## Examples

### Fetch a record

Fetch a user's public profile:

```
/did:vda:polamoy:0x84746Ff2bC4E998fB23815f242d192912076e767/banksia/Verida:%20Vault/profile_public/basicProfile
```

This returns the full record with `_id=basicProfile`

```json
{
"_id": "basicProfile",
"_rev": "13-402d249600cfe3984a6a90e459d348dc",
"avatar": { "uri": "data:image/undefined;base64,/9j/4A...." },
"country": "Australia",
"description": "Help building user-centric and privacy-preserving applications with Verida",
"modifiedAt": "2023-03-03T04:50:32.227Z",
"name": "Aurel",
"schema": "https://common.schemas.verida.io/profile/basicProfile/v0.1.0/schema.json",
"signatures": {
"did:vda:polamoy:0x84746ff2bc4e998fb23815f242d192912076e767?context=0x3c51af440094f5e93e3421504b8203228804ea2bbcfb11a2790d25e5f8898f01": "0x4d173694cf32990e7fcea45b46da5f6b9af507a2ffc3904b3c71bf1a87817f7f671b55bc820c17a68384467039dddda4aaa5fada898fb91c0013fe44daf934ab1b"
}
}
```

### Fetch the attribute for a record

Fetch a user's public profile avatar:

```
/did:vda:polamoy:0x84746Ff2bC4E998fB23815f242d192912076e767/banksia/Verida:%20Vault/profile_public/basicProfile/avatar
```

This returns just the `avatar` attribute from the public profile record:

```json
{ "avatar": { "uri": "data:image/undefined;base64,/9j/4A...." } }
```

### Fetch a deep attribute for a record

```
/did:vda:polamoy:0x84746Ff2bC4E998fB23815f242d192912076e767/banksia/Verida:%20Vault/profile_public/basicProfile/avatar/uri
```

Returns just the `uri` part of the `avatar` attribute

```json
{ "avatar": { "uri": "data:image/undefined;base64,/9j/4A...." } }
```

### Fetch IFPS data

https://data.verida.network/ipfs/QmezTsjRwoi5XoqYLCH6sz4RSjXDUMXWGGFrVDxZh19p9j