Skip to content

Latest commit

 

History

History
188 lines (128 loc) · 4.22 KB

README.md

File metadata and controls

188 lines (128 loc) · 4.22 KB

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

Installation instructions

Set up environment

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:

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

You can inspect the Redis cache:

> docker restart redis-stack # if needed
> docker ps # get the container ID
> docker exec -it <container id> /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:

flushdb

Running the server

yarn install
yarn run dev

Run serverless offline

yarn svl-offline

Deployment

As a Lambda (but see #6 (comment)):

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/<network>/<did>/<contextName>/<databaseName>/<recordId>/<attribute>/<...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:

/<did>/<network>/<contextName>/<databaseName>/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

{
  "_id": "basicProfile",
  "_rev": "13-402d249600cfe3984a6a90e459d348dc",
  "avatar": { "uri": "data:image/undefined;base64,/9j/4A....<truncated>" },
  "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:

{ "avatar": { "uri": "data:image/undefined;base64,/9j/4A....<truncated>" } }

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

{ "avatar": { "uri": "data:image/undefined;base64,/9j/4A....<truncated>" } }

Fetch IFPS data

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