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
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
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
yarn install
yarn run dev
yarn svl-offline
As a Lambda (but see #6 (comment)):
nvm use
export AWS_PROFILE=verida-original
yarn deploy-prod
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.
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
It's possible to load the stats for a particular network:
/network/banksia/stats
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
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 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>" } }
/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>" } }
https://data.verida.network/ipfs/QmezTsjRwoi5XoqYLCH6sz4RSjXDUMXWGGFrVDxZh19p9j