Skip to content

Latest commit

 

History

History
158 lines (117 loc) · 3.17 KB

File metadata and controls

158 lines (117 loc) · 3.17 KB

JEP Go SDK v0.6

Go SDK for the JEP v0.6 API seed.

This SDK targets the current JEP API shape:

POST /events/create
POST /events/verify
GET  /health

It is aligned with:

  • draft-wang-jep-judgment-event-protocol-06
  • draft-wang-jep-profiles-00
  • draft-wang-jep-conformance-00
  • hjs-spec/jep-api

Status

Experimental implementation seed.

This SDK does not define new JEP-Core semantics and does not determine legal liability, factual truth, regulatory compliance, or complete-log availability.

Installation

go get github.com/hjs-spec/jep-sdk-go

Quick Start

package main

import (
    "fmt"
    "log"

    jep "github.com/hjs-spec/jep-sdk-go"
)

func main() {
    client := jep.NewClientWithURL("http://127.0.0.1:8000", "")

    resp, err := client.CreateEvent(&jep.CreateEventRequest{
        Verb: jep.VerbJudgment,
        Who:  "did:example:agent-789",
        What: map[string]interface{}{
            "claim": "approve",
        },
    })
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(resp.EventHash)

    result, err := client.VerifyEvent(&jep.VerifyEventRequest{
        Event: resp.Event,
        Mode: "archival",
    })
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(result.Valid)
}

Core Types

type JEPEvent struct {
    JEP     string                 `json:"jep"`
    Verb    Verb                   `json:"verb"`
    Who     string                 `json:"who"`
    When    int64                  `json:"when"`
    What    interface{}            `json:"what,omitempty"`
    Nonce   string                 `json:"nonce"`
    Aud     string                 `json:"aud,omitempty"`
    Ref     *string                `json:"ref,omitempty"`
    Ext     map[string]interface{} `json:"ext,omitempty"`
    ExtCrit []string               `json:"ext_crit,omitempty"`
    Sig     string                 `json:"sig,omitempty"`
}

Supported verbs:

jep.VerbJudgment
jep.VerbDelegation
jep.VerbTermination
jep.VerbVerification

API

Create event

resp, err := client.CreateEvent(&jep.CreateEventRequest{
    Verb: jep.VerbJudgment,
    Who:  "did:example:agent",
    What: "sha256:...",
})

Verify event

result, err := client.VerifyEvent(&jep.VerifyEventRequest{
    Event: resp.Event,
    Mode: "archival",
})

Convenience helpers

client.Judgment("did:example:agent", what)
client.Delegation("did:example:agent", what)
client.Termination("did:example:agent", what, &ref)
client.Verification("did:example:agent", what, ref)

Health

health, err := client.Health()

Testing

go test ./...

Tests use httptest and do not require a live API server.

Related Repositories

Public Drafts

License

MIT