A web service that exposes the ssi-sdk as an HTTP API. Support operations for Verifiable Credentials, Decentralized Identifiers and things Self Sovereign Identity!
The Self Sovereign Identity Service (SSIS) facilitates all things relating to DIDs and Verifiable Credentials - in a box! The service is a part of a larger Decentralized Web Platform architecture which you can learn more about in our collaboration repo.
- Create and manage Decentralized Identifiers
- Create and manage Verifiable Credentials
- Credential Suspension
- Interacting with the standards around Verifiable Credentials such as
- Credential Revocations
- Applying for Credentials
- Exchanging Credentials
- Data Schemas (for credentials and other verifiable data)
Steps to issue an Employment Status Credential:
- Spin up and host the SSI-Service
- Add the ability for your employees to click 'apply for a credential' on your internal EMS (should we show a front end button code example)
- Create an Issuer DID for your business
- Create a Schema
- Create a Credential Manifest
- Submit a Credential Application
There are sets of configuration values for the server (e.g. which port to listen on), the services (e.g. which database to use), and each service. Each service may define specific configuration, such as which DID methods are enabled for the DID service.
- On startup: SSI-Service loads default values into the SSIServiceConfig
- Checks for a TOML config file:
- If exists...load toml file
- If does not exist...it uses a default config defined in the code inline
- Finally, it loads the config/.env file and adds the env variables defined in this file to the final SSIServiceConfig
This project uses mage, please view CONTRIBUTING for more information.
After installing mage, you can build and test the SDK with the following commands:
mage build
mage test
A utility is provided to run clean, build, and test in sequence with:
mage cbt
The service is packaged as a Docker container, runnable in a wide variety of environments.
Docker Compose is used for simplification and orchestration. To run
the service, you can use the following command, which will start the service on port 8080
:
mage run
Or, you can run docker-compose yourself, building from source:
cd build && docker-compose up --build
To use the pre-published images:
cd build && docker-compose up -d
Note: port 3000 is used by default, specified in config.toml
, for the SSI Service process. If you're running
via mage run
or docker compose, the port to access will be 8080
.
Run for health check (status: OK, then you are up):
~ curl localhost:3000/health
{"status":"OK"}
Run to check if all services are up and ready (credential, did, and schema):
~ curl localhost:8080/readiness
{
"status": {
"status": "ready",
"message": "all service ready"
},
"serviceStatuses": {
"credential": {
"status": "ready"
},
"did": {
"status": "ready"
},
"schema": {
"status": "ready"
}
}
}
CI is managed via GitHub Actions. Actions are triggered to run
for each Pull Request, and on merge to main
. You can run CI locally using a tool
like act.
You can find all HTTP endpoints by checking out the swagger docs at: http://localhost:8002/docs
Note: Your port by differ, the range of the ports for swagger are between 8002
and 8080
.
- DID Management
- Verifiable Credential Schema Management
- Verifiable Credential Issuance & Verification
- Signing and verification with JWTs
- Signing and verification with Data Integrity Proofs
- Applying for Verifiable Credentials using Credential Manifest
- Requesting, Receiving, and the Validation of Verifiable Claims using Presentation Exchange
- Status of Verifiable Credentials using the Status List 2021
- Creating and managing Trust documents using Trust Establishment
- DID Well Known Configuration documents
The vision for the project is laid out in this document.
The project follows a proposal-based improvement format called SIPs, outlined here..
Please open a discussion, join Discord SSI conversations, or issue if you are interested in helping shape the future of the project.
Resource | Description |
---|---|
VISION | Outlines the project vision |
SIPs | Proposals for improving the SSI Service |
VERSIONING | Project versioning strategy |
CODEOWNERS | Outlines the project lead(s) |
CODE_OF_CONDUCT | Expected behavior for project contributors, promoting a welcoming environment |
CONTRIBUTING | Developer guide to build, test, run, access CI, chat, discuss, file issues |
GOVERNANCE | Project governance |
SECURITY | Vulnerability and bug reporting |
LICENSE | Apache License, Version 2.0 |