SSI Service API (0.0.3)
Download OpenAPI specification:Download
The Self Sovereign Identity Service: Managing DIDs, Verifiable Credentials, and more!
Check service readiness
Readiness runs a number of application specific checks to see if all the relied upon services are healthy.
Responses
Response samples
- 200
{- "serviceStatuses": {
- "property1": {
- "message": "string",
- "status": "ready"
}, - "property2": {
- "message": "string",
- "status": "ready"
}
}, - "status": {
- "message": "string",
- "status": "ready"
}
}
List Verifiable Credentials
Checks for the presence of an optional query parameter and calls the associated filtered get method. Only one optional parameter is allowed to be specified.
query Parameters
issuer | string The issuer id, e.g. did:key:z6MkiTBz1ymuepAQ4HEHYSF1H8quG5GLVVQR3djdX3mDooWp |
schema | string The credentialSchema.id value to filter by |
subject | string The credentialSubject.id value to filter by |
pageSize | number Hint to the server of the maximum elements to return. More may be returned. When not set, the server will return all elements. |
pageToken | string Used to indicate to the server to return a specific page of the list results. Must match a previous requests' |
Responses
Response samples
- 200
- 400
- 500
{- "credentials": [
- {
- "credential": {
- "@context": null,
- "credentialSchema": {
- "digestSRI": "string",
- "id": "string",
- "type": "string"
}, - "credentialStatus": null,
- "credentialSubject": {
- "property1": null,
- "property2": null
}, - "evidence": [
- null
], - "expirationDate": "string",
- "id": "string",
- "issuanceDate": "string",
- "issuer": null,
- "proof": null,
- "refreshService": {
- "id": "string",
- "type": "string"
}, - "termsOfUse": [
- {
- "id": "string",
- "profile": "string",
- "prohibition": [
- {
- "action": [
- "string"
], - "assignee": "string",
- "assigner": "string",
- "target": "string"
}
], - "type": "string"
}
], - "type": null
}, - "credentialJwt": "string",
- "fullyQualifiedVerificationMethodId": "string",
- "id": "string",
- "revoked": true,
- "suspended": true
}
], - "nextPageToken": "string"
}
Create a Verifiable Credential
Create a Verifiable Credential
Request Body schema: application/json
request body
@context | string A context is optional. If not present, we'll apply default, required context values. |
required | object Claims about the subject. The keys should be predicates (e.g. "alumniOf"), and the values can be any object. |
evidence | Array of any Optional. Corresponds to |
expiry | string Optional. Corresponds to |
issuer required | string The issuer id. |
revocable | boolean Whether this credential can be revoked. When true, the created VC will have the "credentialStatus" property set. |
schemaId | string A schema ID is optional. If present, we'll attempt to look it up and validate the data against it. |
subject required | string The subject id. |
suspendable | boolean Whether this credential can be suspended. When true, the created VC will have the "credentialStatus" property set. |
verificationMethodId required | string The id of the verificationMethod (see https://www.w3.org/TR/did-core/#verification-methods) who's privateKey is
stored in ssi-service. The verificationMethod must be part of the did document associated with |
Responses
Request samples
- Payload
{- "@context": "",
- "data": {
- "alumniOf": "did_for_uni"
}, - "evidence": [
- "[{\"id\":\"https://example.edu/evidence/f2aeec97-fc0d-42bf-8ca7-0548192d4231\"",
- "\"type\":[\"DocumentVerification\"]}]"
], - "expiry": "2029-01-01T19:23:24Z",
- "issuer": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3",
- "revocable": true,
- "schemaId": "30e3f9b7-0528-4f6f-8aac-b74c8843187a",
- "subject": "did:key:z6MkiTBz1ymuepAQ4HEHYSF1H8quG5GLVVQR3djdX3mDooWp",
- "suspendable": false,
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
Response samples
- 201
- 400
- 500
{- "credential": {
- "@context": null,
- "credentialSchema": {
- "digestSRI": "string",
- "id": "string",
- "type": "string"
}, - "credentialStatus": null,
- "credentialSubject": {
- "property1": null,
- "property2": null
}, - "evidence": [
- null
], - "expirationDate": "string",
- "id": "string",
- "issuanceDate": "string",
- "issuer": null,
- "proof": null,
- "refreshService": {
- "id": "string",
- "type": "string"
}, - "termsOfUse": [
- {
- "id": "string",
- "profile": "string",
- "prohibition": [
- {
- "action": [
- "string"
], - "assignee": "string",
- "assigner": "string",
- "target": "string"
}
], - "type": "string"
}
], - "type": null
}, - "credentialJwt": "string",
- "fullyQualifiedVerificationMethodId": "string",
- "id": "string",
- "revoked": true,
- "suspended": true
}
Get a Verifiable Credential
Get a Verifiable Credential by its ID
path Parameters
id required | string ID of the credential within SSI-Service. Must be a UUID. |
Responses
Response samples
- 200
- 400
- 500
{- "credential": {
- "@context": null,
- "credentialSchema": {
- "digestSRI": "string",
- "id": "string",
- "type": "string"
}, - "credentialStatus": null,
- "credentialSubject": {
- "property1": null,
- "property2": null
}, - "evidence": [
- null
], - "expirationDate": "string",
- "id": "string",
- "issuanceDate": "string",
- "issuer": null,
- "proof": null,
- "refreshService": {
- "id": "string",
- "type": "string"
}, - "termsOfUse": [
- {
- "id": "string",
- "profile": "string",
- "prohibition": [
- {
- "action": [
- "string"
], - "assignee": "string",
- "assigner": "string",
- "target": "string"
}
], - "type": "string"
}
], - "type": null
}, - "credentialJwt": "string",
- "fullyQualifiedVerificationMethodId": "string",
- "id": "string",
- "revoked": true,
- "suspended": true
}
Update a Verifiable Credential's status
Update a Verifiable Credential's status
path Parameters
id required | string ID |
Request Body schema: application/json
request body
revoked | boolean The new revoked status of this credential. The status will be saved in the encodedList of the StatusList2021 credential associated with this VC. |
suspended | boolean |
Responses
Request samples
- Payload
{- "revoked": true,
- "suspended": true
}
Response samples
- 201
- 400
- 500
{- "revoked": true,
- "suspended": true
}
Batch create Credentials
Create a batch of Verifiable Credentials.
Request Body schema: application/json
The batch requests
required | Array of objects (pkg_server_router.CreateCredentialRequest) Required. The list of create credential requests. Cannot be more than {{.Services.CredentialConfig.BatchCreateMaxItems}} items. | ||||||||||||||||||||
Array
|
Responses
Request samples
- Payload
{- "requests": [
- {
- "@context": "",
- "data": {
- "alumniOf": "did_for_uni"
}, - "evidence": [
- "[{\"id\":\"https://example.edu/evidence/f2aeec97-fc0d-42bf-8ca7-0548192d4231\"",
- "\"type\":[\"DocumentVerification\"]}]"
], - "expiry": "2029-01-01T19:23:24Z",
- "issuer": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3",
- "revocable": true,
- "schemaId": "30e3f9b7-0528-4f6f-8aac-b74c8843187a",
- "subject": "did:key:z6MkiTBz1ymuepAQ4HEHYSF1H8quG5GLVVQR3djdX3mDooWp",
- "suspendable": false,
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
]
}
Response samples
- 201
- 400
- 500
{- "credentials": [
- {
- "credential": {
- "@context": null,
- "credentialSchema": {
- "digestSRI": "string",
- "id": "string",
- "type": "string"
}, - "credentialStatus": null,
- "credentialSubject": {
- "property1": null,
- "property2": null
}, - "evidence": [
- null
], - "expirationDate": "string",
- "id": "string",
- "issuanceDate": "string",
- "issuer": null,
- "proof": null,
- "refreshService": {
- "id": "string",
- "type": "string"
}, - "termsOfUse": [
- {
- "id": "string",
- "profile": "string",
- "prohibition": [
- {
- "action": [
- "string"
], - "assignee": "string",
- "assigner": "string",
- "target": "string"
}
], - "type": "string"
}
], - "type": null
}, - "credentialJwt": "string",
- "fullyQualifiedVerificationMethodId": "string",
- "id": "string",
- "revoked": true,
- "suspended": true
}
]
}
Get a Credential Status List
Get a credential status list by its ID
path Parameters
id required | string ID |
Responses
Response samples
- 200
- 400
- 500
{- "credential": {
- "@context": null,
- "credentialSchema": {
- "digestSRI": "string",
- "id": "string",
- "type": "string"
}, - "credentialStatus": null,
- "credentialSubject": {
- "property1": null,
- "property2": null
}, - "evidence": [
- null
], - "expirationDate": "string",
- "id": "string",
- "issuanceDate": "string",
- "issuer": null,
- "proof": null,
- "refreshService": {
- "id": "string",
- "type": "string"
}, - "termsOfUse": [
- {
- "id": "string",
- "profile": "string",
- "prohibition": [
- {
- "action": [
- "string"
], - "assignee": "string",
- "assigner": "string",
- "target": "string"
}
], - "type": "string"
}
], - "type": null
}, - "credentialJwt": "string",
- "id": "string"
}
Batch Update a Verifiable Credential's status
Updates the status all a batch of Verifiable Credentials.
Request Body schema: application/json
request body
required | Array of objects (pkg_server_router.SingleUpdateCredentialStatusRequest) Required. The list of update credential requests. Cannot be more than the config value in | ||||||
Array
|
Responses
Request samples
- Payload
{- "requests": [
- {
- "id": "string",
- "revoked": true,
- "suspended": true
}
]
}
Response samples
- 201
- 400
- 500
{- "credentialStatuses": [
- {
- "id": "string",
- "revoked": true,
- "suspended": true
}
]
}
Verify a Verifiable Credential
Verifies a given verifiable credential. The system does the following levels of verification:
- Makes sure the credential has a valid signature
- Makes sure the credential has is not expired
- Makes sure the credential complies with the VC Data Model v1.1
- If the credential has a schema, makes sure its data complies with the schema
Request Body schema: application/json
request body
object A credential secured via data integrity. Must have the "proof" property set. | |
credentialJwt | string A JWT that encodes a credential. |
Responses
Request samples
- Payload
{- "credential": {
- "@context": null,
- "credentialSchema": {
- "digestSRI": "string",
- "id": "string",
- "type": "string"
}, - "credentialStatus": null,
- "credentialSubject": {
- "property1": null,
- "property2": null
}, - "evidence": [
- null
], - "expirationDate": "string",
- "id": "string",
- "issuanceDate": "string",
- "issuer": null,
- "proof": null,
- "refreshService": {
- "id": "string",
- "type": "string"
}, - "termsOfUse": [
- {
- "id": "string",
- "profile": "string",
- "prohibition": [
- {
- "action": [
- "string"
], - "assignee": "string",
- "assigner": "string",
- "target": "string"
}
], - "type": "string"
}
], - "type": null
}, - "credentialJwt": "string"
}
Response samples
- 200
- 400
- 500
{- "reason": "string",
- "verified": true
}
Create DID Configurations
Creates a DID Configuration Resource which conforms to https://identity.foundation/.well-known/resources/did-configuration/#did-configuration-resource
The didConfiguration
can be hosted at the wellKnownLocation
specified in the response.
Request Body schema: application/json
request body
expirationDate required | string Will be used to set the |
issuanceDate | string Will be used to set the |
issuerDid required | string DID that identifies who the issuer of the credential(s) will be. Required. |
origin required | string Serialization of an origin as described in https://html.spec.whatwg.org/multipage/browsers.html#origin. Represents
the origin that the IssuerDID controls, which will be included in the |
verificationMethodId required | string The id of the verificationMethod (see https://www.w3.org/TR/did-core/#verification-methods) who's privateKey is
stored in ssi-service. The verificationMethod must be part of the did document associated with |
Responses
Request samples
- Payload
{- "expirationDate": "2051-10-05T14:48:00.000Z",
- "issuanceDate": "2021-10-05T14:48:00.000Z",
- "issuerDid": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3",
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
Response samples
- 201
- 400
- 500
{- "didConfiguration": {
- "@context": null,
- "linked_dids": [
- null
]
}, - "wellKnownLocation": "string"
}
Verifies a DID Configuration Resource
Verifies a DID Configuration Resource according to https://identity.foundation/.well-known/resources/did-configuration/#did-configuration-resource-verification
Request Body schema: application/json
request body
origin required | string Represents an origin to fetch the DID Configuration Resource from. Must be serialized as described in https://html.spec.whatwg.org/multipage/browsers.html#origin.
The |
Responses
Request samples
- Payload
{
}
Response samples
- 201
- 400
- 500
{- "didConfiguration": "string",
- "reason": "string",
- "verified": true
}
List DIDs by method
List DIDs by method. Checks for an optional "deleted=true" query parameter, which exclusively returns DIDs that have been "Soft Deleted".
path Parameters
method required | string Method must be one returned by GET /v1/dids |
query Parameters
deleted | boolean When true, returns soft-deleted DIDs. Otherwise, returns DIDs that have not been soft-deleted. Default is false. |
pageSize | number Hint to the server of the maximum elements to return. More may be returned. When not set, the server will return all elements. |
pageToken | string Used to indicate to the server to return a specific page of the list results. Must match a previous requests' |
Responses
Response samples
- 200
- 400
- 500
{- "dids": [
- {
- "@context": null,
- "alsoKnownAs": "string",
- "assertionMethod": [
- null
], - "authentication": [
- null
], - "capabilityDelegation": [
- null
], - "capabilityInvocation": [
- null
], - "controller": "string",
- "id": "string",
- "keyAgreement": [
- null
], - "service": [
- {
- "accept": [
- "string"
], - "id": "string",
- "routingKeys": [
- "string"
], - "serviceEndpoint": null,
- "type": "string"
}
], - "verificationMethod": [
- {
- "blockchainAccountId": "string",
- "controller": "string",
- "id": "string",
- "publicKeyBase58": "string",
- "publicKeyJwk": {
- "alg": "string",
- "crv": "string",
- "e": "string",
- "key_ops": "string",
- "kid": "string",
- "kty": "string",
- "n": "string",
- "use": "string",
- "x": "string",
- "y": "string"
}, - "publicKeyMultibase": "string",
- "type": "string"
}
]
}
], - "nextPageToken": "string"
}
Create a DID Document
Creates a fully custodial DID document with the given method. The document created is stored internally and can be retrieved using the GetOperation. Method dependent registration (for example, DID web registration) is left up to the clients of this API. The private key(s) created by the method are stored internally never leave the service boundary.
path Parameters
method required | string Method |
Request Body schema: application/json
request body
keyType required | string Enum: "Ed25519" "X25519" "secp256k1" "secp256k1-ECDSA" "P-224" "P-256" "P-384" "P-521" "RSA" "BLS12381G1" "BLS12381G2" "Dilithium2" "Dilithium3" "Dilithium5" Identifies the cryptographic algorithm family to use when generating this key. |
object Options for creating the DID. Implementation dependent on the method. |
Responses
Request samples
- Payload
{- "keyType": "Ed25519",
- "options": {
- "jwsPublicKeys": [
- "string"
], - "serviceEndpoints": [
- {
- "accept": [
- "string"
], - "id": "string",
- "routingKeys": [
- "string"
], - "serviceEndpoint": null,
- "type": "string"
}
]
}
}
Response samples
- 201
- 400
- 500
{- "did": {
- "@context": null,
- "alsoKnownAs": "string",
- "assertionMethod": [
- null
], - "authentication": [
- null
], - "capabilityDelegation": [
- null
], - "capabilityInvocation": [
- null
], - "controller": "string",
- "id": "string",
- "keyAgreement": [
- null
], - "service": [
- {
- "accept": [
- "string"
], - "id": "string",
- "routingKeys": [
- "string"
], - "serviceEndpoint": null,
- "type": "string"
}
], - "verificationMethod": [
- {
- "blockchainAccountId": "string",
- "controller": "string",
- "id": "string",
- "publicKeyBase58": "string",
- "publicKeyJwk": {
- "alg": "string",
- "crv": "string",
- "e": "string",
- "key_ops": "string",
- "kid": "string",
- "kty": "string",
- "n": "string",
- "use": "string",
- "x": "string",
- "y": "string"
}, - "publicKeyMultibase": "string",
- "type": "string"
}
]
}
}
Soft delete a DID
When this is called with the correct did method and id it will flip the softDelete flag to true for the db entry. A user can still get the did if they know the DID ID, and the did keys will still exist, but this did will not show up in the ListDIDsByMethod call This facilitates a clean SSI-Service Admin UI but not leave any hanging VCs with inaccessible hanging DIDs. Soft deletes a DID by its method
path Parameters
method required | string Method |
id required | string ID |
Responses
Response samples
- 204
- 400
- 500
"string"
Get a DID
Gets a DID Document by its DID ID
path Parameters
method required | string Method |
id required | string ID |
Request Body schema: application/json
request body
keyType required | string Enum: "Ed25519" "X25519" "secp256k1" "secp256k1-ECDSA" "P-224" "P-256" "P-384" "P-521" "RSA" "BLS12381G1" "BLS12381G2" "Dilithium2" "Dilithium3" "Dilithium5" Identifies the cryptographic algorithm family to use when generating this key. |
options | any Options for creating the DID. Implementation dependent on the method. |
Responses
Request samples
- Payload
{- "keyType": "Ed25519",
- "options": null
}
Response samples
- 200
- 400
{- "did": {
- "@context": null,
- "alsoKnownAs": "string",
- "assertionMethod": [
- null
], - "authentication": [
- null
], - "capabilityDelegation": [
- null
], - "capabilityInvocation": [
- null
], - "controller": "string",
- "id": "string",
- "keyAgreement": [
- null
], - "service": [
- {
- "accept": [
- "string"
], - "id": "string",
- "routingKeys": [
- "string"
], - "serviceEndpoint": null,
- "type": "string"
}
], - "verificationMethod": [
- {
- "blockchainAccountId": "string",
- "controller": "string",
- "id": "string",
- "publicKeyBase58": "string",
- "publicKeyJwk": {
- "alg": "string",
- "crv": "string",
- "e": "string",
- "key_ops": "string",
- "kid": "string",
- "kty": "string",
- "n": "string",
- "use": "string",
- "x": "string",
- "y": "string"
}, - "publicKeyMultibase": "string",
- "type": "string"
}
]
}
}
Updates a DID document.
Updates a DID for which SSI is the custodian. The DID must have been previously created by calling the "Create DID Document" endpoint. Currently, only ION dids support updates.
path Parameters
method required | string Method |
id required | string ID |
Request Body schema: application/json
request body
required | object Expected to be populated when | ||||||||
|
Responses
Request samples
- Payload
{- "stateChange": {
- "publicKeyIdsToRemove": [
- "string"
], - "publicKeysToAdd": [
- {
- "id": "string",
- "publicKeyJwk": {
- "alg": "string",
- "crv": "string",
- "e": "string",
- "key_ops": "string",
- "kid": "string",
- "kty": "string",
- "n": "string",
- "use": "string",
- "x": "string",
- "y": "string"
}, - "purposes": [
- "authentication"
], - "type": "string"
}
], - "serviceIdsToRemove": [
- "string"
], - "servicesToAdd": [
- {
- "accept": [
- "string"
], - "id": "string",
- "routingKeys": [
- "string"
], - "serviceEndpoint": null,
- "type": "string"
}
]
}
}
Response samples
- 200
- 400
- 500
{- "did": {
- "@context": null,
- "alsoKnownAs": "string",
- "assertionMethod": [
- null
], - "authentication": [
- null
], - "capabilityDelegation": [
- null
], - "capabilityInvocation": [
- null
], - "controller": "string",
- "id": "string",
- "keyAgreement": [
- null
], - "service": [
- {
- "accept": [
- "string"
], - "id": "string",
- "routingKeys": [
- "string"
], - "serviceEndpoint": null,
- "type": "string"
}
], - "verificationMethod": [
- {
- "blockchainAccountId": "string",
- "controller": "string",
- "id": "string",
- "publicKeyBase58": "string",
- "publicKeyJwk": {
- "alg": "string",
- "crv": "string",
- "e": "string",
- "key_ops": "string",
- "kid": "string",
- "kty": "string",
- "n": "string",
- "use": "string",
- "x": "string",
- "y": "string"
}, - "publicKeyMultibase": "string",
- "type": "string"
}
]
}
}
Batch Create DIDs
Create a batch of DIDs. The operation is atomic, meaning that all requests will
succeed or fail. This is currently only supported for the DID method named did:key
.
path Parameters
method required | string Method. Only |
Request Body schema: application/json
The batch requests
required | Array of objects (pkg_server_router.CreateDIDByMethodRequest) Required. The list of create credential requests. Cannot be more than {{.Services.DIDConfig.BatchCreateMaxItems}} items. | ||||
Array
|
Responses
Request samples
- Payload
{- "requests": [
- {
- "keyType": "Ed25519",
- "options": null
}
]
}
Response samples
- 201
- 400
- 500
{- "dids": [
- {
- "@context": null,
- "alsoKnownAs": "string",
- "assertionMethod": [
- null
], - "authentication": [
- null
], - "capabilityDelegation": [
- null
], - "capabilityInvocation": [
- null
], - "controller": "string",
- "id": "string",
- "keyAgreement": [
- null
], - "service": [
- {
- "accept": [
- "string"
], - "id": "string",
- "routingKeys": [
- "string"
], - "serviceEndpoint": null,
- "type": "string"
}
], - "verificationMethod": [
- {
- "blockchainAccountId": "string",
- "controller": "string",
- "id": "string",
- "publicKeyBase58": "string",
- "publicKeyJwk": {
- "alg": "string",
- "crv": "string",
- "e": "string",
- "key_ops": "string",
- "kid": "string",
- "kty": "string",
- "n": "string",
- "use": "string",
- "x": "string",
- "y": "string"
}, - "publicKeyMultibase": "string",
- "type": "string"
}
]
}
]
}
Resolve a DID
Resolve a DID that may not be stored in this service
path Parameters
id required | string ID |
Responses
Response samples
- 200
- 400
{- "didDocument": {
- "@context": null,
- "alsoKnownAs": "string",
- "assertionMethod": [
- null
], - "authentication": [
- null
], - "capabilityDelegation": [
- null
], - "capabilityInvocation": [
- null
], - "controller": "string",
- "id": "string",
- "keyAgreement": [
- null
], - "service": [
- {
- "accept": [
- "string"
], - "id": "string",
- "routingKeys": [
- "string"
], - "serviceEndpoint": null,
- "type": "string"
}
], - "verificationMethod": [
- {
- "blockchainAccountId": "string",
- "controller": "string",
- "id": "string",
- "publicKeyBase58": "string",
- "publicKeyJwk": {
- "alg": "string",
- "crv": "string",
- "e": "string",
- "key_ops": "string",
- "kid": "string",
- "kty": "string",
- "n": "string",
- "use": "string",
- "x": "string",
- "y": "string"
}, - "publicKeyMultibase": "string",
- "type": "string"
}
]
}, - "didDocumentMetadata": {
- "canonicalId": "string",
- "created": "string",
- "deactivated": true,
- "equivalentId": [
- "string"
], - "method": {
- "published": true,
- "recoveryCommitment": "string",
- "updateCommitment": "string"
}, - "nextUpdate": "string",
- "nextVersionId": "string",
- "updated": "string",
- "versionId": "string"
}, - "didResolutionMetadata": {
- "contentType": "string",
- "error": {
- "code": "string",
- "invalidDid": true,
- "notFound": true,
- "representationNotSupported": true
}
}
}
Create an issuance template
Creates an issuance template
Request Body schema: application/json
request body
credentialManifest required | string ID of the credential manifest that this template corresponds to. |
Array of objects (github_com_tbd54566975_ssi-service_pkg_service_issuance.CredentialTemplate) Info required to create a credential from a credential application. | |
id | string ID of this template. |
issuer required | string ID of the issuer that will be issuing the credentials. |
verificationMethodId required | string The id of the verificationMethod (see https://www.w3.org/TR/did-core/#verification-methods) who's privateKey is
stored in ssi-service. The verificationMethod must be part of the did document associated with |
Responses
Request samples
- Payload
{- "credentialManifest": "string",
- "credentials": [
- {
- "credentialInputDescriptor": "string",
- "data": {
- "property1": null,
- "property2": null
}, - "expiry": {
- "duration": -9223372036854776000,
- "time": "string"
}, - "id": "string",
- "revocable": true,
- "schema": "string"
}
], - "id": "string",
- "issuer": "string",
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
Response samples
- 201
- 400
- 500
{- "credentialManifest": "string",
- "credentials": [
- {
- "credentialInputDescriptor": "string",
- "data": {
- "property1": null,
- "property2": null
}, - "expiry": {
- "duration": -9223372036854776000,
- "time": "string"
}, - "id": "string",
- "revocable": true,
- "schema": "string"
}
], - "id": "string",
- "issuer": "string",
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
Get an issuance template
Get an issuance template by its ID
path Parameters
id required | string ID |
Responses
Response samples
- 200
- 400
{- "credentialManifest": "string",
- "credentials": [
- {
- "credentialInputDescriptor": "string",
- "data": {
- "property1": null,
- "property2": null
}, - "expiry": {
- "duration": -9223372036854776000,
- "time": "string"
}, - "id": "string",
- "revocable": true,
- "schema": "string"
}
], - "id": "string",
- "issuer": "string",
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
Store a keys
Stores a key to be used by the service
Request Body schema: application/json
request body
base58PrivateKey required | string Base58 encoding of the bytes that result from marshalling the private key using golang's implementation. |
controller required | |
id required | string The |
type required | string Enum: "Ed25519" "X25519" "secp256k1" "secp256k1-ECDSA" "P-224" "P-256" "P-384" "P-521" "RSA" "BLS12381G1" "BLS12381G2" "Dilithium2" "Dilithium3" "Dilithium5" Identifies the cryptographic algorithm family used with the key. One of the following: "Ed25519", "X25519", "secp256k1", "P-224", "P-256", "P-384", "P-521", "RSA". |
Responses
Request samples
- Payload
{- "base58PrivateKey": "string",
- "controller": "string",
- "id": "string",
- "type": "Ed25519"
}
Response samples
- 400
- 500
"string"
Revoke a key
Marks a key as being revoked, along with the timestamps of when it was revoked. NB: the key can still be used for signing. This will likely be addressed before v1 is released.
path Parameters
id required | string ID of the key to revoke |
Responses
Response samples
- 200
- 400
- 500
{- "id": "string"
}
Get details for a key
Get details about a stored key
path Parameters
id required | string ID of the key to get |
Responses
Response samples
- 200
- 400
{- "controller": "string",
- "createdAt": "string",
- "id": "string",
- "publicKeyJwk": {
- "alg": "string",
- "crv": "string",
- "e": "string",
- "key_ops": "string",
- "kid": "string",
- "kty": "string",
- "n": "string",
- "use": "string",
- "x": "string",
- "y": "string"
}, - "type": "Ed25519"
}
List Credential Manifests
Checks for the presence of a query parameter and calls the associated filtered get method for Credential Manifests
query Parameters
issuer | string string issuer |
schema | string string schema |
subject | string string subject |
Responses
Response samples
- 200
- 400
- 500
{- "manifests": [
- {
- "credential_manifest": {
- "description": "string",
- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "id": "string",
- "issuer": {
- "id": "string",
- "name": "string",
- "styles": {
- "background": {
- "color": "string"
}, - "hero": {
- "alt": "string",
- "uri": "string"
}, - "text": {
- "color": "string"
}, - "thumbnail": {
- "alt": "string",
- "uri": "string"
}
}
}, - "name": "string",
- "output_descriptors": [
- {
- "description": "string",
- "display": {
- "description": {
- "fallback": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}, - "properties": [
- {
- "fallback": "string",
- "label": "string",
- "path": [
- null
], - "schema": {
- "format": null,
- "type": null
}, - "text": "string"
}
], - "subtitle": {
- "fallback": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}, - "title": {
- "fallback": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}
}, - "id": "string",
- "name": "string",
- "schema": "string",
- "styles": {
- "background": {
- "color": "string"
}, - "hero": {
- "alt": "string",
- "uri": "string"
}, - "text": {
- "color": "string"
}, - "thumbnail": {
- "alt": "string",
- "uri": "string"
}
}
}
], - "presentation_definition": {
- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "frame": null,
- "id": "string",
- "input_descriptors": [
- {
- "constraints": {
- "fields": [
- {
- "filter": null,
- "id": null,
- "intent_to_retain": null,
- "name": null,
- "optional": null,
- "path": [ ],
- "predicate": null,
- "purpose": null
}
], - "is_holder": [
- {
- "directive": null,
- "field_id": [ ]
}
], - "limit_disclosure": "required",
- "same_subject": [
- {
- "directive": null,
- "field_id": [ ]
}
], - "statuses": {
- "active": {
- "directive": null
}, - "revoked": {
- "directive": null
}, - "suspended": {
- "directive": null
}
}, - "subject_is_issuer": "required"
}, - "format": {
- "jwt": {
- "alg": [
- null
]
}, - "jwt_vc": {
- "alg": [
- null
]
}, - "jwt_vp": {
- "alg": [
- null
]
}, - "ldp": {
- "proof_type": [
- null
]
}, - "ldp_vc": {
- "proof_type": [
- null
]
}, - "ldp_vp": {
- "proof_type": [
- null
]
}
}, - "group": [
- "string"
], - "id": "string",
- "name": "string",
- "purpose": "string"
}
], - "name": "string",
- "purpose": "string",
- "submission_requirements": [
- {
- "count": 1,
- "from": "string",
- "from_nested": [
- { }
], - "max": 0,
- "min": 0,
- "name": "string",
- "purpose": "string",
- "rule": "all"
}
]
}, - "spec_version": "string"
}, - "id": "string"
}
]
}
Create a Credential Manifest
Create a Credential Manifest. Most fields map to the definitions from https://identity.foundation/credential-manifest/#general-composition.
Request Body schema: application/json
request body
description | string Explains what the Manifest in question is generally offering in exchange for meeting its requirements. Optional. |
required | object Formats that the issuer can support when issuing the credential. At least one needs to be set. We currently only
support |
issuerDid required | string DID that identifies who the issuer of the credential(s) will be. Required. |
issuerName | string Human-readable name the Issuer wishes to be recognized by. Optional. |
name | string Summarizing title for the Manifest in question. Optional. |
required | Array of objects (manifest.OutputDescriptor) Array of objects as defined in https://identity.foundation/credential-manifest/#output-descriptor. |
object value of the presentation definition to use. Must be empty if | |
presentationDefinitionId | string id of the presentation definition created with the PresentationDefinitions API. Must be empty if |
verificationMethodId required | string The id of the verificationMethod (see https://www.w3.org/TR/did-core/#verification-methods) who's privateKey is
stored in ssi-service. The verificationMethod must be part of the did document associated with |
Responses
Request samples
- Payload
{- "description": "string",
- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "issuerDid": "string",
- "issuerName": "string",
- "name": "string",
- "outputDescriptors": [
- {
- "description": "string",
- "display": {
- "description": {
- "fallback": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}, - "properties": [
- {
- "fallback": "string",
- "label": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}
], - "subtitle": {
- "fallback": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}, - "title": {
- "fallback": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}
}, - "id": "string",
- "name": "string",
- "schema": "string",
- "styles": {
- "background": {
- "color": "string"
}, - "hero": {
- "alt": "string",
- "uri": "string"
}, - "text": {
- "color": "string"
}, - "thumbnail": {
- "alt": "string",
- "uri": "string"
}
}
}
], - "presentationDefinition": {
- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "frame": null,
- "id": "string",
- "input_descriptors": [
- {
- "constraints": {
- "fields": [
- {
- "filter": {
- "additionalProperties": true,
- "allOf": null,
- "const": null,
- "enum": [
- null
], - "exclusiveMaximum": null,
- "exclusiveMinimum": null,
- "format": "string",
- "maxLength": 0,
- "maximum": null,
- "minLength": 0,
- "minimum": null,
- "not": null,
- "oneOf": null,
- "pattern": "string",
- "properties": null,
- "required": [
- "string"
], - "type": "string"
}, - "id": "string",
- "intent_to_retain": true,
- "name": "string",
- "optional": true,
- "path": [
- "string"
], - "predicate": "required",
- "purpose": "string"
}
], - "is_holder": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "limit_disclosure": "required",
- "same_subject": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "statuses": {
- "active": {
- "directive": "required"
}, - "revoked": {
- "directive": "required"
}, - "suspended": {
- "directive": "required"
}
}, - "subject_is_issuer": "required"
}, - "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "group": [
- "string"
], - "id": "string",
- "name": "string",
- "purpose": "string"
}
], - "name": "string",
- "purpose": "string",
- "submission_requirements": [
- {
- "count": 1,
- "from": "string",
- "from_nested": [
- { }
], - "max": 0,
- "min": 0,
- "name": "string",
- "purpose": "string",
- "rule": "all"
}
]
}, - "presentationDefinitionId": "string",
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
Response samples
- 201
- 400
- 500
{- "credential_manifest": {
- "description": "string",
- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "id": "string",
- "issuer": {
- "id": "string",
- "name": "string",
- "styles": {
- "background": {
- "color": "string"
}, - "hero": {
- "alt": "string",
- "uri": "string"
}, - "text": {
- "color": "string"
}, - "thumbnail": {
- "alt": "string",
- "uri": "string"
}
}
}, - "name": "string",
- "output_descriptors": [
- {
- "description": "string",
- "display": {
- "description": {
- "fallback": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}, - "properties": [
- {
- "fallback": "string",
- "label": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}
], - "subtitle": {
- "fallback": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}, - "title": {
- "fallback": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}
}, - "id": "string",
- "name": "string",
- "schema": "string",
- "styles": {
- "background": {
- "color": "string"
}, - "hero": {
- "alt": "string",
- "uri": "string"
}, - "text": {
- "color": "string"
}, - "thumbnail": {
- "alt": "string",
- "uri": "string"
}
}
}
], - "presentation_definition": {
- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "frame": null,
- "id": "string",
- "input_descriptors": [
- {
- "constraints": {
- "fields": [
- {
- "filter": {
- "additionalProperties": true,
- "allOf": null,
- "const": null,
- "enum": [
- null
], - "exclusiveMaximum": null,
- "exclusiveMinimum": null,
- "format": "string",
- "maxLength": 0,
- "maximum": null,
- "minLength": 0,
- "minimum": null,
- "not": null,
- "oneOf": null,
- "pattern": "string",
- "properties": null,
- "required": [
- null
], - "type": "string"
}, - "id": "string",
- "intent_to_retain": true,
- "name": "string",
- "optional": true,
- "path": [
- "string"
], - "predicate": "required",
- "purpose": "string"
}
], - "is_holder": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "limit_disclosure": "required",
- "same_subject": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "statuses": {
- "active": {
- "directive": "required"
}, - "revoked": {
- "directive": "required"
}, - "suspended": {
- "directive": "required"
}
}, - "subject_is_issuer": "required"
}, - "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "group": [
- "string"
], - "id": "string",
- "name": "string",
- "purpose": "string"
}
], - "name": "string",
- "purpose": "string",
- "submission_requirements": [
- {
- "count": 1,
- "from": "string",
- "from_nested": [
- { }
], - "max": 0,
- "min": 0,
- "name": "string",
- "purpose": "string",
- "rule": "all"
}
]
}, - "spec_version": "string"
}
}
Get a Credential Manifest
Get a Credential Manifest by its ID
path Parameters
id required | string ID |
Responses
Response samples
- 200
- 400
{- "credential_manifest": {
- "description": "string",
- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "id": "string",
- "issuer": {
- "id": "string",
- "name": "string",
- "styles": {
- "background": {
- "color": "string"
}, - "hero": {
- "alt": "string",
- "uri": "string"
}, - "text": {
- "color": "string"
}, - "thumbnail": {
- "alt": "string",
- "uri": "string"
}
}
}, - "name": "string",
- "output_descriptors": [
- {
- "description": "string",
- "display": {
- "description": {
- "fallback": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}, - "properties": [
- {
- "fallback": "string",
- "label": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}
], - "subtitle": {
- "fallback": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}, - "title": {
- "fallback": "string",
- "path": [
- "string"
], - "schema": {
- "format": "date-time",
- "type": "string"
}, - "text": "string"
}
}, - "id": "string",
- "name": "string",
- "schema": "string",
- "styles": {
- "background": {
- "color": "string"
}, - "hero": {
- "alt": "string",
- "uri": "string"
}, - "text": {
- "color": "string"
}, - "thumbnail": {
- "alt": "string",
- "uri": "string"
}
}
}
], - "presentation_definition": {
- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "frame": null,
- "id": "string",
- "input_descriptors": [
- {
- "constraints": {
- "fields": [
- {
- "filter": {
- "additionalProperties": true,
- "allOf": null,
- "const": null,
- "enum": [
- null
], - "exclusiveMaximum": null,
- "exclusiveMinimum": null,
- "format": "string",
- "maxLength": 0,
- "maximum": null,
- "minLength": 0,
- "minimum": null,
- "not": null,
- "oneOf": null,
- "pattern": "string",
- "properties": null,
- "required": [
- null
], - "type": "string"
}, - "id": "string",
- "intent_to_retain": true,
- "name": "string",
- "optional": true,
- "path": [
- "string"
], - "predicate": "required",
- "purpose": "string"
}
], - "is_holder": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "limit_disclosure": "required",
- "same_subject": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "statuses": {
- "active": {
- "directive": "required"
}, - "revoked": {
- "directive": "required"
}, - "suspended": {
- "directive": "required"
}
}, - "subject_is_issuer": "required"
}, - "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "group": [
- "string"
], - "id": "string",
- "name": "string",
- "purpose": "string"
}
], - "name": "string",
- "purpose": "string",
- "submission_requirements": [
- {
- "count": 1,
- "from": "string",
- "from_nested": [
- { }
], - "max": 0,
- "min": 0,
- "name": "string",
- "purpose": "string",
- "rule": "all"
}
]
}, - "spec_version": "string"
}, - "id": "string"
}
Response samples
- 200
- 500
{- "applications": [
- {
- "applicant": "string",
- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "id": "string",
- "manifest_id": "string",
- "presentation_submission": {
- "definition_id": "string",
- "descriptor_map": [
- {
- "format": "string",
- "id": "string",
- "path": "string",
- "path_nested": { }
}
], - "id": "string"
}, - "spec_version": "string"
}
]
}
Submit a Credential Application
Submit a Credential Application in response to a Credential Manifest request. The request body is expected to
be a valid JWT signed by the applicant's DID, containing two top level properties: credential_application
and vcs
according to the spec https://identity.foundation/credential-manifest/#credential-application
Request Body schema: application/json
request body
applicationJwt required | string A JWT signed by the applicant. The payload MUST contain the following properties:
|
Responses
Request samples
- Payload
{- "applicationJwt": "string"
}
Response samples
- 201
- 400
- 500
{- "done": true,
- "id": "string",
- "result": {
- "error": "string",
- "response": null
}
}
Get a Credential Application
Get a Credential Application by its ID
path Parameters
id required | string ID |
Responses
Response samples
- 200
- 400
{- "application": {
- "applicant": "string",
- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "id": "string",
- "manifest_id": "string",
- "presentation_submission": {
- "definition_id": "string",
- "descriptor_map": [
- {
- "format": "string",
- "id": "string",
- "path": "string",
- "path_nested": { }
}
], - "id": "string"
}, - "spec_version": "string"
}, - "id": "string"
}
Review a Credential Application
Reviewing a Credential Application either fulfills or denies the credential(s) issuance according to the spec https://identity.foundation/credential-manifest/#credential-application.
path Parameters
id required | string ID |
Request Body schema: application/json
request body
approved | boolean |
object Overrides to apply to the credentials that will be created. Keys are the ID that corresponds to an OutputDescriptor.ID from the manifest. | |
reason | string |
Responses
Request samples
- Payload
{- "approved": true,
- "credentialOverrides": {
- "property1": {
- "data": {
- "property1": null,
- "property2": null
}, - "expiry": "string",
- "revocable": true
}, - "property2": {
- "data": {
- "property1": null,
- "property2": null
}, - "expiry": "string",
- "revocable": true
}
}, - "reason": "string"
}
Response samples
- 201
- 400
- 500
{- "credential_response": {
- "applicant": "string",
- "application_id": "string",
- "denial": {
- "input_descriptors": [
- "string"
], - "reason": "string"
}, - "fulfillment": {
- "descriptor_map": [
- {
- "format": "string",
- "id": "string",
- "path": "string",
- "path_nested": { }
}
]
}, - "id": "string",
- "manifest_id": "string",
- "spec_version": "string"
}, - "responseJwt": "string",
- "verifiableCredentials": [
- null
]
}
Response samples
- 200
- 500
{- "manifestRequests": [
- {
- "audience": [
- "string"
], - "credentialManifestJwt": "string",
- "expiration": "string",
- "id": "string",
- "issuerId": "string",
- "manifestId": "string",
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
]
}
Create a Credential Manifest Request
Create a Credential Manifest Request from an existing Credential Manifest.
Request Body schema: application/json
request body
audience | Array of strings Audience as defined in https://www.rfc-editor.org/rfc/rfc7519.html#section-4.1.3 Optional |
callbackUrl | string The URL that the presenter should be submitting the presentation submission to. Optional. |
credentialManifestId required | string ID of the credential manifest to use for this request. |
expiration | string Expiration as defined in https://www.rfc-editor.org/rfc/rfc7519.html#section-4.1.4 Optional. |
issuerId required | string DID of the issuer of this presentation definition. The DID must have been previously created with the DID API. |
verificationMethodId required | string The id of the verificationMethod (see https://www.w3.org/TR/did-core/#verification-methods) who's privateKey is
stored in ssi-service. The verificationMethod must be part of the did document associated with |
Responses
Request samples
- Payload
{- "audience": [
- "string"
], - "credentialManifestId": "string",
- "expiration": "string",
- "issuerId": "string",
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
Response samples
- 201
- 400
- 500
{- "manifestRequest": {
- "audience": [
- "string"
], - "credentialManifestJwt": "string",
- "expiration": "string",
- "id": "string",
- "issuerId": "string",
- "manifestId": "string",
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
}
Get a Credential Manifest Request
Get a Credential Manifest Request by its ID
path Parameters
id required | string ID |
Responses
Response samples
- 200
- 400
{- "manifestRequest": {
- "audience": [
- "string"
], - "credentialManifestJwt": "string",
- "expiration": "string",
- "id": "string",
- "issuerId": "string",
- "manifestId": "string",
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
}
List Credential Manifest Responses
Lists all responses to Credential Applications associated with a Credential Manifest
Responses
Response samples
- 200
- 500
{- "responses": [
- {
- "applicant": "string",
- "application_id": "string",
- "denial": {
- "input_descriptors": [
- "string"
], - "reason": "string"
}, - "fulfillment": {
- "descriptor_map": [
- {
- "format": "string",
- "id": "string",
- "path": "string",
- "path_nested": { }
}
]
}, - "id": "string",
- "manifest_id": "string",
- "spec_version": "string"
}
]
}
Get a Credential Manifest Response
Get a Credential Manifest Response by its ID https://identity.foundation/credential-manifest/#credential-response
path Parameters
id required | string ID |
Responses
Response samples
- 200
- 400
- 500
{- "credential_response": {
- "applicant": "string",
- "application_id": "string",
- "denial": {
- "input_descriptors": [
- "string"
], - "reason": "string"
}, - "fulfillment": {
- "descriptor_map": [
- {
- "format": "string",
- "id": "string",
- "path": "string",
- "path_nested": { }
}
]
}, - "id": "string",
- "manifest_id": "string",
- "spec_version": "string"
}, - "responseJwt": "string",
- "verifiableCredentials": null
}
List operations
List operations according to the request
query Parameters
parent | string The name of the parent's resource. For example: |
filter | string A standard filter expression conforming to https://google.aip.dev/160. For example: `?filter=done= |
pageSize | number Hint to the server of the maximum elements to return. More may be returned. When not set, the server will return all elements. |
pageToken | string Used to indicate to the server to return a specific page of the list results. Must match a previous requests' |
Responses
Response samples
- 200
- 400
- 500
{- "nextPageToken": "string",
- "operations": [
- {
- "done": true,
- "id": "string",
- "result": {
- "error": "string",
- "response": null
}
}
]
}
Response samples
- 200
- 400
- 500
{- "definitions": [
- {
- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "frame": null,
- "id": "string",
- "input_descriptors": [
- {
- "constraints": {
- "fields": [
- {
- "filter": {
- "additionalProperties": true,
- "allOf": null,
- "const": null,
- "enum": [
- null
], - "exclusiveMaximum": null,
- "exclusiveMinimum": null,
- "format": "string",
- "maxLength": 0,
- "maximum": null,
- "minLength": 0,
- "minimum": null,
- "not": null,
- "oneOf": null,
- "pattern": "string",
- "properties": null,
- "required": [
- null
], - "type": "string"
}, - "id": "string",
- "intent_to_retain": true,
- "name": "string",
- "optional": true,
- "path": [
- "string"
], - "predicate": "required",
- "purpose": "string"
}
], - "is_holder": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "limit_disclosure": "required",
- "same_subject": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "statuses": {
- "active": {
- "directive": "required"
}, - "revoked": {
- "directive": "required"
}, - "suspended": {
- "directive": "required"
}
}, - "subject_is_issuer": "required"
}, - "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "group": [
- "string"
], - "id": "string",
- "name": "string",
- "purpose": "string"
}
], - "name": "string",
- "purpose": "string",
- "submission_requirements": [
- {
- "count": 1,
- "from": "string",
- "from_nested": [
- { }
], - "max": 0,
- "min": 0,
- "name": "string",
- "purpose": "string",
- "rule": "all"
}
]
}
]
}
Create a Presentation Definition
Create a Presentation Definition https://identity.foundation/presentation-exchange/spec/v2.0.0/#presentation-definition
Request Body schema: application/json
request body
object (exchange.ClaimFormat) | |
required | Array of objects (exchange.InputDescriptor) |
name | string |
purpose | string |
Array of objects (exchange.SubmissionRequirement) |
Responses
Request samples
- Payload
{- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "inputDescriptors": [
- {
- "constraints": {
- "fields": [
- {
- "filter": {
- "additionalProperties": true,
- "allOf": null,
- "const": null,
- "enum": [
- null
], - "exclusiveMaximum": null,
- "exclusiveMinimum": null,
- "format": "string",
- "maxLength": 0,
- "maximum": null,
- "minLength": 0,
- "minimum": null,
- "not": null,
- "oneOf": null,
- "pattern": "string",
- "properties": null,
- "required": [
- "string"
], - "type": "string"
}, - "id": "string",
- "intent_to_retain": true,
- "name": "string",
- "optional": true,
- "path": [
- "string"
], - "predicate": "required",
- "purpose": "string"
}
], - "is_holder": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "limit_disclosure": "required",
- "same_subject": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "statuses": {
- "active": {
- "directive": "required"
}, - "revoked": {
- "directive": "required"
}, - "suspended": {
- "directive": "required"
}
}, - "subject_is_issuer": "required"
}, - "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "group": [
- "string"
], - "id": "string",
- "name": "string",
- "purpose": "string"
}
], - "name": "string",
- "purpose": "string",
- "submissionRequirements": [
- {
- "count": 1,
- "from": "string",
- "from_nested": [
- { }
], - "max": 0,
- "min": 0,
- "name": "string",
- "purpose": "string",
- "rule": "all"
}
]
}
Response samples
- 201
- 400
- 500
{- "presentation_definition": {
- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "frame": null,
- "id": "string",
- "input_descriptors": [
- {
- "constraints": {
- "fields": [
- {
- "filter": {
- "additionalProperties": true,
- "allOf": null,
- "const": null,
- "enum": [
- null
], - "exclusiveMaximum": null,
- "exclusiveMinimum": null,
- "format": "string",
- "maxLength": 0,
- "maximum": null,
- "minLength": 0,
- "minimum": null,
- "not": null,
- "oneOf": null,
- "pattern": "string",
- "properties": null,
- "required": [
- "string"
], - "type": "string"
}, - "id": "string",
- "intent_to_retain": true,
- "name": "string",
- "optional": true,
- "path": [
- "string"
], - "predicate": "required",
- "purpose": "string"
}
], - "is_holder": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "limit_disclosure": "required",
- "same_subject": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "statuses": {
- "active": {
- "directive": "required"
}, - "revoked": {
- "directive": "required"
}, - "suspended": {
- "directive": "required"
}
}, - "subject_is_issuer": "required"
}, - "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "group": [
- "string"
], - "id": "string",
- "name": "string",
- "purpose": "string"
}
], - "name": "string",
- "purpose": "string",
- "submission_requirements": [
- {
- "count": 1,
- "from": "string",
- "from_nested": [
- { }
], - "max": 0,
- "min": 0,
- "name": "string",
- "purpose": "string",
- "rule": "all"
}
]
}, - "presentationDefinitionJwt": "string"
}
Get a Presentation Definition
Get a Presentation Definition by its ID
path Parameters
id required | string ID |
Responses
Response samples
- 200
- 400
{- "presentation_definition": {
- "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "frame": null,
- "id": "string",
- "input_descriptors": [
- {
- "constraints": {
- "fields": [
- {
- "filter": {
- "additionalProperties": true,
- "allOf": null,
- "const": null,
- "enum": [
- null
], - "exclusiveMaximum": null,
- "exclusiveMinimum": null,
- "format": "string",
- "maxLength": 0,
- "maximum": null,
- "minLength": 0,
- "minimum": null,
- "not": null,
- "oneOf": null,
- "pattern": "string",
- "properties": null,
- "required": [
- "string"
], - "type": "string"
}, - "id": "string",
- "intent_to_retain": true,
- "name": "string",
- "optional": true,
- "path": [
- "string"
], - "predicate": "required",
- "purpose": "string"
}
], - "is_holder": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "limit_disclosure": "required",
- "same_subject": [
- {
- "directive": "required",
- "field_id": [
- "string"
]
}
], - "statuses": {
- "active": {
- "directive": "required"
}, - "revoked": {
- "directive": "required"
}, - "suspended": {
- "directive": "required"
}
}, - "subject_is_issuer": "required"
}, - "format": {
- "jwt": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vc": {
- "alg": [
- "EdDSA"
]
}, - "jwt_vp": {
- "alg": [
- "EdDSA"
]
}, - "ldp": {
- "proof_type": [
- "string"
]
}, - "ldp_vc": {
- "proof_type": [
- "string"
]
}, - "ldp_vp": {
- "proof_type": [
- "string"
]
}
}, - "group": [
- "string"
], - "id": "string",
- "name": "string",
- "purpose": "string"
}
], - "name": "string",
- "purpose": "string",
- "submission_requirements": [
- {
- "count": 1,
- "from": "string",
- "from_nested": [
- { }
], - "max": 0,
- "min": 0,
- "name": "string",
- "purpose": "string",
- "rule": "all"
}
]
}
}
Verifies a Verifiable Presentation
Verifies a given presentation. The system does the following levels of verification:
- Makes sure the presentation has a valid signature
- Makes sure the presentation is not expired
- Makes sure the presentation complies with https://www.w3.org/TR/vc-data-model/#presentations-0 of VC Data Model v1.1
- For each credential in the presentation, makes sure: a. Makes sure the credential has a valid signature b. Makes sure the credential is not expired c. Makes sure the credential complies with the VC Data Model d. If the credential has a schema, makes sure its data complies with the schema
Request Body schema: application/json
request body
presentationJwt required | string A JWT that encodes a verifiable presentation according to https://www.w3.org/TR/vc-data-model/#json-web-token |
Responses
Request samples
- Payload
{- "presentationJwt": "string"
}
Response samples
- 200
- 400
- 500
{- "reason": "string",
- "verified": true
}
Response samples
- 200
- 500
{- "presentationRequests": [
- {
- "audience": [
- "string"
], - "expiration": "string",
- "id": "string",
- "issuerId": "string",
- "presentationDefinitionId": "string",
- "presentationRequestJwt": "string",
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
]
}
Create a Presentation Request
Create a Presentation Request from an existing Presentation Definition with an existing DID according to the spec https://identity.foundation/presentation-exchange/spec/v2.0.0/#presentation-request
Request Body schema: application/json
request body
audience | Array of strings Audience as defined in https://www.rfc-editor.org/rfc/rfc7519.html#section-4.1.3 Optional |
callbackUrl | string The URL that the presenter should be submitting the presentation submission to. Optional. |
expiration | string Expiration as defined in https://www.rfc-editor.org/rfc/rfc7519.html#section-4.1.4 Optional. |
issuerId required | string DID of the issuer of this presentation definition. The DID must have been previously created with the DID API. |
presentationDefinitionId required | string ID of the presentation definition to use for this request. |
verificationMethodId required | string The id of the verificationMethod (see https://www.w3.org/TR/did-core/#verification-methods) who's privateKey is
stored in ssi-service. The verificationMethod must be part of the did document associated with |
Responses
Request samples
- Payload
{- "audience": [
- "string"
], - "expiration": "string",
- "issuerId": "string",
- "presentationDefinitionId": "string",
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
Response samples
- 201
- 400
- 500
{- "presentationRequest": {
- "audience": [
- "string"
], - "expiration": "string",
- "id": "string",
- "issuerId": "string",
- "presentationDefinitionId": "string",
- "presentationRequestJwt": "string",
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
}
Get a Presentation Request
Get a Presentation Request by its ID
path Parameters
id required | string ID |
Responses
Response samples
- 200
- 400
{- "presentationRequest": {
- "audience": [
- "string"
], - "expiration": "string",
- "id": "string",
- "issuerId": "string",
- "presentationDefinitionId": "string",
- "presentationRequestJwt": "string",
- "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
}
List Presentation Submissions
List existing Presentation Submissions according to a filtering query. The filter
field follows the syntax described in https://google.aip.dev/160.
query Parameters
filter | string A standard filter expression conforming to https://google.aip.dev/160. For example: `?filter=status= |
pageSize | number Hint to the server of the maximum elements to return. More may be returned. When not set, the server will return all elements. |
pageToken | string Used to indicate to the server to return a specific page of the list results. Must match a previous requests' |
Responses
Response samples
- 200
- 400
- 500
{- "nextPageToken": "string",
- "submissions": [
- {
- "reason": "string",
- "status": "string",
- "verifiablePresentation": {
- "@context": null,
- "holder": "string",
- "id": "string",
- "presentation_submission": null,
- "proof": null,
- "type": null,
- "verifiableCredential": [
- null
]
}
}
]
}
Create a Presentation Submission
Accepts a Presentation Submission (https://identity.foundation/presentation-exchange/spec/v2.0.0/#presentation-submission) in this server ready to be reviewed.
Request Body schema: application/json
request body
submissionJwt required | string A Verifiable Presentation that's encoded as a JWT. Verifiable Presentation are described in https://www.w3.org/TR/vc-data-model/#presentations-0 JWT encoding of the Presentation as described in https://www.w3.org/TR/vc-data-model/#presentations-0 |
Responses
Request samples
- Payload
{- "submissionJwt": "string"
}
Response samples
- 201
- 400
- 500
{- "done": true,
- "id": "string",
- "result": {
- "error": "string",
- "response": null
}
}
Get a Presentation Submission
Get a Presentation Submission by its ID
path Parameters
id required | string ID |
Responses
Response samples
- 200
- 400
{- "reason": "string",
- "status": "string",
- "verifiablePresentation": {
- "@context": null,
- "holder": "string",
- "id": "string",
- "presentation_submission": null,
- "proof": null,
- "type": null,
- "verifiableCredential": [
- null
]
}
}
Review a pending Presentation Submission
Reviews a pending Presentation Submission. After this method is called, the operation with
id==presentations/submissions/{submission_id}
will be updated with the result of this invocation.
path Parameters
id required | string ID |
Request Body schema: application/json
request body
approved required | boolean |
reason | string |
Responses
Request samples
- Payload
{- "approved": true,
- "reason": "string"
}
Response samples
- 200
- 400
- 500
{- "reason": "string",
- "status": "string",
- "verifiablePresentation": {
- "@context": null,
- "holder": "string",
- "id": "string",
- "presentation_submission": null,
- "proof": null,
- "type": null,
- "verifiableCredential": [
- null
]
}
}
List Credential Schemas
List Credential Schemas stored by the service
query Parameters
pageSize | number Hint to the server of the maximum elements to return. More may be returned. When not set, the server will return all elements. |
pageToken | string Used to indicate to the server to return a specific page of the list results. Must match a previous requests' |
Responses
Response samples
- 200
- 500
{- "nextPageToken": "string",
- "schemas": [
- {
- "credentialSchema": "string",
- "id": "string",
- "schema": {
- "property1": null,
- "property2": null
}, - "type": "JsonSchemaCredential"
}
]
}
Create a Credential Schema
Create a schema for use with a Verifiable Credential
Request Body schema: application/json
request body
description | string Description is an optional human-readable description for a schema |
issuer required | string Issuer represents the DID of the issuer for the schema if it's signed. Required if intending to sign the schema as a credential using JsonSchemaCredential. |
name required | string Name is a human-readable name for a schema |
required | object Schema represents the JSON schema for the credential schema
If the schema has an $id field, it will be overwritten with an ID the service generates.
The schema must be against draft 2020-12, 2019-09, or 7.
Must include a string field |
verificationMethodId required | string The id of the verificationMethod (see https://www.w3.org/TR/did-core/#verification-methods) who's privateKey is
stored in ssi-service. The verificationMethod must be part of the did document associated with |
Responses
Request samples
- Payload
{- "description": "string",
- "issuer": "string",
- "name": "string",
- "schema": {
- "property1": null,
- "property2": null
}, - "verificationMethodId": "did:key:z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3#z6MkkZDjunoN4gyPMx5TSy7Mfzw22D2RZQZUcx46bii53Ex3"
}
Response samples
- 201
- 400
- 500
{- "credentialSchema": "string",
- "id": "string",
- "schema": {
- "property1": null,
- "property2": null
}, - "type": "JsonSchemaCredential"
}
Create a webhook
Creates a webhook
Request Body schema: application/json
request body
noun required | string Enum: "Credential" "DID" "Manifest" "SchemaID" "Presentation" "Application" "Submission" The noun (entity) for the new webhook.eg: Credential |
url required | string The URL to post the output of this request to Noun.Verb action to. |
verb required | string Enum: "BatchCreate" "Create" "Delete" The verb for the new webhook.eg: Create |
Responses
Request samples
- Payload
{- "noun": "Credential",
- "url": "string",
- "verb": "BatchCreate"
}
Response samples
- 201
- 400
- 500
{- "webhook": {
- "noun": "Credential",
- "urls": [
- "string"
], - "verb": "BatchCreate"
}
}