Giter VIP home page Giter VIP logo

ssi-service's Introduction

godoc ssi-service go version 1.19.4 license Apache 2 issues push

ssi-service

A web service that exposes the ssi-sdk as an HTTP API. Support operations for Verifiable Credentials, Decentralized Identifiers and things Self Sovereign Identity!

Introduction

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.

Core Functionality

  • 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)

Use Cases (more to come!)

Business: Issuing Verifiable Credentials

Follow Tutorial

Steps to issue an Employment Status Credential:

  1. Spin up and host the SSI-Service
  2. 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)
  3. Create an Issuer DID for your business
  4. Create a Schema
  5. Create a Credential Manifest
  6. Submit a Credential Application

Configuration

Managed via: TOML file

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.

Steps for SSI-Service to consume its configuration:

  1. On startup: SSI-Service loads default values into the SSIServiceConfig
  2. 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
  1. Finally, it loads the config/.env file and adds the env variables defined in this file to the final SSIServiceConfig

Build & Test

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

Deployment

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

Health and Readiness Checks

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"
        }
    }
}

Continuous Integration

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.

HTTP Endpoints

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.

What's Supported?

Vision, Features, and Development

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.

Project Resources

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

ssi-service's People

Contributors

decentralgabe avatar dependabot[bot] avatar andresuribe87 avatar nitro-neal avatar michaelneale avatar atsushii avatar andorsk avatar alrubinger avatar angiejones avatar mistermoe avatar bobbilee19 avatar frankhinek avatar pdxjohnny avatar suutaku avatar moza88 avatar shobitb avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.