Proofs

This API suite focuses on verifying proof of credentials.

Retrieve the list of presentations for proof requests

GET /api/v1/proof/presentations

Retrieves the list of presentations for proof requests. This can be used to check the status or details of proofs.

Headers

Name
Value

Content-Type

application/json

Authorization

apikey = {Alice's key}

Query param

Name
Type
Description

thid

string

the thid of the presentation to get

Response

{
  "data": [
        {
            "recordId": "61faa8cb-7bc9-4c41-a0e5-7c10d81dd98f",
            "thid": "87323d88-51ec-424f-882a-a1f2655888db",
            "credentialFormat": "JWT",
            "validityPeriod": 3600,
            "claims": {
                "uid": "12345",
                "name": "Stable Diffusion SDXL"
            },
            "automaticIssuance": false,
            "createdAt": "2024-10-03T15:28:01.776806Z",
            "updatedAt": "2024-10-04T14:42:27.262001Z",
            "role": "Issuer",
            "protocolState": "RequestReceived",
            "metaRetries": 5
        }
    ]
}

Retrieve the first matching presentation

GET /api/v1/proof/presentation/match/{claim_type}

Get the first presentation request (or proof) that matches a type (point of view of Holder)

Headers

Name
Value

Content-Type

application/json

Authorization

apikey = {Bob's key}

params

Name
Type
Description

claim_type

string

a type of claim (e.g.: "identity")

Response

{
 "data": [
        {
            "recordId": "61faa8cb-7bc9-4c41-a0e5-7c10d81dd98f",
            "thid": "87323d88-51ec-424f-882a-a1f2655888db",
            "credentialFormat": "JWT",
            "validityPeriod": 3600,
            "claims": {
                "uid": "12345",
                "name": "Stable Diffusion SDXL"
            },
            "automaticIssuance": false,
            "createdAt": "2024-10-03T15:28:01.776806Z",
            "updatedAt": "2024-10-04T14:42:27.262001Z",
            "role": "Issuer",
            "protocolState": "RequestReceived",
            "metaRetries": 5
        }
    ]
}

Create a VC presentation request

from verifier to holder

POST /api/v1/proof/presentation

Headers

Name
Value

Content-Type

application/json

Authorization

apikey = {Alice's key}

Body

Name
Type
Description

connection

string

the connectionId between verifier and prover (compulsory)

challenge

string

claim_type that verifier wants to ask for (holder will have to provide a record creds of same claim_type)

domain

string

domain where this VC applies to (compulsory / point of view of verifier)

Response

{
 "data": {
        "presentationId": "ad0a1eba-b9bd-41f4-a9ee-2268343119ae",
        "thid": "52120ed0-b919-460f-9b02-7dcaccaca2d5",
        "role": "Verifier",
        "status": "RequestPending",
        "proofs": [],
        "data": [],
        "requestData": [
            "{\n  \"options\" : {\n    \"challenge\" : \"Prove your identity\",\n    \"domain\" : \"localhost:3022\"\n  },\n  \"presentation_definition\" : {\n    \"id\" : \"893faa5c-fd61-4aff-818f-c888c509154c\",\n    \"input_descriptors\" : [\n    ],\n    \"name\" : null,\n    \"purpose\" : null,\n    \"format\" : null\n  }\n}"
        ],
        "connectionId": "add6d381-1180-484c-bc40-178d362346c0",
        "metaRetries": 5
    }
}

Accept a presentation request

From holder

POST /api/v1/proof/presentation/accept

Headers

Name
Value

Content-Type

application/json

Authorization

apikey = {Bob's key}

Body

Name
Type
Description

presentationId

string

the id of the presentation from holder point of view (compulsory)

recordId

string

the recordId of the VC that the holder will provide as proof

Response

{
"data": {
        "presentationId": "46a13394-be95-4868-983d-c96e2826511e",
        "thid": "52120ed0-b919-460f-9b02-7dcaccaca2d5",
        "role": "Prover",
        "status": "PresentationPending",
        "proofs": [],
        "data": [],
        "requestData": [
            "{\n  \"options\" : {\n    \"domain\" : \"localhost:3022\",\n    \"challenge\" : \"Prove your identity\"\n  },\n  \"presentation_definition\" : {\n    \"format\" : null,\n    \"name\" : null,\n    \"purpose\" : null,\n    \"id\" : \"893faa5c-fd61-4aff-818f-c888c509154c\",\n    \"input_descriptors\" : [\n    ]\n  }\n}"
        ],
        "metaRetries": 5
    }
}

Obtain the final Proof

point of view of Verifier

PATCH /api/v1/proof/presentation/{id}

Headers

Name
Value

Content-Type

application/json

Authorization

apikey = {Alice's key}

Body

Name
Type
Description

presentationId

string

the id of the presentation from verifier point of view (compulsory)

Response

{
 "data": {
        "presentationId": "ad0a1eba-b9bd-41f4-a9ee-2268343119ae",
        "thid": "52120ed0-b919-460f-9b02-7dcaccaca2d5",
        "role": "Verifier",
        "status": "PresentationAccepted",
        "proofs": [],
        "data": [
            "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJpc3MiOiJkaWQ6cHJpc206Y2E2MDJmZjY1ZDgwMjFiYjRiNzdjYmNlNmRmNjkxN2UwYjA2MmQ3M2Y4YzVmYjdkMGQ2YzNjZGVkNTg3NGQ4ODpDbm9LZUJJNUNnVnJaWGt0TWhBRVNpNEtDWE5sWTNBeU5UWnJNUkloQXpyM2ItSkwwbzJCZl9CSWtOM0VNdHJ6OThEZTlaSE5WdU1xRHFBQ0oyZzRFanNLQjIxaGMzUmxjakFRQVVvdUNnbHpaV053TWpVMmF6RVNJUU52WUtxZVN5bWd1QjJQeEt0Um9UV2xxVXNPREFrck9xYWEwTVhjOVNnN2ZBIiwiYXVkIjoibG9jYWxob3N0OjMwMjIiLCJ2cCI6eyJ0eXBlIjpbIlZlcmlmaWFibGVQcmVzZW50YXRpb24iXSwiQGNvbnRleHQiOlsiaHR0cHM6XC9cL3d3dy53My5vcmdcLzIwMThcL3ByZXNlbnRhdGlvbnNcL3YxIl0sInZlcmlmaWFibGVDcmVkZW50aWFsIjpbImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSkZVekkxTmtzaWZRLmV5SnBjM01pT2lKa2FXUTZjSEpwYzIwNllUTmxZemN4WVRNNVptSTFZbVE0TjJReE9UaGtZV05oTVRjNU56Vm1Oak5qWmpWaU9UVTJOemMwTkRkbE5UYzNOV0U1WldSaFpqUmpOV0l3TkRRNFlqcERibTlMWlVKSk5VTm5WbkphV0d0MFRWSkJSVk5wTkV0RFdFNXNXVE5CZVU1VVduSk5Va2xvUVdjNVRDMWtVMmxMVUVwQ1ZqUllPRkIzWWtaUE5tc3phbUpUZUZaNGNWTnBUMlpyU21SV056ZElZV2hGYW5OTFFqSXhhR016VW14amFrRlJRVlZ2ZFVObmJIcGFWMDUzVFdwVk1tRjZSVk5KVVUxcGIwdEtObWh6VmtKeFJYZENVbXR6ZUc5cWVYZFBhSHAyUkZveVNUVmlWVXB2UmpScWFGTkhRVGhCSWl3aWMzVmlJam9pWkdsa09uQnlhWE50T21OaE5qQXlabVkyTldRNE1ESXhZbUkwWWpjM1kySmpaVFprWmpZNU1UZGxNR0l3TmpKa056Tm1PR00xWm1JM1pEQmtObU16WTJSbFpEVTROelJrT0RnNlEyNXZTMlZDU1RWRFoxWnlXbGhyZEUxb1FVVlRhVFJMUTFoT2JGa3pRWGxPVkZweVRWSkphRUY2Y2pOaUxVcE1NRzh5UW1aZlFrbHJUak5GVFhSeWVqazRSR1U1V2toT1ZuVk5jVVJ4UVVOS01tYzBSV3B6UzBJeU1XaGpNMUpzWTJwQlVVRlZiM1ZEWjJ4NldsZE9kMDFxVlRKaGVrVlRTVkZPZGxsTGNXVlRlVzFuZFVJeVVIaExkRkp2VkZkc2NWVnpUMFJCYTNKUGNXRmhNRTFZWXpsVFp6ZG1RU0lzSW01aVppSTZNVGN5T0RBMU16RXdOU3dpWlhod0lqb3hOekk0TURVMk56QTFMQ0oyWXlJNmV5SmpjbVZrWlc1MGFXRnNVM1ZpYW1WamRDSTZleUoxYVdRaU9pSXhNak0wTlNJc0ltNWhiV1VpT2lKVGRHRmliR1VnUkdsbVpuVnphVzl1SUZORVdFd2lMQ0pwWkNJNkltUnBaRHB3Y21semJUcGpZVFl3TW1abU5qVmtPREF5TVdKaU5HSTNOMk5pWTJVMlpHWTJPVEUzWlRCaU1EWXlaRGN6Wmpoak5XWmlOMlF3WkRaak0yTmtaV1ExT0RjMFpEZzRPa051YjB0bFFrazFRMmRXY2xwWWEzUk5hRUZGVTJrMFMwTllUbXhaTTBGNVRsUmFjazFTU1doQmVuSXpZaTFLVERCdk1rSm1YMEpKYTA0elJVMTBjbm81T0VSbE9WcElUbFoxVFhGRWNVRkRTakpuTkVWcWMwdENNakZvWXpOU2JHTnFRVkZCVlc5MVEyZHNlbHBYVG5kTmFsVXlZWHBGVTBsUlRuWlpTM0ZsVTNsdFozVkNNbEI0UzNSU2IxUlhiSEZWYzA5RVFXdHlUM0ZoWVRCTldHTTVVMmMzWmtFaWZTd2lkSGx3WlNJNld5SldaWEpwWm1saFlteGxRM0psWkdWdWRHbGhiQ0pkTENKQVkyOXVkR1Y0ZENJNld5Sm9kSFJ3Y3pwY0wxd3ZkM2QzTG5jekxtOXlaMXd2TWpBeE9Gd3ZZM0psWkdWdWRHbGhiSE5jTDNZeElsMHNJbWx6YzNWbGNpSTZJbVJwWkRwd2NtbHpiVHBoTTJWak56RmhNemxtWWpWaVpEZzNaREU1T0dSaFkyRXhOemszTldZMk0yTm1OV0k1TlRZM056UTBOMlUxTnpjMVlUbGxaR0ZtTkdNMVlqQTBORGhpT2tOdWIwdGxRa2sxUTJkV2NscFlhM1JOVWtGRlUyazBTME5ZVG14Wk0wRjVUbFJhY2sxU1NXaEJaemxNTFdSVGFVdFFTa0pXTkZnNFVIZGlSazgyYXpOcVlsTjRWbmh4VTJsUFptdEtaRlkzTjBoaGFFVnFjMHRDTWpGb1l6TlNiR05xUVZGQlZXOTFRMmRzZWxwWFRuZE5hbFV5WVhwRlUwbFJUV2x2UzBvMmFITldRbkZGZDBKU2EzTjRiMnA1ZDA5b2VuWkVXakpKTldKVlNtOUdOR3BvVTBkQk9FRWlMQ0pqY21Wa1pXNTBhV0ZzVTNSaGRIVnpJanA3SW5OMFlYUjFjMUIxY25CdmMyVWlPaUpTWlhadlkyRjBhVzl1SWl3aWMzUmhkSFZ6VEdsemRFbHVaR1Y0SWpveU55d2lhV1FpT2lKb2RIUndPbHd2WEM5b2IzTjBMbVJ2WTJ0bGNpNXBiblJsY201aGJEbzRNVEF3WEM5amJHOTFaQzFoWjJWdWRGd3ZZM0psWkdWdWRHbGhiQzF6ZEdGMGRYTmNMems1TlRZNU1qZzRMV00yTUdVdE5HVXdaaTFoTkRCbUxUQTFOREl6TlRCbFpXUTFZaU15TnlJc0luUjVjR1VpT2lKVGRHRjBkWE5NYVhOME1qQXlNVVZ1ZEhKNUlpd2ljM1JoZEhWelRHbHpkRU55WldSbGJuUnBZV3dpT2lKb2RIUndPbHd2WEM5b2IzTjBMbVJ2WTJ0bGNpNXBiblJsY201aGJEbzRNVEF3WEM5amJHOTFaQzFoWjJWdWRGd3ZZM0psWkdWdWRHbGhiQzF6ZEdGMGRYTmNMems1TlRZNU1qZzRMV00yTUdVdE5HVXdaaTFoTkRCbUxUQTFOREl6TlRCbFpXUTFZaUo5ZlgwLnhyUkJDUHFNa0M4eHdFcHgzOEZUNDZlZ3RoOFFTblJTU0NVSTBBR1lpYVF2YTdiOGtVc0c2c3dvT2N3X1dOLWI3RWp1b25GVW9FWFVzVXFHaU5DMlBnIl19LCJub25jZSI6IlByb3ZlIHlvdXIgaWRlbnRpdHkifQ.B0OX2ncM2ilx7bv7lhkVV_qGXyHvsUzKnk_gKp9ChIYrzDjZG8cyHnQiyND0MNQ-x1jexf5LbDafSqhNueLwnw"
        ],
        "requestData": [
            "{\n  \"options\" : {\n    \"challenge\" : \"Prove your identity\",\n    \"domain\" : \"localhost:3022\"\n  },\n  \"presentation_definition\" : {\n    \"id\" : \"893faa5c-fd61-4aff-818f-c888c509154c\",\n    \"input_descriptors\" : [\n    ],\n    \"name\" : null,\n    \"purpose\" : null,\n    \"format\" : null\n  }\n}"
        ],
        "connectionId": "add6d381-1180-484c-bc40-178d362346c0",
        "metaRetries": 5
    }
}

Request a Presentation, accept it, and issue a Proof

POST /api/v1/proof/presentation/custodial

will do a full request + accept + issue proof (custodial mode)

Headers

Name
Value

Content-Type

application/json

Authorization

None

Body

Name
Type
Description

connection

string

the connectionId between verifier and prover (compulsory)

key_peer1

string

apikey of peer 1 (verifier)

key_peer2

string

apikey of peer 2 (prover)

claim_type

string

the claim type that the Credential must contain for a match (eg : "identity")

domain

string

domain where this Credential applies

noDuplicate

boolean

no duplicate of issuance of same type

thid

string

to force the use of a specific credential in the proof (otherwise, first available is taken)

Response

{
 "data": {
        "wasPresented": true,
        "wasAccepted": true,
        "thid": "8f8dc48c-6730-4f9b-811d-984f54c50968",
        "proof": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJpc3MiOiJkaWQ6cHJpc206Y2E2MDJmZjY1ZDgwMjFiYjRiNzdjYmNlNmRmNjkxN2UwYjA2MmQ3M2Y4YzVmYjdkMGQ2YzNjZGVkNTg3NGQ4ODpDbm9LZUJJNUNnVnJaWGt0TWhBRVNpNEtDWE5sWTNBeU5UWnJNUkloQXpyM2ItSkwwbzJCZl9CSWtOM0VNdHJ6OThEZTlaSE5WdU1xRHFBQ0oyZzRFanNLQjIxaGMzUmxjakFRQVVvdUNnbHpaV053TWpVMmF6RVNJUU52WUtxZVN5bWd1QjJQeEt0Um9UV2xxVXNPREFrck9xYWEwTVhjOVNnN2ZBIiwiYXVkIjoidGVzdC5jb20iLCJ2cCI6eyJ0eXBlIjpbIlZlcmlmaWFibGVQcmVzZW50YXRpb24iXSwiQGNvbnRleHQiOlsiaHR0cHM6XC9cL3d3dy53My5vcmdcLzIwMThcL3ByZXNlbnRhdGlvbnNcL3YxIl0sInZlcmlmaWFibGVDcmVkZW50aWFsIjpbImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSkZVekkxTmtzaWZRLmV5SnBjM01pT2lKa2FXUTZjSEpwYzIwNllUTmxZemN4WVRNNVptSTFZbVE0TjJReE9UaGtZV05oTVRjNU56Vm1Oak5qWmpWaU9UVTJOemMwTkRkbE5UYzNOV0U1WldSaFpqUmpOV0l3TkRRNFlqcERibTlMWlVKSk5VTm5WbkphV0d0MFRWSkJSVk5wTkV0RFdFNXNXVE5CZVU1VVduSk5Va2xvUVdjNVRDMWtVMmxMVUVwQ1ZqUllPRkIzWWtaUE5tc3phbUpUZUZaNGNWTnBUMlpyU21SV056ZElZV2hGYW5OTFFqSXhhR016VW14amFrRlJRVlZ2ZFVObmJIcGFWMDUzVFdwVk1tRjZSVk5KVVUxcGIwdEtObWh6VmtKeFJYZENVbXR6ZUc5cWVYZFBhSHAyUkZveVNUVmlWVXB2UmpScWFGTkhRVGhCSWl3aWMzVmlJam9pWkdsa09uQnlhWE50T21OaE5qQXlabVkyTldRNE1ESXhZbUkwWWpjM1kySmpaVFprWmpZNU1UZGxNR0l3TmpKa056Tm1PR00xWm1JM1pEQmtObU16WTJSbFpEVTROelJrT0RnNlEyNXZTMlZDU1RWRFoxWnlXbGhyZEUxb1FVVlRhVFJMUTFoT2JGa3pRWGxPVkZweVRWSkphRUY2Y2pOaUxVcE1NRzh5UW1aZlFrbHJUak5GVFhSeWVqazRSR1U1V2toT1ZuVk5jVVJ4UVVOS01tYzBSV3B6UzBJeU1XaGpNMUpzWTJwQlVVRlZiM1ZEWjJ4NldsZE9kMDFxVlRKaGVrVlRTVkZPZGxsTGNXVlRlVzFuZFVJeVVIaExkRkp2VkZkc2NWVnpUMFJCYTNKUGNXRmhNRTFZWXpsVFp6ZG1RU0lzSW01aVppSTZNVGN5T0RBMU1qSTFOaXdpWlhod0lqb3hOek13TmpRME1qVTJMQ0oyWXlJNmV5SmpjbVZrWlc1MGFXRnNVM1ZpYW1WamRDSTZleUpqYkdGcGJWOTBlWEJsSWpvaWRHVnpkQ0lzSW1sa0lqb2laR2xrT25CeWFYTnRPbU5oTmpBeVptWTJOV1E0TURJeFltSTBZamMzWTJKalpUWmtaalk1TVRkbE1HSXdOakprTnpObU9HTTFabUkzWkRCa05tTXpZMlJsWkRVNE56UmtPRGc2UTI1dlMyVkNTVFZEWjFaeVdsaHJkRTFvUVVWVGFUUkxRMWhPYkZrelFYbE9WRnB5VFZKSmFFRjZjak5pTFVwTU1HOHlRbVpmUWtsclRqTkZUWFJ5ZWprNFJHVTVXa2hPVm5WTmNVUnhRVU5LTW1jMFJXcHpTMEl5TVdoak0xSnNZMnBCVVVGVmIzVkRaMng2V2xkT2QwMXFWVEpoZWtWVFNWRk9kbGxMY1dWVGVXMW5kVUl5VUhoTGRGSnZWRmRzY1ZWelQwUkJhM0pQY1dGaE1FMVlZemxUWnpkbVFTSXNJbTlpYW1WamRDSTZJbUVnYzJsdGNHeGxJSFJsYzNRaWZTd2lkSGx3WlNJNld5SldaWEpwWm1saFlteGxRM0psWkdWdWRHbGhiQ0pkTENKQVkyOXVkR1Y0ZENJNld5Sm9kSFJ3Y3pwY0wxd3ZkM2QzTG5jekxtOXlaMXd2TWpBeE9Gd3ZZM0psWkdWdWRHbGhiSE5jTDNZeElsMHNJbWx6YzNWbGNpSTZJbVJwWkRwd2NtbHpiVHBoTTJWak56RmhNemxtWWpWaVpEZzNaREU1T0dSaFkyRXhOemszTldZMk0yTm1OV0k1TlRZM056UTBOMlUxTnpjMVlUbGxaR0ZtTkdNMVlqQTBORGhpT2tOdWIwdGxRa2sxUTJkV2NscFlhM1JOVWtGRlUyazBTME5ZVG14Wk0wRjVUbFJhY2sxU1NXaEJaemxNTFdSVGFVdFFTa0pXTkZnNFVIZGlSazgyYXpOcVlsTjRWbmh4VTJsUFptdEtaRlkzTjBoaGFFVnFjMHRDTWpGb1l6TlNiR05xUVZGQlZXOTFRMmRzZWxwWFRuZE5hbFV5WVhwRlUwbFJUV2x2UzBvMmFITldRbkZGZDBKU2EzTjRiMnA1ZDA5b2VuWkVXakpKTldKVlNtOUdOR3BvVTBkQk9FRWlMQ0pqY21Wa1pXNTBhV0ZzVTNSaGRIVnpJanA3SW5OMFlYUjFjMUIxY25CdmMyVWlPaUpTWlhadlkyRjBhVzl1SWl3aWMzUmhkSFZ6VEdsemRFbHVaR1Y0SWpveU5pd2lhV1FpT2lKb2RIUndPbHd2WEM5b2IzTjBMbVJ2WTJ0bGNpNXBiblJsY201aGJEbzRNVEF3WEM5amJHOTFaQzFoWjJWdWRGd3ZZM0psWkdWdWRHbGhiQzF6ZEdGMGRYTmNMems1TlRZNU1qZzRMV00yTUdVdE5HVXdaaTFoTkRCbUxUQTFOREl6TlRCbFpXUTFZaU15TmlJc0luUjVjR1VpT2lKVGRHRjBkWE5NYVhOME1qQXlNVVZ1ZEhKNUlpd2ljM1JoZEhWelRHbHpkRU55WldSbGJuUnBZV3dpT2lKb2RIUndPbHd2WEM5b2IzTjBMbVJ2WTJ0bGNpNXBiblJsY201aGJEbzRNVEF3WEM5amJHOTFaQzFoWjJWdWRGd3ZZM0psWkdWdWRHbGhiQzF6ZEdGMGRYTmNMems1TlRZNU1qZzRMV00yTUdVdE5HVXdaaTFoTkRCbUxUQTFOREl6TlRCbFpXUTFZaUo5ZlgwLm5sNUZwemZSdWdRQWVObHVDQjNXa3Z5SE03MlJQWDVRNXdzTmJOTGpaRlhUUzNFY3RPbWRNZ25ZdGFVaDJZd0JmdlhGTEFULVhWYlQzcERxckdLOExRIl19LCJub25jZSI6InRlc3QifQ.mu9on4xCvzUOZ52l1HPyJGOmNfb7S0XLzVtYbGoMkHwgf7rqZrrFIJZfDUtNvAjTg7RMSo_gsaPP2CDnNfFd2g",
        "claim": {
            "claim_type": "test",
            "object": "a simple test"
        }
    }
}

Last updated