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
- Host: GitHub
- URL: https://github.com/verida/network-data-api
- Owner: verida
- Created: 2023-03-06T11:06:34.000Z (over 3 years ago)
- Default Branch: develop
- Last Pushed: 2024-08-02T07:36:34.000Z (about 2 years ago)
- Last Synced: 2024-12-31T02:42:12.542Z (over 1 year ago)
- Language: TypeScript
- Size: 219 KB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
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