API Reference

The Unibright ONE service API is a REST API with JSON payloads, callable from ERP and legacy systems. Every function of the platform is available as a service call; the web dashboard is optional.

Authentication

Request a token with your account credentials. The token is valid for 24 hours. Send it with every call that is marked Bearer token:

POST /api/account/token
Content-Type: application/json

{ "username": "you@example.com", "password": "…" }

→ use the returned JWT as
Authorization: Bearer <token>

Signatures: when you notarize with a UserSecret, the signature is SHA256(payload + user + userSecret), otherwise SHA256(payload + user). The user defaults to your account email address.

Account

Authenticate with your Unibright ONE credentials. API calls use a JWT bearer token.

POST /api/account/login

Login with your credentials

Request body · Credentials

Responses

200 Success, 401 Unauthorized

POST /api/account/logout

Sign out from a previous login

Responses

200 Success

POST /api/account/token

Request a JWT token with your credentials to make API calls

JWT token is valid for 24 hours

Request body · Credentials

Responses

200 Success, 401 Unauthorized

Notarizations

Notarize strings or business objects on the blockchain of your choice, optionally with a workgroup decision.

GET /api/Notarizations Bearer token

Get all your notarizations

Responses · Notarization[]

200 Success, 401 Unauthorized, 403 Forbidden

GET /api/Notarizations/{id} Bearer token

Get notarization by ID

Parameters

NameInDescription
id
int64
pathID of requested notarization required

Responses

200 Success, 401 Unauthorized, 403 Forbidden

GET /api/Notarizations/AllNotarizationTargets Bearer token

Get all notarization targets/blockchains. Used for overwriting the default notarization for a certain request.

Responses · string[]

200 Success, 401 Unauthorized, 403 Forbidden

POST /api/Notarizations/NotarizeString Bearer token

Notarize a string value and optionally have a workgroup decide on notarization

Will notarize the hash of your input string along with the hash of your signature on that notarization in the given target chain

Parameters

NameInDescription
NotarizationPayload
string
queryString to notarize - its hash notarized
Workgroup
string
query[Optional] The workgroup to decide upon notarization - all members will be notified and asked for approval/rejection
UserSecret
string
query[Optional] Allows for more entropy in the signature
OverwriteBlockchainTarget
string
query[Optional] Define a different blockchain target for this request - otherwise your default setting will be used

Responses

200 Success, 404 Not Found, 500 Server Error, 401 Unauthorized, 403 Forbidden

POST /api/Notarizations/NotarizeSyncTreeJSON Bearer token

Notarize a Business Object and optionally have a workgroup decide on notarization

Will notarize the root hash of your input business object in JSON notation along with the hash of your signature on that notarization in the given target chain.

Parameters

NameInDescription
MaskedAttributes
string
query[Optional] Array of masked attributes semicolon-separated for example: name; shipTo:city
Workgroup
string
query[Optional] The workgroup to decide upon notarization - all members will be notified and asked for approval/rejection
UserSecret
string
query[Optional] Allows for more entropy in the signature
OverwriteBlockchainTarget
string
query[Optional] Define a different blockchain target for this request - otherwise your default setting will be used

Request body · JSON

Business Object in JSON notation to notarize - will be transformed into a Synctree with its root hash notarized

Responses

200 Success, 404 Not Found, 500 Server Error, 401 Unauthorized, 403 Forbidden

SyncTree

Turn business objects into SyncTrees and back, with optional masking of attributes.

POST /api/SyncTree/CalculateSyncTree Bearer token

Calculates a SyncTree from a given business object JSON representation with all nodes and hashes

Parameters

NameInDescription
maskedAttributes
string
query[Optional] Array of masked attributes semicolon-separated for example: name; shipTo:city

Request body · JSON

Sample request

{
  "name": "John Smith",
  "sku": "20223",
  "price": 23.95,
  "shipTo": {
    "name": "Jane Smith",
    "address": "123 Maple Street",
    "city": "Pretendville",
    "state": "NY",
    "zip": "12345"
  },
  "billTo": {
    "name": "John Smith",
    "address": "123 Maple Street",
    "city": "Pretendville",
    "state": "NY",
    "zip": "12345"
  }
}

Responses

200 Success, 500 Server Error, 401 Unauthorized, 403 Forbidden

POST /api/SyncTree/RecreateObjectFromSyncTree Bearer token

Recreates a business object JSON out of a calculated SyncTree

Request body · JSON

Sample request

{
  "RootProof": "3c0677a62b5b8df6deaf70e32051ea92",
  "Nodes": [
    {
      "SyncTreeNodeID": "cc9e88f2-0334-47f5-b604-9aa5c7dcb9bd",
      "ParentNodeId": "29b70794-50ed-4f08-851f-8e55b62f866e",
      "Value": "name: John Smith",
      "IsLeaf": true,
      "IsRoot": false,
      "IsHash": false,
      "IsCovered": false,
      "Level": 0,
      "Index": 0
    },
    {
      "SyncTreeNodeID": "b597e39b-6745-48fd-b6e1-1cfa9fecd25a",
      "ParentNodeId": "29b70794-50ed-4f08-851f-8e55b62f866e",
      "Value": "sku: 20223",
      "IsLeaf": true,
      "IsRoot": false,
      "IsHash": false,
      "IsCovered": false,
      "Level": 0,
      "Index": 1
    },
    "… 29 more nodes"
  ]
}

Responses

200 Success, 500 Server Error, 401 Unauthorized, 403 Forbidden

Verifications

Verify that a notarization exists on chain and that it was signed by the claimed user.

GET /api/Verifications/AllNotarizationTargets Bearer token

Get all notarization targets/blockchains. Used for overwriting the default notarization for a certain request.

Responses · string[]

200 Success, 401 Unauthorized, 403 Forbidden

POST /api/Verifications/VerifyExistenceAndOwnership Bearer token

Verify existence and ownership (signature) of an existing string notarization

Parameters

NameInDescription
blockchainTarget
string
queryTarget blockchain target used for notarization
blockchainTxId
string
queryTarget blockchain specific ID of notarization transaction
PayloadToVerify
string
queryPayload to verify against notarized payload
SignatureToVerify
string
querySignature to verify against notarized signature
originalUser
string
queryUser identification used for signing - default is email address of user
userSecret
string
query[Optional] User secret used for signing, if any

Responses

200 Success, 404 Not Found, 500 Server Error, 401 Unauthorized, 403 Forbidden

POST /api/Verifications/VerifySynctree Bearer token

Verify existence and ownership (signature) of an existing business object notarization.

Original business object JSON was transformed in to a SyncTree with its root hash notarized - given hash of SynctreePayloadToVerify will be verified against stored hash

Parameters

NameInDescription
blockchainTarget
string
queryTarget blockchain target used for notarization
blockchainTxId
string
queryTarget blockchain specific ID of notarization transaction
SignatureToVerify
string
querySignature to verify against notarized signature
originalUser
string
queryUser identification used for signing - default is email address of user
userSecret
string
query[Optional] User secret used for signing, if any

Request body · JSON

SyncTree payload to verify against notarized payload

Responses

200 Success, 404 Not Found, 500 Server Error, 401 Unauthorized, 403 Forbidden

POST /api/Verifications/VerifySignature Bearer token

Signature used when UserSecret given: SHA256-HASH( PAYLOAD + USER + USERSECRET) else SHA256-HASH( PAYLOAD + USER)

Parameters

NameInDescription
payload
string
queryData to sign AKA payload
user
string
queryUser identifier within Unibright.ONE - default is user's email address
userSecret
string
query[Optional] salt given by user for more entropy in signature

Responses

200 Success, 401 Unauthorized, 403 Forbidden

Workgroups

Create workgroups, invite participants and manage invitations.

GET /api/Workgroups Bearer token

Get all workgroups created by you with their participants

Responses · Workgroup[]

200 Success, 401 Unauthorized, 403 Forbidden

GET /api/Workgroups/{id} Bearer token

Get a specific workgroup created by you and its participants

Parameters

NameInDescription
id
string
pathID of Workgroup to query required

Responses

200 Success, 401 Unauthorized, 403 Forbidden

GET /api/Workgroups/GetPendingWorkgroupInvitations Bearer token

Get all your pending workgroup invitations

Responses · WorkgroupParticipant[]

200 Success, 401 Unauthorized, 403 Forbidden

POST /api/Workgroups/Create Bearer token

Create a new workgroup with the given description. Participants are to be invited via invoking "InviteParticipant"

Parameters

NameInDescription
Description
string
queryWorkgroup description
ApprovalsForAutomaticAcceptance
int32
queryNumber of needed approvals for automatic acceptance within workgroup
AutomaticApprovalExiting
boolean
queryIf set to true will exit an approval within workgroup
ApprovalVetoPossible
boolean
queryIf set to true, one rejection within workgroup will prevent approval of notarization

Responses

200 Success, 404 Not Found, 500 Server Error, 401 Unauthorized, 403 Forbidden

POST /api/Workgroups/InviteParticipant Bearer token

Invite participants via their email to a workgroup. Users need to be registered in Unibright.ONE with the given email address

Parameters

NameInDescription
WorkgroupId
string
queryID of workgroup
ParticipantEmail
string
queryEmail address of the participant

Responses

200 Success, 404 Not Found, 500 Server Error, 401 Unauthorized, 403 Forbidden

POST /api/Workgroups/AcceptInvitation Bearer token

Accept a pending workgroup invitation

Parameters

NameInDescription
WorkgroupId
string
queryID of workgroup

Responses

200 Success, 404 Not Found, 500 Server Error, 401 Unauthorized, 403 Forbidden

POST /api/Workgroups/Leave Bearer token

Leave a workgroup you are member of

Parameters

NameInDescription
WorkgroupId
string
queryID of workgroup

Responses

200 Success, 404 Not Found, 500 Server Error, 401 Unauthorized, 403 Forbidden

POST /api/Workgroups/RemoveParticipant Bearer token

Remove a participant from a workgroup you created by email used for inviting the participant

Parameters

NameInDescription
WorkgroupId
string
queryID of workgroup
ParticipantEmail
string
queryEmail address of the participant

Responses

200 Success, 404 Not Found, 500 Server Error, 401 Unauthorized, 403 Forbidden

Models

Credentials

FieldTypeNotes
usernamestring
passwordstring

Notarization

FieldTypeNotes
userIdstringnullable
idint64
statusstring required
targetstring required
modestring required
payloadstringnullable
userSecretstringnullable
payloadHashstringnullable
signaturestringnullable
argumentsstringnullable
costsInCreditsdoublenullable
targetIdstringnullable
targetTransactionQuerystringnullable
workgroupstringnullable
notificationApprovalsint32nullable
notificationRejectionsint32nullable
exitPerformedboolean
exitNotarizationUserIdstringnullable
exitNotarizationIdint64
createTimedate-time required

Workgroup

FieldTypeNotes
workgroupIdstring required
descriptionstring required
numberOfApprovalsForAcceptanceint32
automaticExitWhenApprovedboolean
approvalVetoPossibleboolean
creatorIDstring required
creatorEmailstring required
participantsWorkgroupParticipant[]nullable

WorkgroupParticipant

FieldTypeNotes
workgroupIdstring required
participantEmailstring required
statusstring required
workgroupWorkgroup