{
  "openapi": "3.0.0",
  "info": {
    "title": "Proven API",
    "version": "1.0.0",
    "description": "The Proven API is a RESTful service that provides access to Proven Core functionalities. It is secured using an API key, which must be included in the request header as x-api-key. To add the API key, click the \"Authorize\" button and enter your API key."
  },
  "servers": [
    {
      "url": "https://proven-4-2-test.proven.indicio.tech"
    }
  ],
  "tags": [
    {
      "name": "Subwallet - super-admin role only",
      "description": "Authenticate with base API key"
    },
    {
      "name": "Basic Messages",
      "description": "Endpoints for sending and retrieving basic messages"
    },
    {
      "name": "Connections",
      "description": "Endpoints for managing connections"
    },
    {
      "name": "Context",
      "description": "Endpoints for managing contexts"
    },
    {
      "name": "Credentials",
      "description": "Endpoints for issuing and retrieving credentials"
    },
    {
      "name": "DIDs",
      "description": "Endpoints for managing Decentralized Identifiers (DIDs)"
    },
    {
      "name": "Email",
      "description": "Endpoints for email verification"
    },
    {
      "name": "Governance",
      "description": "Endpoints for fetching governance files"
    },
    {
      "name": "Invitations",
      "description": "Endpoints for creating and managing invitations"
    },
    {
      "name": "Oid4vci",
      "description": "Endpoints for creating and managing Open ID for verifiable credential issuance"
    },
    {
      "name": "Oid4vp",
      "description": "Endpoints for creating and managing Open ID for verifiable presentations"
    },
    {
      "name": "Presentations",
      "description": "Endpoints for managing presentations"
    },
    {
      "name": "Status List",
      "description": "Endpoints for managing status lists"
    },
    {
      "name": "TAA",
      "description": "Endpoints for managing the Transaction Author Agreement (TAA)"
    },
    {
      "name": "Verifications",
      "description": "Endpoints for managing verifications"
    },
    {
      "name": "Settings",
      "description": "Endpoints for managing settings"
    }
  ],
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key"
      }
    }
  },
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "externalDocs": {
    "description": "Find out more about the API documentation",
    "url": "https://proven-4-2-test.proven.indicio.tech/api/v1/doc/swagger.json"
  },
  "paths": {
    "/api/v1/messages": {
      "post": {
        "summary": "Send a basic message",
        "description": "This endpoint allows you to send a basic message.",
        "tags": [
          "Basic Messages"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "invitation_id": {
                    "type": "integer",
                    "description": "The ID of the invitation.",
                    "example": 1
                  },
                  "contact_id": {
                    "type": "string",
                    "description": "The ID of the contact.",
                    "example": ""
                  },
                  "message": {
                    "type": "string",
                    "description": "The message content.",
                    "example": "your message here"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Message sent successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "success": "Message was sent!"
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Invalid parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "Get all messages",
        "description": "This endpoint retrieves all messages.",
        "tags": [
          "Basic Messages"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "A list of messages",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "basicMessages": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "id": 1,
                    "message_id": "f51902a4-b771-4c1c-8f28-05396c19d3d5",
                    "contact_id": "8dba10d6-00d5-4f3a-ac8f-834211c9cbb9",
                    "invitation_id": null,
                    "message": "Hello Proven",
                    "state": "new",
                    "sent_time": "2025-06-26T21:53:46.397Z",
                    "locale": "en",
                    "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                    "created_at": "2025-06-26T21:53:47.282Z",
                    "updated_at": "2025-06-26T21:53:47.282Z"
                  },
                  {
                    "id": 2,
                    "message_id": "",
                    "contact_id": "8dba10d6-00d5-4f3a-ac8f-834211c9cbb9",
                    "invitation_id": 1,
                    "message": "Hello User",
                    "state": "sent",
                    "sent_time": "2025-06-26T21:54:49.309Z",
                    "locale": "",
                    "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                    "created_at": "2025-06-26T21:54:49.311Z",
                    "updated_at": "2025-06-26T21:54:49.848Z"
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/messages/{id}": {
      "get": {
        "summary": "Get a message by ID",
        "description": "This endpoint retrieves a message by its ID.",
        "tags": [
          "Basic Messages"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the message to retrieve."
          }
        ],
        "responses": {
          "200": {
            "description": "A message object",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "invitation_id": {
                      "type": "integer",
                      "description": "The ID of the invitation."
                    },
                    "contact_id": {
                      "type": "string",
                      "description": "The ID of the contact."
                    },
                    "message": {
                      "type": "string",
                      "description": "The message content."
                    }
                  }
                },
                "example": {
                  "id": 1,
                  "message_id": "f51902a4-b771-4c1c-8f28-05396c19d3d5",
                  "contact_id": "8dba10d6-00d5-4f3a-ac8f-834211c9cbb9",
                  "invitation_id": null,
                  "message": "Hello Proven",
                  "state": "new",
                  "sent_time": "2025-06-26T21:53:46.397Z",
                  "locale": "en",
                  "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                  "created_at": "2025-06-26T21:53:47.282Z",
                  "updated_at": "2025-06-26T21:53:47.282Z"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Message not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Basic message record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/connections": {
      "get": {
        "summary": "Get all connections",
        "description": "This endpoint retrieves all connections.",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "sort-field",
            "schema": {
              "type": "string"
            },
            "description": "The field to sort by (default updated_at)."
          },
          {
            "in": "query",
            "name": "sort-direction",
            "schema": {
              "type": "string"
            },
            "description": "The direction to sort (ASC or DESC, default DESC)."
          },
          {
            "in": "query",
            "name": "page-size",
            "schema": {
              "type": "integer"
            },
            "description": "The number of connections per page (default 20)."
          },
          {
            "in": "query",
            "name": "current-page",
            "schema": {
              "type": "integer"
            },
            "description": "The current page number (default 1)."
          },
          {
            "in": "query",
            "name": "item-count",
            "schema": {
              "type": "integer"
            },
            "description": "The total number of items."
          },
          {
            "in": "query",
            "name": "state-filter",
            "schema": {
              "type": "string"
            },
            "description": "If provided, returns only connections with this state."
          },
          {
            "in": "query",
            "name": "contact-id",
            "schema": {
              "type": "string"
            },
            "description": "If provided, returns only connections for this contact_id."
          }
        ],
        "responses": {
          "200": {
            "description": "A list of connections",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "params": {
                      "type": "object",
                      "properties": {
                        "sort": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "pageSize": {
                          "type": "string"
                        },
                        "currentPage": {
                          "type": "integer"
                        },
                        "pageCount": {
                          "type": "integer"
                        },
                        "itemCount": {
                          "type": "integer"
                        },
                        "stateFilter": {
                          "type": "string",
                          "nullable": true
                        },
                        "contactIdFilter": {
                          "type": "string",
                          "nullable": true
                        }
                      }
                    },
                    "rows": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "connection_id": {
                            "type": "string"
                          },
                          "state": {
                            "type": "string"
                          },
                          "my_did": {
                            "type": "string"
                          },
                          "alias": {
                            "type": "string"
                          },
                          "request_id": {
                            "type": "string"
                          },
                          "invitation_key": {
                            "type": "string"
                          },
                          "invitation_msg_id": {
                            "type": "string"
                          },
                          "invitation_mode": {
                            "type": "string"
                          },
                          "invitation_url": {
                            "type": "string"
                          },
                          "invitation": {
                            "type": "object",
                            "properties": {
                              "@type": {
                                "type": "string"
                              },
                              "@id": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "handshake_protocols": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "services": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "type": {
                                      "type": "string"
                                    },
                                    "recipientKeys": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "serviceEndpoint": {
                                      "type": "string"
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "accept": {
                            "type": "string"
                          },
                          "initiator": {
                            "type": "string"
                          },
                          "their_role": {
                            "type": "string"
                          },
                          "their_did": {
                            "type": "string"
                          },
                          "their_public_did": {
                            "type": "string"
                          },
                          "their_label": {
                            "type": "string"
                          },
                          "routing_state": {
                            "type": "string"
                          },
                          "inbound_connection_id": {
                            "type": "string"
                          },
                          "error_msg": {
                            "type": "string"
                          },
                          "contact_id": {
                            "type": "string"
                          },
                          "transaction_role": {
                            "type": "string"
                          },
                          "discovered_features": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "pid": {
                                  "type": "string"
                                },
                                "roles": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              }
                            }
                          },
                          "wallet_id": {
                            "type": "string"
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "params": {
                    "sort": [
                      [
                        [
                          "updated_at",
                          "DESC"
                        ]
                      ]
                    ],
                    "pageSize": "1",
                    "currentPage": 1,
                    "pageCount": 1,
                    "itemCount": 1,
                    "stateFilter": null,
                    "contactIdFilter": null
                  },
                  "rows": [
                    {
                      "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                      "state": "active",
                      "my_did": "did:peer:4zQmaa3MtBR8sPBAzZqVmwYqpjCzm4vAEh7FPMutFq71uHNN:zX4i2p2FcjJFFGYQy3UXZd5LCnUP9t7NenynBWQnmt13wxpMsSkaqGk8rFFk63RFhrCGwgYXpb4UJukfdmWyxcKJwEMSJt2akPvrAfZ3YQ2iAQ5GUgoLsADHbcZBNpPXS2JXH7zNFeq7s1gtSiVfs1otPiSX5PxKkT7czheF9TwszcVGTvAfAGocN2UHKNF2qi77YDsmmkarjDWngKqrzfW7dumgzXyawj7Ne9eRXsAVjCm2QoqU3M5mbTysFziW5GEJwJvAHHjq9nBTgwf3SzTLqGvL86yCnmxMb4zFtKzfi369b9hzVXRiKAoPeeqtvGGQVcSESWQumdfKKgLWFhCuEJowoDpw15WFVmkgiSFsAx14CX4fuq2tUVMmmcpDgH5A6J5qWQYiqPjTNTsm7Cu7jUWDEmvS93G1LcmtM8fno5wGH2Yw5A3qtFywgXs8KeBptpzgLYo37yLe6xxh1g1Z2pn2FGrVWm6AZxgwwyDSDFQGpgbEy2ZP5jmunh3eUgrJPex9aLGUSBrtHyq5g2aN424J3Vg5zbDQ9woAmzaZ97mg3rGWkvcShpiW1gHBXVsvwHXt161xsEq6VL4VhApyy9LCjJHzr25zgDyv8MgzJ",
                      "alias": "API Invitation",
                      "request_id": "c9babf88-e26d-47e7-b1f8-34645e3385b1",
                      "invitation_key": "G9nZtxjCA8FqrUmtyRegi5LrXpxYrsEKoyfBi4kbH5fx",
                      "invitation_msg_id": "ce6b9040-09ff-4eab-80c0-c6cb934596ca",
                      "invitation_mode": "once",
                      "invitation_url": "https://example.com/agent?oob=eyJAdHlwZSI6ICJodHRwczovL2RpZGNvbW0ub3JnL291dC1vZi1iYW5kLzEuMS9pbnZpdGF0aW9uIiwgIkBpZCI6ICJjZTZiOTA0MC0wOWZmLTRlYWItODBjMC1jNmNiOTM0NTk2Y2EiLCAibGFiZWwiOiAiT09CIiwgImhhbmRzaGFrZV9wcm90b2NvbHMiOiBbImh0dHBzOi8vZGlkY29tbS5vCmcvZGlkZXhjaGFuZ2UvMS4xIl0sICJzZXJ2aWNlcyI6IFt7ImlkIjogIiNpbmxpbmUiLCAidHlwZSI6ICJkaWQtY29tbXVuaWNhdGlvbiIsICJyZWNpcGllbnRLZXlzIjogWyJkaWQ6a2V5Ono2TWt1YzNjVkN5ZFZma0p4eWNiZXpjWFpBdHJNUUVRR2tVZ1Z2YTdZTGljQ0pUTCN6Nk1rdWMzY1ZDeWRWZmtKeHljYmV6Y1haQXRyTVFFUUdrVWdWemE3WUxpY0NKVEwiXSwgInNlcnZpY2VFbmRwb2ludCI6ICJodHRwczovL3NpbW9uZGV2Mi56cm9rLmRldi5pbmRpY2lvdGVjaC5pby9hZ2VudCJ9XX0",
                      "invitation": {
                        "@type": "https://didcomm.org/out-of-band/1.1/invitation",
                        "@id": "ce6b9040-09ff-4eab-80c0-c6cb934596ca",
                        "label": "OOB",
                        "handshake_protocols": [
                          "https://didcomm.org/didexchange/1.1"
                        ],
                        "services": [
                          {
                            "id": "#inline",
                            "type": "did-communication",
                            "recipientKeys": [
                              "did:key:z6Mkuc3cVCydVfkJxycbezcXZAtrMQEQGkUgVza7YLicCJTL#z6Mkuc3cVCydVfkJxycbezcXZAtrMQEQGkUgVza7YLicCJTL"
                            ],
                            "serviceEndpoint": "https://example.com/agent"
                          }
                        ]
                      },
                      "accept": "auto",
                      "initiator": null,
                      "their_role": "invitee",
                      "their_did": "did:peer:1zQmVbupaSwiuhgBVGERqxhGqfy5pQGDd73bLQLrtiat7ygR",
                      "their_public_did": null,
                      "their_label": "Sim Ios",
                      "routing_state": null,
                      "inbound_connection_id": null,
                      "error_msg": null,
                      "contact_id": "4fbbe345-f38c-45b1-8d9b-c33e64ee0518",
                      "transaction_role": null,
                      "discovered_features": [
                        {
                          "pid": "https://didcomm.org/coordinate-mediation/1.0",
                          "roles": [
                            "RECIPIENT",
                            "MEDIATOR"
                          ]
                        },
                        {
                          "pid": "https://didcomm.org/didexchange/1.1",
                          "roles": [
                            "requester",
                            "responder"
                          ]
                        },
                        {
                          "pid": "https://didcomm.org/did-rotate/1.0",
                          "roles": [
                            "rotating_party",
                            "observing_party"
                          ]
                        },
                        {
                          "pid": "https://didcomm.org/revocation_notification/1.0",
                          "roles": [
                            "holder"
                          ]
                        },
                        {
                          "pid": "https://didcomm.org/revocation_notification/2.0",
                          "roles": [
                            "holder"
                          ]
                        },
                        {
                          "pid": "https://didcomm.org/issue-credential/2.0",
                          "roles": [
                            "holder",
                            "issuer"
                          ]
                        },
                        {
                          "pid": "https://didcomm.org/discover-features/1.0",
                          "roles": [
                            "requester",
                            "responder"
                          ]
                        },
                        {
                          "pid": "https://didcomm.org/discover-features/2.0",
                          "roles": [
                            "requester",
                            "responder"
                          ]
                        },
                        {
                          "pid": "https://didcomm.org/present-proof/2.0",
                          "roles": [
                            "prover",
                            "verifier"
                          ]
                        },
                        {
                          "pid": "https://didcomm.org/messagepickup/1.0",
                          "roles": [
                            "message_holder",
                            "recipient",
                            "batch_sender",
                            "batch_recipient"
                          ]
                        },
                        {
                          "pid": "https://didcomm.org/messagepickup/2.0",
                          "roles": [
                            "mediator",
                            "recipient"
                          ]
                        },
                        {
                          "pid": "https://didcomm.org/basicmessage/1.0",
                          "roles": [
                            "sender",
                            "receiver"
                          ]
                        },
                        {
                          "pid": "https://didcomm.org/out-of-band/1.1",
                          "roles": [
                            "sender",
                            "receiver"
                          ]
                        }
                      ],
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "created_at": "2025-07-08T20:51:18.856Z",
                      "updated_at": "2025-07-08T21:00:21.741Z"
                    }
                  ],
                  "count": 1
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/connections/{connection_id}": {
      "get": {
        "summary": "Get a connection by ID",
        "description": "This endpoint retrieves a connection by its id.",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "connection_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The connection id of the connection to retrieve."
          }
        ],
        "responses": {
          "200": {
            "description": "Connection record retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "connection_id": {
                      "type": "string"
                    },
                    "state": {
                      "type": "string"
                    },
                    "my_did": {
                      "type": "string"
                    },
                    "alias": {
                      "type": "string"
                    },
                    "request_id": {
                      "type": "string"
                    },
                    "invitation_key": {
                      "type": "string"
                    },
                    "invitation_msg_id": {
                      "type": "string"
                    },
                    "invitation_mode": {
                      "type": "string"
                    },
                    "invitation_url": {
                      "type": "string"
                    },
                    "invitation": {
                      "type": "object",
                      "properties": {
                        "@type": {
                          "type": "string"
                        },
                        "@id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "handshake_protocols": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "services": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              },
                              "recipientKeys": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "serviceEndpoint": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    },
                    "accept": {
                      "type": "string"
                    },
                    "initiator": {
                      "type": "string"
                    },
                    "their_role": {
                      "type": "string"
                    },
                    "their_did": {
                      "type": "string"
                    },
                    "their_public_did": {
                      "type": "string"
                    },
                    "their_label": {
                      "type": "string"
                    },
                    "routing_state": {
                      "type": "string"
                    },
                    "inbound_connection_id": {
                      "type": "string"
                    },
                    "error_msg": {
                      "type": "string"
                    },
                    "contact_id": {
                      "type": "string"
                    },
                    "transaction_role": {
                      "type": "string"
                    },
                    "discovered_features": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "pid": {
                            "type": "string"
                          },
                          "roles": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    "wallet_id": {
                      "type": "string"
                    },
                    "created_at": {
                      "type": "string"
                    },
                    "updated_at": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                  "state": "active",
                  "my_did": "did:peer:4zQmaa3MtBR8sPBAzZqVmwYqpjCzm4vAEh7FPMutFq71uHNN:zX4i2p2FcjJFFGYQy3UXZd5LCnUP9t7NenynBWQnmt13wxpMsSkaqGk8rFFk63RFhrCGwgYXpb4UJukfdmWyxcKJwEMSJt2akPvrAfZ3YQ2iAQ5GUgoLsADHbcZBNpPXS2JXH7zNFeq7s1gtSiVfs1otPiSX5PxKkT7czheF9TwszcVGTvAfAGocN2UHKNF2qi77YDsmmkarjDWngKqrzfW7dumgzXyawj7Ne9eRXsAVjCm2QoqU3M5mbTysFziW5GEJwJvAHHjq9nBTgwf3SzTLqGvL86yCnmxMb4zFtKzfi369b9hzVXRiKAoPeeqtvGGQVcSESWQumdfKKgLWFhCuEJowoDpw15WFVmkgiSFsAx14CX4fuq2tUVMmmcpDgH5A6J5qWQYiqPjTNTsm7Cu7jUWDEmvS93G1LcmtM8fno5wGH2Yw5A3qtFywgXs8KeBptpzgLYo37yLe6xxh1g1Z2pn2FGrVWm6AZxgwwyDSDFQGpgbEy2ZP5jmunh3eUgrJPex9aLGUSBrtHyq5g2aN424J3Vg5zbDQ9woAmzaZ97mg3rGWkvcShpiW1gHBXVsvwHXt161xsEq6VL4VhApyy9LCjJHzr25zgDyv8MgzJ",
                  "alias": "API Invitation",
                  "request_id": "c9babf88-e26d-47e7-b1f8-34645e3385b1",
                  "invitation_key": "G9nZtxjCA8FqrUmtyRegi5LrXpxYrsEKoyfBi4kbH5fx",
                  "invitation_msg_id": "ce6b9040-09ff-4eab-80c0-c6cb934596ca",
                  "invitation_mode": "once",
                  "invitation_url": "https://example.com/agent?oob=eyJAdHlwZSI6ICJodHRwczovL2RpZGNvbW0ub3JnL291dC1vZi1iYW5kLzEuMS9pbnZpdGF0aW9uIiwgIkBpZCI6ICJjZTZiOTA0MC0wOWZmLTRlYWItODBjMC1jNmNiOTM0NTk2Y2EiLCAibGFiZWwiOiAiT09CIiwgImhhbmRzaGFrZV9wcm90b2NvbHMiOiBbImh0dHBzOi8vZGlkY29tbS5vCmcvZGlkZXhjaGFuZ2UvMS4xIl0sICJzZXJ2aWNlcyI6IFt7ImlkIjogIiNpbmxpbmUiLCAidHlwZSI6ICJkaWQtY29tbXVuaWNhdGlvbiIsICJyZWNpcGllbnRLZXlzIjogWyJkaWQ6a2V5Ono2TWt1YzNjVkN5ZFZma0p4eWNiZXpjWFpBdHJNUUVRR2tVZ1Z2YTdZTGljQ0pUTCN6Nk1rdWMzY1ZDeWRWZmtKeHljYmV6Y1haQXRyTVFFUUdrVWdWemE3WUxpY0NKVEwiXSwgInNlcnZpY2VFbmRwb2ludCI6ICJodHRwczovL3NpbW9uZGV2Mi56cm9rLmRldi5pbmRpY2lvdGVjaC5pby9hZ2VudCJ9XX0",
                  "invitation": {
                    "@type": "https://didcomm.org/out-of-band/1.1/invitation",
                    "@id": "ce6b9040-09ff-4eab-80c0-c6cb934596ca",
                    "label": "OOB",
                    "handshake_protocols": [
                      "https://didcomm.org/didexchange/1.1"
                    ],
                    "services": [
                      {
                        "id": "#inline",
                        "type": "did-communication",
                        "recipientKeys": [
                          "did:key:z6Mkuc3cVCydVfkJxycbezcXZAtrMQEQGkUgVza7YLicCJTL#z6Mkuc3cVCydVfkJxycbezcXZAtrMQEQGkUgVza7YLicCJTL"
                        ],
                        "serviceEndpoint": "https://example.com/agent"
                      }
                    ],
                    "accept": "auto",
                    "initiator": null,
                    "their_role": "invitee",
                    "their_did": "did:peer:1zQmVbupaSwiuhgBVGERqxhGqfy5pQGDd73bLQLrtiat7ygR",
                    "their_public_did": null,
                    "their_label": "Sim Ios",
                    "routing_state": null,
                    "inbound_connection_id": null,
                    "error_msg": null,
                    "contact_id": "4fbbe345-f38c-45b1-8d9b-c33e64ee0518",
                    "transaction_role": null,
                    "discovered_features": [
                      {
                        "pid": "https://didcomm.org/coordinate-mediation/1.0",
                        "roles": [
                          "RECIPIENT",
                          "MEDIATOR"
                        ]
                      },
                      {
                        "pid": "https://didcomm.org/didexchange/1.1",
                        "roles": [
                          "requester",
                          "responder"
                        ]
                      },
                      {
                        "pid": "https://didcomm.org/did-rotate/1.0",
                        "roles": [
                          "rotating_party",
                          "observing_party"
                        ]
                      },
                      {
                        "pid": "https://didcomm.org/revocation_notification/1.0",
                        "roles": [
                          "holder"
                        ]
                      },
                      {
                        "pid": "https://didcomm.org/revocation_notification/2.0",
                        "roles": [
                          "holder"
                        ]
                      },
                      {
                        "pid": "https://didcomm.org/issue-credential/2.0",
                        "roles": [
                          "holder",
                          "issuer"
                        ]
                      },
                      {
                        "pid": "https://didcomm.org/discover-features/1.0",
                        "roles": [
                          "requester",
                          "responder"
                        ]
                      },
                      {
                        "pid": "https://didcomm.org/discover-features/2.0",
                        "roles": [
                          "requester",
                          "responder"
                        ]
                      },
                      {
                        "pid": "https://didcomm.org/present-proof/2.0",
                        "roles": [
                          "prover",
                          "verifier"
                        ]
                      },
                      {
                        "pid": "https://didcomm.org/messagepickup/1.0",
                        "roles": [
                          "message_holder",
                          "recipient",
                          "batch_sender",
                          "batch_recipient"
                        ]
                      },
                      {
                        "pid": "https://didcomm.org/messagepickup/2.0",
                        "roles": [
                          "mediator",
                          "recipient"
                        ]
                      },
                      {
                        "pid": "https://didcomm.org/basicmessage/1.0",
                        "roles": [
                          "sender",
                          "receiver"
                        ]
                      },
                      {
                        "pid": "https://didcomm.org/out-of-band/1.1",
                        "roles": [
                          "sender",
                          "receiver"
                        ]
                      }
                    ],
                    "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                    "created_at": "2025-07-08T20:51:18.856Z",
                    "updated_at": "2025-07-08T21:00:21.741Z"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Connection not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Connection record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/context": {
      "post": {
        "summary": "Save a JSON-LD context file for a specific wallet",
        "description": "This endpoint saves a JSON-LD context file for a specific wallet.",
        "tags": [
          "Context"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "context_file_id": {
                    "type": "string",
                    "description": "The filename of the JSON-LD context file to save.",
                    "example": "test.json"
                  },
                  "file": {
                    "type": "object",
                    "properties": {
                      "@context": {
                        "type": "object",
                        "description": "The JSON-LD context.",
                        "example": {
                          "GenericCredential": {
                            "@id": "https://example.com/indicio#GenericCredential",
                            "@context": {
                              "name": "http://schema.org/name",
                              "familyName": "http://schema.org/familyName",
                              "givenName": "http://schema.org/givenName",
                              "identifier": "https://example.com/indicio#identifier",
                              "date": {
                                "@id": "http://schema.org/date",
                                "@type": "http://www.w3.org/2001/XMLSchema#date"
                              },
                              "description": "http://schema.org/description"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Context saved successfully",
            "content": {
              "application/json": {
                "example": {
                  "id": 1,
                  "context_file_id": "test.json",
                  "file": {
                    "@context": {
                      "GenericCredential": {
                        "@id": "https://example.com/indicio#GenericCredential",
                        "@context": {
                          "name": "http://schema.org/name",
                          "familyName": "http://schema.org/familyName",
                          "givenName": "http://schema.org/givenName",
                          "identifier": "https://example.com/indicio#identifier",
                          "date": {
                            "@id": "http://schema.org/date",
                            "@type": "http://www.w3.org/2001/XMLSchema#date"
                          },
                          "description": "http://schema.org/description"
                        }
                      }
                    }
                  },
                  "wallet_id": "e3356f7c-37a2-4e38-a9fc-ba2288dc04a2",
                  "created_at": "2025-07-10T03:11:52.623Z",
                  "updated_at": "2025-07-10T03:11:52.623Z"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "get": {
        "summary": "Get all JSON-LD context files for a specific wallet",
        "description": "This endpoint retrieves all JSON-LD context files for the authenticated wallet.",
        "tags": [
          "Context"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "A list of JSON-LD context files for the wallet",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "example": [
                  {
                    "id": 1,
                    "context_file_id": "test.json",
                    "file": {
                      "@context": {
                        "GenericCredential": {
                          "@id": "https://example.com/indicio#GenericCredential",
                          "@context": {
                            "name": "http://schema.org/name",
                            "familyName": "http://schema.org/familyName",
                            "givenName": "http://schema.org/givenName",
                            "identifier": "https://example.com/indicio#identifier",
                            "date": {
                              "@id": "http://schema.org/date",
                              "@type": "http://www.w3.org/2001/XMLSchema#date"
                            },
                            "description": "http://schema.org/description"
                          }
                        }
                      }
                    },
                    "wallet_id": "e3356f7c-37a2-4e38-a9fc-ba2288dc04a2",
                    "created_at": "2025-07-10T03:11:52.623Z",
                    "updated_at": "2025-07-10T03:11:52.623Z"
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "error": "Internal server error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/context/{context_file_id}": {
      "get": {
        "summary": "Get a JSON-LD context file by ID for a specific wallet",
        "description": "This endpoint retrieves a JSON-LD context file by its ID for the authenticated wallet.",
        "tags": [
          "Context"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "context_file_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the JSON-LD context file to retrieve."
          }
        ],
        "responses": {
          "200": {
            "description": "JSON-LD context file retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "id": 1,
                  "context_file_id": "test.json",
                  "file": {
                    "@context": {
                      "GenericCredential": {
                        "@id": "https://example.com/indicio#GenericCredential",
                        "@context": {
                          "name": "http://schema.org/name",
                          "familyName": "http://schema.org/familyName",
                          "givenName": "http://schema.org/givenName",
                          "identifier": "https://example.com/indicio#identifier",
                          "date": {
                            "@id": "http://schema.org/date",
                            "@type": "http://www.w3.org/2001/XMLSchema#date"
                          },
                          "description": "http://schema.org/description"
                        }
                      }
                    }
                  },
                  "wallet_id": "e3356f7c-37a2-4e38-a9fc-ba2288dc04a2",
                  "created_at": "2025-07-10T03:11:52.623Z",
                  "updated_at": "2025-07-10T03:11:52.623Z"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Context file not found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/context": {
      "get": {
        "summary": "Get all JSON-LD context files from all wallets",
        "description": "This endpoint retrieves all JSON-LD context files from all wallets (static route).",
        "tags": [
          "Context"
        ],
        "responses": {
          "200": {
            "description": "A list of all JSON-LD context files",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "example": [
                  {
                    "id": 1,
                    "context_file_id": "test.json",
                    "file": {
                      "@context": {
                        "GenericCredential": {
                          "@id": "https://example.com/indicio#GenericCredential",
                          "@context": {
                            "name": "http://schema.org/name",
                            "familyName": "http://schema.org/familyName",
                            "givenName": "http://schema.org/givenName",
                            "identifier": "https://example.com/indicio#identifier",
                            "date": {
                              "@id": "http://schema.org/date",
                              "@type": "http://www.w3.org/2001/XMLSchema#date"
                            },
                            "description": "http://schema.org/description"
                          }
                        }
                      }
                    },
                    "wallet_id": "e3356f7c-37a2-4e38-a9fc-ba2288dc04a2",
                    "created_at": "2025-07-10T03:11:52.623Z",
                    "updated_at": "2025-07-10T03:11:52.623Z"
                  }
                ]
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "error": "Internal server error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/credentials/json-ld": {
      "post": {
        "summary": "Issue JSON-LD credentials",
        "description": "This endpoint issues JSON-LD credentials.",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "timeout",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "The timeout for the credential issuance (seconds).",
            "example": 30
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "invitation_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "The invitation ID.",
                    "example": 1
                  },
                  "contact_id": {
                    "type": "string",
                    "nullable": true,
                    "description": "The contact ID.",
                    "example": ""
                  },
                  "revocation_def_id": {
                    "type": "string",
                    "nullable": true,
                    "description": "The ID of status list definition to enable revocation",
                    "example": ""
                  },
                  "credential": {
                    "type": "object",
                    "description": "The credential object.",
                    "properties": {
                      "@context": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "The contexts of the credential.",
                        "example": [
                          "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                          "https://www.w3.org/ns/credentials/status/v1"
                        ]
                      },
                      "issuanceDate": {
                        "type": "string",
                        "format": "date-time",
                        "description": "The issuance date of the credential.",
                        "example": "2024-11-29T21:07:11Z"
                      },
                      "validFrom": {
                        "type": "string",
                        "format": "date-time",
                        "description": "The valid from date of the credential.",
                        "example": "2024-11-29T11:34:20Z"
                      },
                      "awardedDate": {
                        "type": "string",
                        "format": "date-time",
                        "description": "The awarded date of the credential.",
                        "example": "2024-11-29T21:07:11Z"
                      },
                      "expirationDate": {
                        "type": "string",
                        "format": "date-time",
                        "description": "The expiration date of the credential.",
                        "example": "2030-11-29T11:34:20Z"
                      },
                      "validUntil": {
                        "type": "string",
                        "format": "date-time",
                        "description": "The valid until date of the credential.",
                        "example": "2030-11-29T11:34:20Z"
                      },
                      "type": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "The types of the credential.",
                        "example": [
                          "OpenBadgeCredential"
                        ]
                      },
                      "description": {
                        "type": "string",
                        "description": "The description of the credential.",
                        "example": "Awesome Credential Description"
                      },
                      "name": {
                        "type": "string",
                        "description": "The name of the credential.",
                        "example": "New Awesome JSON-LD Credential"
                      },
                      "issuer": {
                        "type": "object",
                        "description": "The issuer of the credential.",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "The identifier of the issuer",
                            "example": "did:indy:<namespace>:5uF3EGLPkBccqMhEfX2JS8"
                          },
                          "type": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "The types of the issuer.",
                            "example": [
                              "Profile"
                            ]
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the issuer.",
                            "example": "Awesome Issuer Name"
                          },
                          "description": {
                            "type": "string",
                            "description": "The description of the issuer.",
                            "example": "An awesome Issuer who Issues awesome credentials."
                          },
                          "url": {
                            "type": "string",
                            "description": "The URL of the issuer.",
                            "example": "https://www.awesome-issuer-url.com"
                          },
                          "email": {
                            "type": "string",
                            "description": "The email of the issuer.",
                            "example": "issuer-contact@example.org"
                          },
                          "image": {
                            "type": "object",
                            "description": "The image of the issuer.",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "The ID of the image.",
                                "example": "https://www.awesome-issuer-url.com/images/issuer-logo.png"
                              },
                              "type": {
                                "type": "string",
                                "description": "The type of the image.",
                                "example": "Image"
                              },
                              "caption": {
                                "type": "string",
                                "description": "The caption of the image.",
                                "example": "Awesome Issuer Logo"
                              }
                            }
                          }
                        }
                      },
                      "credentialSubject": {
                        "type": "object",
                        "description": "The credential subject.",
                        "properties": {
                          "type": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "The types of the credential subject.",
                            "example": [
                              "AchievementSubject"
                            ]
                          },
                          "achievement": {
                            "type": "object",
                            "description": "The achievement of the credential subject.",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "The ID of the achievement.",
                                "example": "https://example.org/achievements/degree"
                              },
                              "name": {
                                "type": "string",
                                "description": "The name of the achievement.",
                                "example": "Your name"
                              },
                              "description": {
                                "type": "string",
                                "description": "The description of the achievement.",
                                "example": "Your description"
                              },
                              "criteria": {
                                "type": "object",
                                "description": "The criteria of the achievement.",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "description": "The type of the criteria.",
                                    "example": "Criteria"
                                  },
                                  "narrative": {
                                    "type": "string",
                                    "description": "The narrative of the criteria.",
                                    "example": "Your narrative"
                                  }
                                }
                              },
                              "image": {
                                "type": "object",
                                "description": "The image of the achievement.",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "The ID of the image.",
                                    "example": "https://example.org/achievements/image.png"
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "The type of the image.",
                                    "example": "Image"
                                  }
                                }
                              },
                              "type": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "The types of the achievement.",
                                "example": [
                                  "Achievement"
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "proofType": {
                    "type": "string",
                    "description": "The proofType for the credential issuance",
                    "example": "Ed25519Signature2020"
                  },
                  "rule": {
                    "type": "string",
                    "description": "The rule for the credential issuance.",
                    "example": "string"
                  }
                }
              },
              "examples": {
                "revocation-disabled": {
                  "summary": "JSON-LD issuance with revocation disabled",
                  "value": {
                    "invitation_id": 1,
                    "contact_id": "",
                    "revocation_def_id": "",
                    "credential": {
                      "@context": [
                        "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                        "https://www.w3.org/ns/credentials/status/v1"
                      ],
                      "issuanceDate": "2024-11-29T21:07:11Z",
                      "validFrom": "2024-11-29T11:34:20Z",
                      "awardedDate": "2024-11-29T21:07:11Z",
                      "expirationDate": "2030-11-29T11:34:20Z",
                      "validUntil": "2030-11-29T11:34:20Z",
                      "type": [
                        "OpenBadgeCredential"
                      ],
                      "description": "Awesome Credential Description",
                      "name": "New Awesome JSON-LD Credential",
                      "issuer": {
                        "id": "did:indy:<namespace>:5uF3EGLPkBccqMhEfX2JS8",
                        "type": [
                          "Profile"
                        ],
                        "name": "Awesome Issuer Name",
                        "description": "An awesome Issuer who Issues awesome credentials.",
                        "url": "https://www.awesome-issuer-url.com",
                        "email": "issuer-contact@example.org",
                        "image": {
                          "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                          "type": "Image",
                          "caption": "Awesome Issuer Logo"
                        }
                      },
                      "credentialSubject": {
                        "type": [
                          "AchievementSubject"
                        ],
                        "achievement": {
                          "id": "https://example.org/achievements/degree",
                          "name": "Your name",
                          "description": "Your description",
                          "criteria": {
                            "type": "Criteria",
                            "narrative": "Your narrative"
                          },
                          "image": {
                            "id": "https://example.org/achievements/image.png",
                            "type": "Image"
                          },
                          "type": [
                            "Achievement"
                          ]
                        }
                      }
                    },
                    "proofType": "Ed25519Signature2020",
                    "rule": "string"
                  }
                },
                "revocation-enabled": {
                  "summary": "JSON-LD issuance with revocation enabled",
                  "value": {
                    "invitation_id": 1,
                    "contact_id": "",
                    "revocation_def_id": "<status_list_id>",
                    "credential": {
                      "@context": [
                        "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                        "https://www.w3.org/ns/credentials/status/v1"
                      ],
                      "issuanceDate": "2024-11-29T21:07:11Z",
                      "validFrom": "2024-11-29T11:34:20Z",
                      "awardedDate": "2024-11-29T21:07:11Z",
                      "expirationDate": "2030-11-29T11:34:20Z",
                      "validUntil": "2030-11-29T11:34:20Z",
                      "type": [
                        "OpenBadgeCredential"
                      ],
                      "description": "Awesome Credential Description",
                      "name": "New Awesome JSON-LD Credential",
                      "issuer": {
                        "id": "did:indy:<namespace>:5uF3EGLPkBccqMhEfX2JS8",
                        "type": [
                          "Profile"
                        ],
                        "name": "Awesome Issuer Name",
                        "description": "An awesome Issuer who Issues awesome credentials.",
                        "url": "https://www.awesome-issuer-url.com",
                        "email": "issuer-contact@example.org",
                        "image": {
                          "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                          "type": "Image",
                          "caption": "Awesome Issuer Logo"
                        }
                      },
                      "credentialSubject": {
                        "type": [
                          "AchievementSubject"
                        ],
                        "achievement": {
                          "id": "https://example.org/achievements/degree",
                          "name": "Your name",
                          "description": "Your description",
                          "criteria": {
                            "type": "Criteria",
                            "narrative": "Your narrative"
                          },
                          "image": {
                            "id": "https://example.org/achievements/image.png",
                            "type": "Image"
                          },
                          "type": [
                            "Achievement"
                          ]
                        }
                      }
                    },
                    "proofType": "Ed25519Signature2020",
                    "rule": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-LD credential issued successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "record": {
                      "type": "object"
                    }
                  }
                },
                "examples": {
                  "revocation-enabled": {
                    "summary": "Issuance response with revocation enabled",
                    "value": {
                      "request_id": 1,
                      "connection_id": "1c50d6e1-5a43-48d8-837e-be3cbc815469",
                      "contact_id": "",
                      "invitation_id": 1,
                      "credential": {
                        "name": "New Awesome JSON-LD Credential",
                        "type": [
                          "OpenBadgeCredential"
                        ],
                        "issuer": {
                          "id": "did:indy:<namespace>:5uF3EGLPkBccqMhEfX2JS8",
                          "url": "https://www.awesome-issuer-url.com",
                          "name": "Awesome Issuer Name",
                          "type": [
                            "Profile"
                          ],
                          "email": "issuer-contact@example.org",
                          "image": {
                            "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                            "type": "Image",
                            "caption": "Awesome Issuer Logo"
                          },
                          "description": "An awesome Issuer who Issues awesome credentials."
                        },
                        "@context": [
                          "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                          "https://www.w3.org/ns/credentials/status/v1"
                        ],
                        "validFrom": "2024-11-29T11:34:20Z",
                        "validUntil": "2030-11-29T11:34:20Z",
                        "awardedDate": "2024-11-29T21:07:11Z",
                        "description": "Awesome Credential Description",
                        "issuanceDate": "2024-11-29T21:07:11Z",
                        "expirationDate": "2030-11-29T11:34:20Z",
                        "credentialSubject": {
                          "type": [
                            "AchievementSubject"
                          ],
                          "achievement": {
                            "id": "https://example.org/achievements/degree",
                            "name": "Your name",
                            "type": [
                              "Achievement"
                            ],
                            "image": {
                              "id": "https://example.org/achievements/image.png",
                              "type": "Image"
                            },
                            "criteria": {
                              "type": "Criteria",
                              "narrative": "Your narrative"
                            },
                            "description": "Your description"
                          }
                        },
                        "rule": "string",
                        "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                        "meta_data": null,
                        "state": "offer-sent",
                        "complete": false,
                        "result": false,
                        "result_string": "Pending",
                        "credential_exchange_id": [
                          "885b1487-479a-4071-8585-12580b1b0db1"
                        ],
                        "error": "",
                        "proof_type": "Ed25519Signature2020",
                        "created_at": "2025-07-09T19:28:02.633Z",
                        "updated_at": "2025-07-09T19:28:04.774Z",
                        "credential_status": {
                          "id": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/0#81407",
                          "type": "BitstringStatusListEntry",
                          "statusPurpose": "revocation",
                          "statusListIndex": 81407,
                          "statusListCredential": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/0"
                        }
                      }
                    }
                  },
                  "revocation-disabled": {
                    "summary": "Issuance response with revocation disabled",
                    "value": {
                      "request_id": 1,
                      "connection_id": "0ecc0b3c-4d15-4660-b8da-15d0feeded59",
                      "contact_id": "",
                      "invitation_id": 1,
                      "credential": {
                        "name": "New Awesome JSON-LD Credential",
                        "type": [
                          "OpenBadgeCredential"
                        ],
                        "issuer": {
                          "id": "did:indy:<namespace>:5uF3EGLPkBccqMhEfX2JS8",
                          "url": "https://www.awesome-issuer-url.com",
                          "name": "Awesome Issuer Name",
                          "type": [
                            "Profile"
                          ],
                          "email": "issuer-contact@example.org",
                          "image": {
                            "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                            "type": "Image",
                            "caption": "Awesome Issuer Logo"
                          },
                          "description": "An awesome Issuer who Issues awesome credentials."
                        },
                        "@context": [
                          "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                          "https://www.w3.org/ns/credentials/status/v1"
                        ],
                        "validFrom": "2024-11-29T11:34:20Z",
                        "validUntil": "2025-11-29T11:34:20Z",
                        "awardedDate": "2024-11-29T21:07:11Z",
                        "description": "Awesome Credential Description",
                        "issuanceDate": "2024-11-29T21:07:11Z",
                        "expirationDate": "2025-11-29T11:34:20Z",
                        "credentialSubject": {
                          "type": [
                            "AchievementSubject"
                          ],
                          "achievement": {
                            "id": "https://example.org/achievements/degree",
                            "name": "Your name",
                            "type": [
                              "Achievement"
                            ],
                            "image": {
                              "id": "https://example.org/achievements/image.png",
                              "type": "Image"
                            },
                            "criteria": {
                              "type": "Criteria",
                              "narrative": "Your narrative"
                            },
                            "description": "Your description"
                          }
                        }
                      },
                      "rule": "string",
                      "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                      "meta_data": null,
                      "state": "offer-sent",
                      "complete": false,
                      "result": false,
                      "result_string": "Pending",
                      "credential_exchange_id": [
                        "865f5487-479a-4071-8255-12580b1b0db7"
                      ],
                      "error": "",
                      "proof_type": "Ed25519Signature2020",
                      "created_at": "2025-06-26T21:58:24.092Z",
                      "updated_at": "2025-06-26T21:58:24.098Z",
                      "credential_status": null
                    }
                  },
                  "pending-invitation": {
                    "summary": "Pending issuance to invitation with no active connections",
                    "value": {
                      "request_id": 1,
                      "connection_id": null,
                      "contact_id": "",
                      "invitation_id": 1,
                      "credential": {
                        "name": "New Awesome JSON-LD Credential",
                        "type": [
                          "OpenBadgeCredential"
                        ],
                        "issuer": {
                          "id": "did:indy:<namespace>:5uF3EGLPkBccqMhEfX2JS8",
                          "url": "https://www.awesome-issuer-url.com",
                          "name": "Awesome Issuer Name",
                          "type": [
                            "Profile"
                          ],
                          "email": "issuer-contact@example.org",
                          "image": {
                            "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                            "type": "Image",
                            "caption": "Awesome Issuer Logo"
                          },
                          "description": "An awesome Issuer who Issues awesome credentials."
                        },
                        "@context": [
                          "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                          "https://www.w3.org/ns/credentials/status/v1"
                        ],
                        "validFrom": "2024-11-29T11:34:20Z",
                        "validUntil": "2030-11-29T11:34:20Z",
                        "awardedDate": "2024-11-29T21:07:11Z",
                        "description": "Awesome Credential Description",
                        "issuanceDate": "2024-11-29T21:07:11Z",
                        "expirationDate": "2030-11-29T11:34:20Z",
                        "credentialSubject": {
                          "type": [
                            "AchievementSubject"
                          ],
                          "achievement": {
                            "id": "https://example.org/achievements/degree",
                            "name": "Your name",
                            "type": [
                              "Achievement"
                            ],
                            "image": {
                              "id": "https://example.org/achievements/image.png",
                              "type": "Image"
                            },
                            "criteria": {
                              "type": "Criteria",
                              "narrative": "Your narrative"
                            },
                            "description": "Your description"
                          }
                        }
                      },
                      "rule": "string",
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "meta_data": null,
                      "state": null,
                      "complete": false,
                      "result": false,
                      "result_string": "New",
                      "credential_exchange_id": [],
                      "error": "",
                      "proof_type": "Ed25519Signature2020",
                      "created_at": "2025-07-09T19:28:02.633Z",
                      "updated_at": "2025-07-09T19:28:04.774Z",
                      "credential_status": null
                    }
                  },
                  "declined": {
                    "summary": "Credential offer declined",
                    "value": {
                      "request_id": 1,
                      "connection_id": "1c50d6e1-5a43-48d8-837e-be3cbc815469",
                      "contact_id": "",
                      "invitation_id": 1,
                      "credential": {
                        "name": "New Awesome JSON-LD Credential",
                        "type": [
                          "OpenBadgeCredential"
                        ],
                        "issuer": {
                          "id": "did:indy:<namespace>:5uF3EGLPkBccqMhEfX2JS8",
                          "url": "https://www.awesome-issuer-url.com",
                          "name": "Awesome Issuer Name",
                          "type": [
                            "Profile"
                          ],
                          "email": "issuer-contact@example.org",
                          "image": {
                            "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                            "type": "Image",
                            "caption": "Awesome Issuer Logo"
                          },
                          "description": "An awesome Issuer who Issues awesome credentials."
                        },
                        "@context": [
                          "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                          "https://www.w3.org/ns/credentials/status/v1"
                        ],
                        "validFrom": "2024-11-29T11:34:20Z",
                        "validUntil": "2030-11-29T11:34:20Z",
                        "awardedDate": "2024-11-29T21:07:11Z",
                        "description": "Awesome Credential Description",
                        "issuanceDate": "2024-11-29T21:07:11Z",
                        "expirationDate": "2030-11-29T11:34:20Z",
                        "credentialSubject": {
                          "type": [
                            "AchievementSubject"
                          ],
                          "achievement": {
                            "id": "https://example.org/achievements/degree",
                            "name": "Your name",
                            "type": [
                              "Achievement"
                            ],
                            "image": {
                              "id": "https://example.org/achievements/image.png",
                              "type": "Image"
                            },
                            "criteria": {
                              "type": "Criteria",
                              "narrative": "Your narrative"
                            },
                            "description": "Your description"
                          }
                        },
                        "rule": "string",
                        "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                        "meta_data": null,
                        "state": "abandoned",
                        "complete": true,
                        "result": false,
                        "result_string": "Declined",
                        "credential_exchange_id": [
                          "b929f047-b480-4df1-adb9-66c66cec24a2"
                        ],
                        "error": "",
                        "proof_type": "Ed25519Signature2020",
                        "created_at": "2025-07-09T20:40:15.883Z",
                        "updated_at": "2025-07-09T20:40:33.631Z",
                        "credential_status": null
                      }
                    }
                  },
                  "issued": {
                    "summary": "Credential successfully issued",
                    "value": {
                      "request_id": 1,
                      "connection_id": "1c50d6e1-5a43-48d8-837e-be3cbc815469",
                      "contact_id": "",
                      "invitation_id": 1,
                      "credential": {
                        "name": "New Awesome JSON-LD Credential",
                        "type": [
                          "OpenBadgeCredential"
                        ],
                        "issuer": {
                          "id": "did:indy:<namespace>:5uF3EGLPkBccqMhEfX2JS8",
                          "url": "https://www.awesome-issuer-url.com",
                          "name": "Awesome Issuer Name",
                          "type": [
                            "Profile"
                          ],
                          "email": "issuer-contact@example.org",
                          "image": {
                            "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                            "type": "Image",
                            "caption": "Awesome Issuer Logo"
                          },
                          "description": "An awesome Issuer who Issues awesome credentials."
                        },
                        "@context": [
                          "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                          "https://www.w3.org/ns/credentials/status/v1"
                        ],
                        "validFrom": "2024-11-29T11:34:20Z",
                        "validUntil": "2030-11-29T11:34:20Z",
                        "awardedDate": "2024-11-29T21:07:11Z",
                        "description": "Awesome Credential Description",
                        "issuanceDate": "2024-11-29T21:07:11Z",
                        "expirationDate": "2030-11-29T11:34:20Z",
                        "credentialSubject": {
                          "type": [
                            "AchievementSubject"
                          ],
                          "achievement": {
                            "id": "https://example.org/achievements/degree",
                            "name": "Your name",
                            "type": [
                              "Achievement"
                            ],
                            "image": {
                              "id": "https://example.org/achievements/image.png",
                              "type": "Image"
                            },
                            "criteria": {
                              "type": "Criteria",
                              "narrative": "Your narrative"
                            },
                            "description": "Your description"
                          }
                        },
                        "rule": "string",
                        "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                        "meta_data": null,
                        "state": "done",
                        "complete": true,
                        "result": true,
                        "result_string": "Issued",
                        "credential_exchange_id": [
                          "0b336ee2-0936-454f-a5d0-83e2969d9d47"
                        ],
                        "error": "",
                        "proof_type": "Ed25519Signature2020",
                        "created_at": "2025-07-09T20:41:29.375Z",
                        "updated_at": "2025-07-09T20:41:47.267Z",
                        "credential_status": null
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "422": {
            "description": "Unprocessable Entity.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/credentials/json-ld/{request_id}": {
      "get": {
        "summary": "Retrieve a JSON-LD credential by ID",
        "description": "This endpoint retrieves a JSON-LD credential by its ID using the provided API key.",
        "tags": [
          "Credentials"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "request_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the credential.",
            "example": "1"
          }
        ],
        "responses": {
          "200": {
            "description": "JSON-LD credential retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "record": {
                      "type": "object",
                      "description": "The retrieved JSON-LD credential record."
                    }
                  }
                },
                "examples": {
                  "revocation-enabled": {
                    "summary": "Issuance response with revocation enabled",
                    "value": {
                      "request_id": 1,
                      "connection_id": "1c50d6e1-5a43-48d8-837e-be3cbc815469",
                      "contact_id": "",
                      "invitation_id": 1,
                      "credential": {
                        "name": "New Awesome JSON-LD Credential",
                        "type": [
                          "OpenBadgeCredential"
                        ],
                        "issuer": {
                          "id": "did:indy:<namespace>:5uF3EGLPkBccqMhEfX2JS8",
                          "url": "https://www.awesome-issuer-url.com",
                          "name": "Awesome Issuer Name",
                          "type": [
                            "Profile"
                          ],
                          "email": "issuer-contact@example.org",
                          "image": {
                            "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                            "type": "Image",
                            "caption": "Awesome Issuer Logo"
                          },
                          "description": "An awesome Issuer who Issues awesome credentials."
                        },
                        "@context": [
                          "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                          "https://www.w3.org/ns/credentials/status/v1"
                        ],
                        "validFrom": "2024-11-29T11:34:20Z",
                        "validUntil": "2030-11-29T11:34:20Z",
                        "awardedDate": "2024-11-29T21:07:11Z",
                        "description": "Awesome Credential Description",
                        "issuanceDate": "2024-11-29T21:07:11Z",
                        "expirationDate": "2030-11-29T11:34:20Z",
                        "credentialSubject": {
                          "type": [
                            "AchievementSubject"
                          ],
                          "achievement": {
                            "id": "https://example.org/achievements/degree",
                            "name": "Your name",
                            "type": [
                              "Achievement"
                            ],
                            "image": {
                              "id": "https://example.org/achievements/image.png",
                              "type": "Image"
                            },
                            "criteria": {
                              "type": "Criteria",
                              "narrative": "Your narrative"
                            },
                            "description": "Your description"
                          }
                        }
                      },
                      "rule": "string",
                      "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                      "meta_data": null,
                      "state": "offer-sent",
                      "complete": false,
                      "result": false,
                      "result_string": "Pending",
                      "credential_exchange_id": [
                        "885b1487-479a-4071-8585-12580b1b0db1"
                      ],
                      "error": "",
                      "proof_type": "Ed25519Signature2020",
                      "created_at": "2025-07-09T19:28:02.633Z",
                      "updated_at": "2025-07-09T19:28:04.774Z",
                      "credential_status": {
                        "id": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/0#81407",
                        "type": "BitstringStatusListEntry",
                        "statusPurpose": "revocation",
                        "statusListIndex": 81407,
                        "statusListCredential": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/0"
                      }
                    }
                  },
                  "revocation-disabled": {
                    "summary": "Issuance response with revocation disabled",
                    "value": {
                      "request_id": 1,
                      "connection_id": "0ecc0b3c-4d15-4660-b8da-15d0feeded59",
                      "contact_id": "",
                      "invitation_id": 1,
                      "credential": {
                        "name": "New Awesome JSON-LD Credential",
                        "type": [
                          "OpenBadgeCredential"
                        ],
                        "issuer": {
                          "id": "did:indy:<namespace>:5uF3EGLPkBccqMhEfX2JS8",
                          "url": "https://www.awesome-issuer-url.com",
                          "name": "Awesome Issuer Name",
                          "type": [
                            "Profile"
                          ],
                          "email": "issuer-contact@example.org",
                          "image": {
                            "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                            "type": "Image",
                            "caption": "Awesome Issuer Logo"
                          },
                          "description": "An awesome Issuer who Issues awesome credentials."
                        },
                        "@context": [
                          "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                          "https://www.w3.org/ns/credentials/status/v1"
                        ],
                        "validFrom": "2024-11-29T11:34:20Z",
                        "validUntil": "2030-11-29T11:34:20Z",
                        "awardedDate": "2024-11-29T21:07:11Z",
                        "description": "Awesome Credential Description",
                        "issuanceDate": "2024-11-29T21:07:11Z",
                        "expirationDate": "2030-11-29T11:34:20Z",
                        "credentialSubject": {
                          "type": [
                            "AchievementSubject"
                          ],
                          "achievement": {
                            "id": "https://example.org/achievements/degree",
                            "name": "Your name",
                            "type": [
                              "Achievement"
                            ],
                            "image": {
                              "id": "https://example.org/achievements/image.png",
                              "type": "Image"
                            },
                            "criteria": {
                              "type": "Criteria",
                              "narrative": "Your narrative"
                            },
                            "description": "Your description"
                          }
                        }
                      },
                      "rule": "string",
                      "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                      "meta_data": null,
                      "state": "offer-sent",
                      "complete": false,
                      "result": false,
                      "result_string": "Pending",
                      "credential_exchange_id": [
                        "865f5487-479a-4071-8255-12580b1b0db7"
                      ],
                      "error": "",
                      "proof_type": "Ed25519Signature2020",
                      "created_at": "2025-06-26T21:58:24.092Z",
                      "updated_at": "2025-06-26T21:58:24.098Z",
                      "credential_status": null
                    }
                  },
                  "pending-invitation": {
                    "summary": "Pending issuance to invitation with no active connections",
                    "value": {
                      "request_id": 1,
                      "connection_id": null,
                      "contact_id": "",
                      "invitation_id": 1,
                      "credential": {
                        "name": "New Awesome JSON-LD Credential",
                        "type": [
                          "OpenBadgeCredential"
                        ],
                        "issuer": {
                          "id": "did:indy:<namespace>:5uF3EGLPkBccqMhEfX2JS8",
                          "url": "https://www.awesome-issuer-url.com",
                          "name": "Awesome Issuer Name",
                          "type": [
                            "Profile"
                          ],
                          "email": "issuer-contact@example.org",
                          "image": {
                            "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                            "type": "Image",
                            "caption": "Awesome Issuer Logo"
                          },
                          "description": "An awesome Issuer who Issues awesome credentials."
                        },
                        "@context": [
                          "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                          "https://www.w3.org/ns/credentials/status/v1"
                        ],
                        "validFrom": "2024-11-29T11:34:20Z",
                        "validUntil": "2030-11-29T11:34:20Z",
                        "awardedDate": "2024-11-29T21:07:11Z",
                        "description": "Awesome Credential Description",
                        "issuanceDate": "2024-11-29T21:07:11Z",
                        "expirationDate": "2030-11-29T11:34:20Z",
                        "credentialSubject": {
                          "type": [
                            "AchievementSubject"
                          ],
                          "achievement": {
                            "id": "https://example.org/achievements/degree",
                            "name": "Your name",
                            "type": [
                              "Achievement"
                            ],
                            "image": {
                              "id": "https://example.org/achievements/image.png",
                              "type": "Image"
                            },
                            "criteria": {
                              "type": "Criteria",
                              "narrative": "Your narrative"
                            },
                            "description": "Your description"
                          }
                        }
                      },
                      "rule": "string",
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "meta_data": null,
                      "state": null,
                      "complete": false,
                      "result": false,
                      "result_string": "New",
                      "credential_exchange_id": [],
                      "error": "",
                      "proof_type": "Ed25519Signature2020",
                      "created_at": "2025-09-03T19:25:16.047Z",
                      "updated_at": "2025-09-03T19:25:16.047Z",
                      "credential_status": null
                    }
                  },
                  "declined": {
                    "summary": "Credential offer declined",
                    "value": {
                      "request_id": 1,
                      "connection_id": "1c50d6e1-5a43-48d8-837e-be3cbc815469",
                      "contact_id": "",
                      "invitation_id": 1,
                      "credential": {
                        "name": "New Awesome JSON-LD Credential",
                        "type": [
                          "OpenBadgeCredential"
                        ],
                        "issuer": {
                          "id": "did:indy:<namespace>:5uF3EGLPkBccqMhEfX2JS8",
                          "url": "https://www.awesome-issuer-url.com",
                          "name": "Awesome Issuer Name",
                          "type": [
                            "Profile"
                          ],
                          "email": "issuer-contact@example.org",
                          "image": {
                            "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                            "type": "Image",
                            "caption": "Awesome Issuer Logo"
                          },
                          "description": "An awesome Issuer who Issues awesome credentials."
                        },
                        "@context": [
                          "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                          "https://www.w3.org/ns/credentials/status/v1"
                        ],
                        "validFrom": "2024-11-29T11:34:20Z",
                        "validUntil": "2030-11-29T11:34:20Z",
                        "awardedDate": "2024-11-29T21:07:11Z",
                        "description": "Awesome Credential Description",
                        "issuanceDate": "2024-11-29T21:07:11Z",
                        "expirationDate": "2030-11-29T11:34:20Z",
                        "credentialSubject": {
                          "type": [
                            "AchievementSubject"
                          ],
                          "achievement": {
                            "id": "https://example.org/achievements/degree",
                            "name": "Your name",
                            "type": [
                              "Achievement"
                            ],
                            "image": {
                              "id": "https://example.org/achievements/image.png",
                              "type": "Image"
                            },
                            "criteria": {
                              "type": "Criteria",
                              "narrative": "Your narrative"
                            },
                            "description": "Your description"
                          }
                        },
                        "rule": "string",
                        "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                        "meta_data": null,
                        "state": "abandoned",
                        "complete": true,
                        "result": false,
                        "result_string": "Declined",
                        "credential_exchange_id": [
                          "b929f047-b480-4df1-adb9-66c66cec24a2"
                        ],
                        "error": "",
                        "proof_type": "Ed25519Signature2020",
                        "created_at": "2025-07-09T20:40:15.883Z",
                        "updated_at": "2025-07-09T20:40:33.631Z",
                        "credential_status": null
                      }
                    }
                  },
                  "issued": {
                    "summary": "Credential successfully issued",
                    "value": {
                      "request_id": 1,
                      "connection_id": "1c50d6e1-5a43-48d8-837e-be3cbc815469",
                      "contact_id": "",
                      "invitation_id": 1,
                      "credential": {
                        "name": "New Awesome JSON-LD Credential",
                        "type": [
                          "OpenBadgeCredential"
                        ],
                        "issuer": {
                          "id": "did:indy:<namespace>:5uF3EGLPkBccqMhEfX2JS8",
                          "url": "https://www.awesome-issuer-url.com",
                          "name": "Awesome Issuer Name",
                          "type": [
                            "Profile"
                          ],
                          "email": "issuer-contact@example.org",
                          "image": {
                            "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                            "type": "Image",
                            "caption": "Awesome Issuer Logo"
                          },
                          "description": "An awesome Issuer who Issues awesome credentials."
                        },
                        "@context": [
                          "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                          "https://www.w3.org/ns/credentials/status/v1"
                        ],
                        "validFrom": "2024-11-29T11:34:20Z",
                        "validUntil": "2030-11-29T11:34:20Z",
                        "awardedDate": "2024-11-29T21:07:11Z",
                        "description": "Awesome Credential Description",
                        "issuanceDate": "2024-11-29T21:07:11Z",
                        "expirationDate": "2030-11-29T11:34:20Z",
                        "credentialSubject": {
                          "type": [
                            "AchievementSubject"
                          ],
                          "achievement": {
                            "id": "https://example.org/achievements/degree",
                            "name": "Your name",
                            "type": [
                              "Achievement"
                            ],
                            "image": {
                              "id": "https://example.org/achievements/image.png",
                              "type": "Image"
                            },
                            "criteria": {
                              "type": "Criteria",
                              "narrative": "Your narrative"
                            },
                            "description": "Your description"
                          }
                        },
                        "rule": "string",
                        "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                        "meta_data": null,
                        "state": "done",
                        "complete": true,
                        "result": true,
                        "result_string": "Issued",
                        "credential_exchange_id": [
                          "0b336ee2-0936-454f-a5d0-83e2969d9d47"
                        ],
                        "error": "",
                        "proof_type": "Ed25519Signature2020",
                        "created_at": "2025-07-09T20:41:29.375Z",
                        "updated_at": "2025-07-09T20:41:47.267Z",
                        "credential_status": null
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "JSON-LD credential record not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "JSON-LD credential record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/credentials": {
      "post": {
        "summary": "Issue a new AnonCred credential",
        "description": "This endpoint allows you to add a new credential request.",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "timeout",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "The timeout for the credential issuance (seconds).",
            "example": 30
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "invitation_id": {
                    "type": "integer",
                    "description": "The ID of the invitation."
                  },
                  "contact_id": {
                    "type": "string",
                    "description": "The ID of the contact."
                  },
                  "schema_id": {
                    "type": "string",
                    "description": "The ID of the schema."
                  },
                  "attributes": {
                    "type": "array",
                    "description": "A list of objects representing the attributes for the credential.",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "The name of the attribute."
                        },
                        "value": {
                          "type": "string",
                          "description": "The value of the attribute."
                        }
                      }
                    }
                  },
                  "rule": {
                    "type": "string",
                    "description": "The rule for the credential issuance."
                  }
                }
              },
              "example": {
                "invitation_id": 1,
                "contact_id": "",
                "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                "attributes": [
                  {
                    "name": "local_part",
                    "value": "timmy"
                  },
                  {
                    "name": "domain",
                    "value": "example.com"
                  },
                  {
                    "name": "address",
                    "value": "timmy@example.com"
                  },
                  {
                    "name": "verified_at",
                    "value": "1670296277"
                  }
                ],
                "rule": "no rule"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "AnonCred credential issuance record was created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "record": {
                      "type": "object"
                    }
                  }
                },
                "examples": {
                  "pending-invitation": {
                    "summary": "Credential offer sent",
                    "value": {
                      "request_id": 1,
                      "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                      "attributes": [
                        {
                          "name": "local_part",
                          "value": "timmy"
                        },
                        {
                          "name": "domain",
                          "value": "example.com"
                        },
                        {
                          "name": "address",
                          "value": "timmy@example.com"
                        },
                        {
                          "name": "verified_at",
                          "value": "1670296277"
                        }
                      ],
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "offer-sent",
                      "complete": false,
                      "result": false,
                      "result_string": "Pending",
                      "credential_exchange_id": [
                        "4e49277d-aa3f-4647-9bff-91d9dca8b0c8"
                      ],
                      "error": "",
                      "created_at": "2025-07-08T21:14:59.117Z",
                      "updated_at": "2025-07-08T21:15:03.835Z"
                    }
                  },
                  "offer-sent": {
                    "summary": "Pending issuance to invitation with no active connections",
                    "value": {
                      "request_id": 1,
                      "connection_id": null,
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                      "attributes": [
                        {
                          "name": "local_part",
                          "value": "timmy"
                        },
                        {
                          "name": "domain",
                          "value": "example.com"
                        },
                        {
                          "name": "address",
                          "value": "timmy@example.com"
                        },
                        {
                          "name": "verified_at",
                          "value": "1670296277"
                        }
                      ],
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": null,
                      "complete": false,
                      "result": false,
                      "result_string": "New",
                      "credential_exchange_id": [],
                      "error": "",
                      "created_at": "2025-09-03T19:25:16.047Z",
                      "updated_at": "2025-09-03T19:25:16.047Z"
                    }
                  },
                  "abandoned": {
                    "summary": "Credential offer declined",
                    "value": {
                      "request_id": 3,
                      "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                      "attributes": [
                        {
                          "name": "local_part",
                          "value": "timmy"
                        },
                        {
                          "name": "domain",
                          "value": "example.com"
                        },
                        {
                          "name": "address",
                          "value": "timmy@example.com"
                        },
                        {
                          "name": "verified_at",
                          "value": "1670296277"
                        }
                      ],
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "abandoned",
                      "complete": true,
                      "result": false,
                      "result_string": "Declined",
                      "credential_exchange_id": [
                        "549b0d41-7886-49ac-825e-82e0d961a717"
                      ],
                      "error": "",
                      "created_at": "2025-07-08T21:23:46.505Z",
                      "updated_at": "2025-07-08T21:23:58.377Z"
                    }
                  },
                  "done": {
                    "summary": "Credential successfully issued",
                    "value": {
                      "request_id": 4,
                      "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                      "attributes": [
                        {
                          "name": "local_part",
                          "value": "timmy"
                        },
                        {
                          "name": "domain",
                          "value": "example.com"
                        },
                        {
                          "name": "address",
                          "value": "timmy@example.com"
                        },
                        {
                          "name": "verified_at",
                          "value": "1670296277"
                        }
                      ],
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "done",
                      "complete": true,
                      "result": true,
                      "result_string": "Issued",
                      "credential_exchange_id": [
                        "b96fd007-5eb5-4c46-8108-0456f12bc4f2"
                      ],
                      "error": "",
                      "created_at": "2025-07-08T21:24:28.474Z",
                      "updated_at": "2025-07-08T21:24:40.944Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "422": {
            "description": "Unprocessable Entity.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "Retrieve all credentials",
        "description": "This endpoint retrieves all credentials associated with the provided API.",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "sort-field",
            "schema": {
              "type": "string"
            },
            "description": "The field to sort by (default updated_at)."
          },
          {
            "in": "query",
            "name": "sort-direction",
            "schema": {
              "type": "string"
            },
            "description": "The direction to sort (ASC or DESC, default DESC)."
          },
          {
            "in": "query",
            "name": "page-size",
            "schema": {
              "type": "integer"
            },
            "description": "The number of credentials per page (default 20)."
          },
          {
            "in": "query",
            "name": "current-page",
            "schema": {
              "type": "integer"
            },
            "description": "The current page number (default 1)."
          },
          {
            "in": "query",
            "name": "item-count",
            "schema": {
              "type": "integer"
            },
            "description": "The total number of items."
          },
          {
            "in": "query",
            "name": "state-filter",
            "schema": {
              "type": "string"
            },
            "description": "If provided, returns only credentials with this state."
          },
          {
            "in": "query",
            "name": "contact-id",
            "schema": {
              "type": "string"
            },
            "description": "If provided, returns only credentials for this contact_id."
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of credentials",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "params": {
                      "type": "object",
                      "properties": {
                        "sort": {
                          "type": "array",
                          "items": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        },
                        "pageSize": {
                          "type": "integer"
                        },
                        "currentPage": {
                          "type": "integer"
                        },
                        "pageCount": {
                          "type": "integer"
                        },
                        "itemCount": {
                          "type": "integer"
                        },
                        "stateFilter": {
                          "type": "string",
                          "nullable": true
                        },
                        "contactIdFilter": {
                          "type": "string",
                          "nullable": true
                        }
                      }
                    },
                    "rows": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "count": {
                      "type": "integer"
                    }
                  }
                },
                "example": {
                  "params": {
                    "sort": [
                      [
                        "created_at",
                        "DESC"
                      ]
                    ],
                    "pageSize": 20,
                    "currentPage": 1,
                    "pageCount": 1,
                    "itemCount": 1,
                    "stateFilter": null,
                    "contactIdFilter": null
                  },
                  "rows": [
                    {
                      "credential_exchange_id": "02189932-52ac-4f9d-bf84-1fcfb7c67fa1",
                      "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                      "credential_id": null,
                      "revocation_id": null,
                      "connection_id": "0ecc0b3c-4d15-4660-b8da-15d0feeded59",
                      "state": "offer-sent",
                      "thread_id": "73d4b64f-f570-4970-9603-3381ed9cd440",
                      "parent_thread_id": null,
                      "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                      "credential_definition_id": "Efgh86CGr29yoQKXHQraHD:3:CL:151:default",
                      "revoc_reg_id": null,
                      "revoked": null,
                      "created_at": "2025-06-26T22:01:05.543Z",
                      "updated_at": "2025-06-26T22:01:05.543Z",
                      "attributes": null
                    }
                  ],
                  "count": 1
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "API key record not found"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/credentials/{credential_exchange_id}": {
      "get": {
        "summary": "Retrieve a credential by its credential definition ID",
        "description": "This endpoint retrieves a specific credential by its credential exchange ID.",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "credential_exchange_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The credential exchange ID.",
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "A credential object",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "credential": {
                      "type": "object"
                    }
                  }
                },
                "example": {
                  "credential_exchange_id": "02189932-52ac-4f9d-bf84-1fcfb7c67fa1",
                  "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                  "credential_id": null,
                  "revocation_id": null,
                  "connection_id": "0ecc0b3c-4d15-4660-b8da-15d0feeded59",
                  "state": "offer-sent",
                  "thread_id": "73d4b64f-f570-4970-9603-3381ed9cd440",
                  "parent_thread_id": null,
                  "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                  "credential_definition_id": "Efgh86CGr29yoQKXHQraHD:3:CL:151:default",
                  "revoc_reg_id": null,
                  "revoked": null,
                  "created_at": "2025-06-26T22:01:05.543Z",
                  "updated_at": "2025-06-26T22:01:05.543Z",
                  "attributes": null
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Credential record not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Credential record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/credentials/{credential_exchange_id}/pii": {
      "post": {
        "summary": "Remove PII from a credential",
        "description": "This endpoint manually removes PII from a credential record.",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "credential_exchange_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The credential exchange ID.",
            "example": "02189932-52ac-4f9d-bf84-1fcfb7c67fa1"
          }
        ],
        "responses": {
          "200": {
            "description": "PII removed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Credential PII removed"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Credential record not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Credential record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/credential-records/{request_id}": {
      "get": {
        "summary": "Retrieve an AnonCred credential record by ID",
        "description": "This endpoint retrieves an AnonCred credential record by its ID using the provided API key.",
        "tags": [
          "Credentials"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "request_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the credential record.",
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Credential record retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "record": {
                      "type": "object",
                      "description": "The retrieved AnonCred credential record."
                    }
                  }
                },
                "examples": {
                  "pending-invitation": {
                    "summary": "Credential offer sent",
                    "value": {
                      "record": {
                        "request_id": 1,
                        "connection_id": "0ecc0b3c-4d15-4660-b8da-15d0feeded59",
                        "contact_id": "8dba10d6-00d5-4f3a-ac8f-834211c9cbb9",
                        "invitation_id": 1,
                        "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                        "attributes": [
                          {
                            "name": "local_part",
                            "value": "timmy"
                          },
                          {
                            "name": "domain",
                            "value": "example.com"
                          },
                          {
                            "name": "address",
                            "value": "timmy@example.com"
                          },
                          {
                            "name": "verified_at",
                            "value": "1670296277"
                          }
                        ],
                        "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                        "rule": "no rule",
                        "meta_data": null,
                        "state": "offer-sent",
                        "complete": false,
                        "result": false,
                        "result_string": "Pending",
                        "credential_exchange_id": [
                          "02189932-52ac-4f9d-bf84-1fcfb7c67fa1"
                        ],
                        "error": "",
                        "created_at": "2025-06-26T22:01:02.677Z",
                        "updated_at": "2025-06-26T22:01:05.594Z"
                      }
                    }
                  },
                  "offer-sent": {
                    "summary": "Pending issuance to invitation with no active connections",
                    "value": {
                      "record": {
                        "request_id": 1,
                        "connection_id": null,
                        "contact_id": "",
                        "invitation_id": 1,
                        "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                        "attributes": [
                          {
                            "name": "local_part",
                            "value": "timmy"
                          },
                          {
                            "name": "domain",
                            "value": "example.com"
                          },
                          {
                            "name": "address",
                            "value": "timmy@example.com"
                          },
                          {
                            "name": "verified_at",
                            "value": "1670296277"
                          }
                        ],
                        "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                        "rule": "no rule",
                        "meta_data": null,
                        "state": null,
                        "complete": false,
                        "result": false,
                        "result_string": "New",
                        "credential_exchange_id": [],
                        "error": "",
                        "created_at": "2025-09-03T19:25:16.047Z",
                        "updated_at": "2025-09-03T19:25:16.047Z"
                      }
                    }
                  },
                  "abandoned": {
                    "summary": "Credential offer declined",
                    "value": {
                      "record": {
                        "request_id": 3,
                        "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                        "contact_id": "",
                        "invitation_id": 1,
                        "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                        "attributes": [
                          {
                            "name": "local_part",
                            "value": "timmy"
                          },
                          {
                            "name": "domain",
                            "value": "example.com"
                          },
                          {
                            "name": "address",
                            "value": "timmy@example.com"
                          },
                          {
                            "name": "verified_at",
                            "value": "1670296277"
                          }
                        ],
                        "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                        "rule": "no rule",
                        "meta_data": null,
                        "state": "abandoned",
                        "complete": true,
                        "result": false,
                        "result_string": "Declined",
                        "credential_exchange_id": [
                          "549b0d41-7886-49ac-825e-82e0d961a717"
                        ],
                        "error": "",
                        "created_at": "2025-07-08T21:23:46.505Z",
                        "updated_at": "2025-07-08T21:23:58.377Z"
                      }
                    }
                  },
                  "done": {
                    "summary": "Credential successfully issued",
                    "value": {
                      "record": {
                        "request_id": 4,
                        "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                        "contact_id": "",
                        "invitation_id": 1,
                        "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                        "attributes": [
                          {
                            "name": "local_part",
                            "value": "timmy"
                          },
                          {
                            "name": "domain",
                            "value": "example.com"
                          },
                          {
                            "name": "address",
                            "value": "timmy@example.com"
                          },
                          {
                            "name": "verified_at",
                            "value": "1670296277"
                          }
                        ],
                        "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                        "rule": "no rule",
                        "meta_data": null,
                        "state": "done",
                        "complete": true,
                        "result": true,
                        "result_string": "Issued",
                        "credential_exchange_id": [
                          "b96fd007-5eb5-4c46-8108-0456f12bc4f2"
                        ],
                        "error": "",
                        "created_at": "2025-07-08T21:24:28.474Z",
                        "updated_at": "2025-07-08T21:24:40.944Z"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "AnonCred credential record not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "AnonCred credential record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/credentials/anoncreds/revoke": {
      "post": {
        "summary": "Revoke an issued AnonCred credential",
        "description": "This endpoint allows you to revoke a credential by providing the connection and credential exchange IDs.",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "connection_id": {
                    "type": "string",
                    "description": "The connection ID associated with the credential."
                  },
                  "credential_exchange_id": {
                    "type": "string",
                    "description": "The credential exchange ID of the credential to revoke."
                  }
                }
              },
              "example": {
                "connection_id": "example-connection_id",
                "credential_exchange_id": "example-credential_exchange_id"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Credential revocation request accepted or already revoked",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "message": "Revocation request processed successfully."
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "error": "Missing credential_exchange_id"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "error": "Credential not found or already revoked"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "error": "Failed to revoke credential"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/create-did": {
      "post": {
        "summary": "Create a new DID",
        "description": "This endpoint creates a new Decentralized Identifier (DID) using the provided API key.",
        "tags": [
          "DIDs"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "DID created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "did": {
                      "type": "object",
                      "properties": {
                        "did": {
                          "type": "string",
                          "description": "The created DID.",
                          "example": "95LAyQitNh5kVaayCFC9S2"
                        },
                        "verkey": {
                          "type": "string",
                          "description": "The verification key for the DID.",
                          "example": "5QFrR2F9H84nF1T6bBiiahWCiDWrxTnHNtF78u7HPCY4"
                        },
                        "posture": {
                          "type": "string",
                          "description": "The posture of the DID.",
                          "example": "wallet_only"
                        },
                        "key_type": {
                          "type": "string",
                          "description": "The type of key used for the DID.",
                          "example": "ed25519"
                        },
                        "method": {
                          "type": "string",
                          "description": "DID method.",
                          "example": "sov"
                        },
                        "metadata": {
                          "type": "object",
                          "description": "Additional metadata for the DID.",
                          "example": {}
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/set-public-did": {
      "post": {
        "summary": "Set a public DID",
        "description": "This endpoint sets a public Decentralized Identifier (DID) using the provided API key and DID.",
        "tags": [
          "DIDs"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "DID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The DID to be set as public."
          }
        ],
        "responses": {
          "200": {
            "description": "DID set as public successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "did": {
                      "type": "object",
                      "description": "The public DID."
                    }
                  },
                  "example": {
                    "did": "Efgh86CGr29yoQKXHQraHD",
                    "verkey": "8T3KFeLkGk34nDQC1bLwYo2JLXDE6x8qz4z4TrVkaHoU",
                    "posture": "posted",
                    "key_type": "ed25519",
                    "method": "sov",
                    "metadata": {
                      "posted": true,
                      "endpoint": "https://example/agent"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/did/indy": {
      "post": {
        "summary": "Create a new did:indy DID",
        "description": "This endpoint creates a new Decentralized Identifier (DID) using the provided API key.",
        "tags": [
          "DIDs"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "DID created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "did": {
                      "type": "string",
                      "description": "The created DID."
                    }
                  }
                },
                "example": {
                  "did": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "412": {
            "description": "The TAA must be signed before calling this endpoint",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "The TAA must be signed before calling this endpoint"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/emails/verify": {
      "post": {
        "summary": "Perform bulk credential issuance based on the valid email addresses",
        "description": "This endpoint performs bulk credential issuance based on the valid email addresses.",
        "tags": [
          "Email"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "emails": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "email": {
                          "type": "string",
                          "description": "The email address to be verified as one of the bulk credential recipient.",
                          "example": "no_reply@indiciotech.io"
                        },
                        "schema_id": {
                          "type": "string",
                          "description": "The schema ID of the credential to be issued.",
                          "example": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0"
                        },
                        "time_to_accept": {
                          "type": "number",
                          "description": "The number of days for the recipient to accept the credential.",
                          "example": 518400000
                        },
                        "attributes": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "value": {
                                "type": "string"
                              }
                            }
                          },
                          "description": "The attributes of the credential.",
                          "example": [
                            {
                              "name": "address",
                              "value": "your address here"
                            },
                            {
                              "name": "domain",
                              "value": "your domain here"
                            },
                            {
                              "name": "verified_at",
                              "value": "your timestamp verified_at here"
                            },
                            {
                              "name": "local_part",
                              "value": "your local_part here"
                            }
                          ]
                        }
                      }
                    }
                  }
                }
              },
              "example": {
                "emails": [
                  {
                    "email": "no_reply@indiciotech.io",
                    "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                    "time_to_accept": 518400000,
                    "attributes": [
                      {
                        "name": "address",
                        "value": "your address here"
                      },
                      {
                        "name": "domain",
                        "value": "your domain here"
                      },
                      {
                        "name": "verified_at",
                        "value": "your timestamp verified_at here"
                      },
                      {
                        "name": "local_part",
                        "value": "your local_part here"
                      }
                    ]
                  },
                  {
                    "email": "no_reply@indiciotech.io",
                    "schema_id": "KT4LtL7HEMePqQSyKVof7g:2:Bad_schema:0.0",
                    "time_to_accept": 518400000,
                    "attributes": [
                      {
                        "name": "address",
                        "value": "your address here"
                      },
                      {
                        "name": "domain",
                        "value": "your domain here"
                      },
                      {
                        "name": "verified_at",
                        "value": "your timestamp verified_at here"
                      },
                      {
                        "name": "local_part",
                        "value": "your local_part here"
                      }
                    ]
                  },
                  {
                    "email": "email#with-errors.com",
                    "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                    "time_to_accept": 518400000,
                    "attributes": [
                      {
                        "name": "address",
                        "value": "your address here"
                      },
                      {
                        "name": "domain",
                        "value": "your domain here"
                      },
                      {
                        "name": "verified_at",
                        "value": "your timestamp verified_at here"
                      },
                      {
                        "name": "local_part",
                        "value": "your local_part here"
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Email verification successful",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "emailsSuccess": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "emailsFailure": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "invalidEmails": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/governance/files/{filename}": {
      "get": {
        "summary": "Get governance file by filename",
        "description": "This endpoint retrieves a governance file by its filename.",
        "tags": [
          "Governance"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "filename",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The filename of the governance file to retrieve."
          }
        ],
        "responses": {
          "200": {
            "description": "Governance file retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {}
              }
            }
          },
          "404": {
            "description": "Governance file not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Governance file not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/invitations": {
      "post": {
        "summary": "Create a new invitation",
        "description": "This endpoint creates a new invitation of type OOB.",
        "tags": [
          "Invitations"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "invitation_type"
                ],
                "properties": {
                  "invitation_type": {
                    "type": "string",
                    "description": "The type of the invitation (OOB).",
                    "default": "OOB"
                  },
                  "contact_id": {
                    "type": "string",
                    "description": "The ID of the contact.",
                    "default": "undefined"
                  },
                  "handshake_protocol": {
                    "type": "string",
                    "description": "The handshake protocol for OOB invitations.",
                    "default": "undefined"
                  },
                  "alias": {
                    "type": "string",
                    "description": "The alias for the invitation.",
                    "default": "undefined"
                  },
                  "invitation_mode": {
                    "type": "string",
                    "description": "The mode of the invitation.",
                    "default": "undefined"
                  },
                  "accept": {
                    "type": "string",
                    "description": "The accept criteria for the invitation.",
                    "default": true
                  },
                  "public": {
                    "type": "boolean",
                    "description": "Whether the invitation is public.",
                    "default": false
                  },
                  "invitation_role": {
                    "type": "string",
                    "description": "The role of the invitation.",
                    "default": "undefined"
                  },
                  "invitation_label": {
                    "type": "string",
                    "description": "The label of the invitation.",
                    "default": "undefined"
                  },
                  "invitation_status": {
                    "type": "string",
                    "description": "The status of the invitation.",
                    "default": "undefined"
                  },
                  "invitation_description": {
                    "type": "string",
                    "description": "The description of the invitation.",
                    "default": "undefined"
                  },
                  "purpose": {
                    "type": "string",
                    "description": "The purpose of the invitation (optional unique identifier - if provided, must be unique per wallet).",
                    "default": "undefined"
                  },
                  "invitation_active_starting_at": {
                    "type": "string",
                    "format": "date-time",
                    "description": "The start time of the invitation's active period.",
                    "default": "undefined"
                  },
                  "invitation_active_ending_at": {
                    "type": "string",
                    "format": "date-time",
                    "description": "The end time of the invitation's active period.",
                    "default": "undefined"
                  },
                  "uses_allowed": {
                    "type": "number",
                    "description": "The number of uses allowed for the invitation.",
                    "default": "undefined"
                  }
                }
              },
              "examples": {
                "SingleUsePrivateOutOfBandInvitation": {
                  "summary": "Single use private out of band (OOB) invitation",
                  "value": {
                    "contact_id": "",
                    "alias": "API Invitation",
                    "invitation_type": "OOB",
                    "handshake_protocol": "https://didcomm.org/didexchange/1.1",
                    "invitation_mode": "once",
                    "accept": "auto",
                    "public": false,
                    "invitation_role": "Holder",
                    "invitation_label": "OOB",
                    "invitation_status": "active",
                    "invitation_description": "Invitation created through API",
                    "purpose": "",
                    "invitation_active_starting_at": null,
                    "invitation_active_ending_at": null,
                    "uses_allowed": 1
                  }
                },
                "MultiUsePublicOutOfBandInvitation": {
                  "summary": "Multi-use public out of band (OOB) invitation",
                  "value": {
                    "contact_id": "",
                    "alias": "API Invitation",
                    "invitation_type": "OOB",
                    "handshake_protocol": "https://didcomm.org/didexchange/1.1",
                    "invitation_mode": "multi",
                    "accept": "auto",
                    "public": true,
                    "invitation_role": "Holder",
                    "invitation_label": "OOB",
                    "invitation_status": "active",
                    "invitation_description": "Invitation created through API",
                    "purpose": "",
                    "invitation_active_starting_at": null,
                    "invitation_active_ending_at": null,
                    "uses_allowed": 50
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Invitation created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "invitation_url": {
                      "type": "string",
                      "example": "https://fresh-fox-61.tun2.indiciotech.io?oob=eyJAdHlwZSI6ICJodHRwczovL2RpZGNvbW0ub3JnL291dC1vZi1iYW5kLzEuMS9pbnZpdGF0aW9uIiwgIkBpZCI6ICIzMzAyMDMyZC05MTA4LTQ4YzMtYmM3ZC1mZjZiNzU1ZDcyMmQiLCAibGFiZWwiOiAiT09CIiwgImhhbmRzaGFrZV9wcm90b2NvbHMiOiBbImh0dHBzOi8vZGlkY29tbS5vcmcvZGlkZXhjaGFuZ2UvMS4xIl0sICJzZXJ2aWNlcyI6IFsiZGlkOnNvdjo5NUxBeVFpdE5oNWtWYWF5Q0ZDOVMyIl19"
                    },
                    "invitation_id": {
                      "type": "integer",
                      "example": 1
                    },
                    "contact_id": {
                      "type": "string",
                      "example": ""
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "examples": {
                        "invalid_type": {
                          "value": "Purpose must be a string",
                          "summary": "Purpose field is not a string"
                        },
                        "duplicate_purpose": {
                          "value": "Invitation record with purpose verification-demo-2025 already exists",
                          "summary": "Purpose already exists"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "Get all invitations",
        "description": "This endpoint retrieves all invitations associated with the provided API key.",
        "tags": [
          "Invitations"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "sort-field",
            "schema": {
              "type": "string"
            },
            "description": "The field to sort by (default updated_at)."
          },
          {
            "in": "query",
            "name": "sort-direction",
            "schema": {
              "type": "string"
            },
            "description": "The direction to sort (ASC or DESC, default DESC)."
          },
          {
            "in": "query",
            "name": "page-size",
            "schema": {
              "type": "integer"
            },
            "description": "The number of invitations per page (default 20)."
          },
          {
            "in": "query",
            "name": "current-page",
            "schema": {
              "type": "integer"
            },
            "description": "The current page number (default 1)."
          },
          {
            "in": "query",
            "name": "item-count",
            "schema": {
              "type": "integer"
            },
            "description": "The total number of items."
          },
          {
            "in": "query",
            "name": "state-filter",
            "schema": {
              "type": "string"
            },
            "description": "If provided, returns only invitations with this state."
          },
          {
            "in": "query",
            "name": "contact-id",
            "schema": {
              "type": "string"
            },
            "description": "If provided, returns only invitations for this contact_id."
          }
        ],
        "responses": {
          "200": {
            "description": "A list of invitations",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "invitations": {
                      "type": "object",
                      "properties": {
                        "params": {
                          "type": "object"
                        },
                        "count": {
                          "type": "integer"
                        },
                        "rows": {
                          "type": "array",
                          "items": {
                            "type": "object"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "params": {
                    "sort": [
                      [
                        [
                          "updated_at",
                          "DESC"
                        ]
                      ]
                    ],
                    "pageSize": 2,
                    "currentPage": 1,
                    "pageCount": 1,
                    "itemCount": 1,
                    "stateFilter": null,
                    "contactIdFilter": null
                  },
                  "rows": [
                    {
                      "invitation_id": 1,
                      "oob_id": "ef62b35f-ebd1-4760-89cd-1b33e6506f22",
                      "contact_id": null,
                      "connection_id": "853dbc66-4daa-45a8-8a6b-3cb81639c108",
                      "my_did": "",
                      "alias": "Documentation-Example",
                      "invitation_key": "did:key:z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3#z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3",
                      "invitation_mode": "multi",
                      "invitation_url": "https://example/agent?oob=eyJAdHlwZSI6ICJodHRwczovL2RpZGNvbW0ub3JnL291dC1vZi1iYW5kLzEuMS9pbnZpdGF0aW9uIiwgIkBpZCI6ICI5MGRhNGU1YS0yNzQxLTRlZmUtYWY2ZC0yMTVkMTZhODQyOGEiLCAibGFiZWwiOiAiUHJvdmVuIiwgImhhbmRzaGFrZV9wcm90b2NvbHMiOiBbImh0dHBzOi8vZGlkY29tbS5vcmcvZGlkZXhjaGFuZ2UvMS4xIl0sICJzZXJ2aWNlcyI6IFt7ImlkIjogIiNpbmxpbmUiLCAidHlwZSI6ICJkaWQtY29tbXVuaWNhdGlvbiIsICJyZWNpcGllbnRLZXlzIjogWyJkaWQ6a2V5Ono2TWtwYXpVNEVCTVpKU1VDN3VkOHFLMVRhNkwxTGtqMXhUQ1E3OVJMcVZUTHdRMyN6Nk1rcGF6VTRFQk1aSlNVQzd1ZDhxSzFUYTZMMUxrajF4VENRNzlSTHFWVEx3UTMiXSwgInNlcnZpY2VFbmRwb2ludCI6ICJodHRwczovL2J1Y2tldHM0bGlmZS5zaGFyZS56cm9rLmlvL2FnZW50In1dfQ",
                      "invitation_msg_id": "90da4e5a-2741-4efe-af6d-215d16a8428a",
                      "invitation": {
                        "@type": "https://didcomm.org/out-of-band/1.1/invitation",
                        "@id": "90da4e5a-2741-4efe-af6d-215d16a8428a",
                        "label": "Proven",
                        "handshake_protocols": [
                          "https://didcomm.org/didexchange/1.1"
                        ],
                        "services": [
                          {
                            "id": "#inline",
                            "type": "did-communication",
                            "recipientKeys": [
                              "did:key:z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3#z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3"
                            ],
                            "serviceEndpoint": "https://example/agent"
                          }
                        ]
                      },
                      "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                      "accept": "auto",
                      "their_role": "sender",
                      "their_label": "Proven",
                      "service_endpoint": "https://example/agent",
                      "domain": "example",
                      "path": "agent",
                      "workflow_status": "active",
                      "state": "done",
                      "description": "",
                      "active_starting_at": "2025-06-26T21:49:44.196Z",
                      "active_ending_at": null,
                      "uses_allowed": null,
                      "uses_total": 2,
                      "created_at": "2025-06-26T21:49:44.252Z",
                      "updated_at": "2025-06-26T22:29:00.649Z"
                    }
                  ],
                  "count": 1
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/invitations/accept": {
      "post": {
        "summary": "Accept an invitation",
        "description": "This endpoint accepts an invitation of type OOB.",
        "tags": [
          "Invitations"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "invitation_url": {
                    "type": "string",
                    "description": "The URL of the invitation to be accepted.",
                    "default": "undefined",
                    "example": "https://example.com/invitation?oob=abc123"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Invitation accepted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "invitation_record": {
                      "type": "object"
                    }
                  }
                },
                "example": {
                  "success": true,
                  "invitation_record": {
                    "state": "deleted",
                    "created_at": "2025-06-26T22:28:53.800275Z",
                    "updated_at": "2025-06-26T22:28:53.800275Z",
                    "trace": false,
                    "oob_id": "d8311180-d94f-4480-8f28-dd9dd9257c0c",
                    "invi_msg_id": "90da4e5a-2741-4efe-af6d-215d16a8428a",
                    "invitation": {
                      "@type": "https://didcomm.org/out-of-band/1.1/invitation",
                      "@id": "90da4e5a-2741-4efe-af6d-215d16a8428a",
                      "label": "Proven",
                      "handshake_protocols": [
                        "https://didcomm.org/didexchange/1.1"
                      ],
                      "services": [
                        {
                          "id": "#inline",
                          "type": "did-communication",
                          "recipientKeys": [
                            "did:key:z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3#z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3"
                          ],
                          "serviceEndpoint": "https://example/agent"
                        }
                      ]
                    },
                    "connection_id": "29821f73-9db4-45d5-aee9-bd5c8bc2213a",
                    "role": "receiver",
                    "multi_use": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/invitations/{invitation_id}": {
      "get": {
        "summary": "Get invitation by ID",
        "description": "This endpoint retrieves a specific invitation by its ID.",
        "tags": [
          "Invitations"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "invitation_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the invitation.",
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Invitation retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "invitation": {
                      "type": "object",
                      "description": "The retrieved invitation credential record."
                    }
                  },
                  "example": {
                    "invitation_id": 1,
                    "oob_id": "ef62b35f-ebd1-4760-89cd-1b33e6506f22",
                    "contact_id": null,
                    "connection_id": "853dbc66-4daa-45a8-8a6b-3cb81639c108",
                    "my_did": "",
                    "alias": "Documentation-Example",
                    "invitation_key": "did:key:z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3#z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3",
                    "invitation_mode": "multi",
                    "invitation_url": "https://example/agent?oob=eyJAdHlwZSI6ICJodHRwczovL2RpZGNvbW0ub3JnL291dC1vZi1iYW5kLzEuMS9pbnZpdGF0aW9uIiwgIkBpZCI6ICI5MGRhNGU1YS0yNzQxLTRlZmUtYWY2ZC0yMTVkMTZhODQyOGEiLCAibGFiZWwiOiAiUHJvdmVuIiwgImhhbmRzaGFrZV9wcm90b2NvbHMiOiBbImh0dHBzOi8vZGlkY29tbS5vcmcvZGlkZXhjaGFuZ2UvMS4xIl0sICJzZXJ2aWNlcyI6IFt7ImlkIjogIiNpbmxpbmUiLCAidHlwZSI6ICJkaWQtY29tbXVuaWNhdGlvbiIsICJyZWNpcGllbnRLZXlzIjogWyJkaWQ6a2V5Ono2TWtwYXpVNEVCTVpKU1VDN3VkOHFLMVRhNkwxTGtqMXhUQ1E3OVJMcVZUTHdRMyN6Nk1rcGF6VTRFQk1aSlNVQzd1ZDhxSzFUYTZMMUxrajF4VENRNzlSTHFWVEx3UTMiXSwgInNlcnZpY2VFbmRwb2ludCI6ICJodHRwczovL2J1Y2tldHM0bGlmZS5zaGFyZS56cm9rLmlvL2FnZW50In1dfQ",
                    "invitation_msg_id": "90da4e5a-2741-4efe-af6d-215d16a8428a",
                    "invitation": {
                      "@type": "https://didcomm.org/out-of-band/1.1/invitation",
                      "@id": "90da4e5a-2741-4efe-af6d-215d16a8428a",
                      "label": "Proven",
                      "handshake_protocols": [
                        "https://didcomm.org/didexchange/1.1"
                      ],
                      "services": [
                        {
                          "id": "#inline",
                          "type": "did-communication",
                          "recipientKeys": [
                            "did:key:z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3#z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3"
                          ],
                          "serviceEndpoint": "https://example/agent"
                        }
                      ]
                    },
                    "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                    "accept": "auto",
                    "their_role": "sender",
                    "their_label": "Proven",
                    "service_endpoint": "https://example/agent",
                    "domain": "example",
                    "path": "agent",
                    "workflow_status": "active",
                    "state": "done",
                    "description": "",
                    "active_starting_at": "2025-06-26T21:49:44.196Z",
                    "active_ending_at": null,
                    "uses_allowed": null,
                    "uses_total": 2,
                    "created_at": "2025-06-26T21:49:44.252Z",
                    "updated_at": "2025-06-26T22:29:00.649Z"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Invitation not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "warning": {
                      "type": "string",
                      "example": "Invitation record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update an invitation",
        "description": "This endpoint updates an existing invitation.",
        "tags": [
          "Invitations"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "invitation_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the invitation to update."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "workflow_status": {
                    "type": "string",
                    "description": "The workflow status of the invitation.",
                    "example": "active"
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the invitation.",
                    "example": "This is an updated invitation."
                  },
                  "purpose": {
                    "type": "string",
                    "description": "The purpose of the invitation (unique identifier).",
                    "example": "verification-demo-2025"
                  },
                  "active_starting_at": {
                    "type": "string",
                    "format": "date-time",
                    "description": "The start time of the invitation.",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "active_ending_at": {
                    "type": "string",
                    "format": "date-time",
                    "description": "The end time of the invitation.",
                    "example": "2030-12-31T23:59:59Z"
                  },
                  "uses_allowed": {
                    "type": "integer",
                    "description": "The number of uses allowed for the invitation.",
                    "example": 1
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Invitation updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "updatedInvitation": {
                      "type": "object",
                      "description": "The updated invitation record."
                    }
                  },
                  "example": {
                    "invitation_id": 1,
                    "oob_id": "ef62b35f-ebd1-4760-89cd-1b33e6506f22",
                    "contact_id": null,
                    "connection_id": "853dbc66-4daa-45a8-8a6b-3cb81639c108",
                    "my_did": "",
                    "alias": "Documentation-Example",
                    "invitation_key": "did:key:z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3#z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3",
                    "invitation_mode": "multi",
                    "invitation_url": "https://example/agent?oob=eyJAdHlwZSI6ICJodHRwczovL2RpZGNvbW0ub3JnL291dC1vZi1iYW5kLzEuMS9pbnZpdGF0aW9uIiwgIkBpZCI6ICI5MGRhNGU1YS0yNzQxLTRlZmUtYWY2ZC0yMTVkMTZhODQyOGEiLCAibGFiZWwiOiAiUHJvdmVuIiwgImhhbmRzaGFrZV9wcm90b2NvbHMiOiBbImh0dHBzOi8vZGlkY29tbS5vcmcvZGlkZXhjaGFuZ2UvMS4xIl0sICJzZXJ2aWNlcyI6IFt7ImlkIjogIiNpbmxpbmUiLCAidHlwZSI6ICJkaWQtY29tbXVuaWNhdGlvbiIsICJyZWNpcGllbnRLZXlzIjogWyJkaWQ6a2V5Ono2TWtwYXpVNEVCTVpKU1VDN3VkOHFLMVRhNkwxTGtqMXhUQ1E3OVJMcVZUTHdRMyN6Nk1rcGF6VTRFQk1aSlNVQzd1ZDhxSzFUYTZMMUxrajF4VENRNzlSTHFWVEx3UTMiXSwgInNlcnZpY2VFbmRwb2ludCI6ICJodHRwczovL2J1Y2tldHM0bGlmZS5zaGFyZS56cm9rLmlvL2FnZW50In1dfQ",
                    "invitation_msg_id": "90da4e5a-2741-4efe-af6d-215d16a8428a",
                    "invitation": {
                      "@type": "https://didcomm.org/out-of-band/1.1/invitation",
                      "@id": "90da4e5a-2741-4efe-af6d-215d16a8428a",
                      "label": "Proven",
                      "handshake_protocols": [
                        "https://didcomm.org/didexchange/1.1"
                      ],
                      "services": [
                        {
                          "id": "#inline",
                          "type": "did-communication",
                          "recipientKeys": [
                            "did:key:z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3#z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3"
                          ],
                          "serviceEndpoint": "https://example/agent"
                        }
                      ]
                    },
                    "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                    "accept": "auto",
                    "their_role": "sender",
                    "their_label": "Proven",
                    "service_endpoint": "https://example/agent",
                    "domain": "example",
                    "path": "agent",
                    "workflow_status": "active",
                    "state": "done",
                    "description": "This is an updated invitation.",
                    "active_starting_at": "2023-01-01T00:00:00.000Z",
                    "active_ending_at": "2023-12-31T23:59:59.000Z",
                    "uses_allowed": 500,
                    "uses_total": 2,
                    "created_at": "2025-06-26T21:49:44.252Z",
                    "updated_at": "2025-06-26T22:42:13.411Z"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Invalid parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Invitation record not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Invitation record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete an invitation",
        "description": "This endpoint deletes an existing invitation.",
        "tags": [
          "Invitations"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "invitation_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the invitation to delete."
          }
        ],
        "responses": {
          "200": {
            "description": "Invitation deleted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "string",
                      "example": "Invitation was deleted successfully!"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Invalid parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Invitation record not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Invitation record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/invitations/purpose/{purpose}": {
      "get": {
        "summary": "Get invitation by purpose",
        "description": "Retrieves a specific invitation by its purpose identifier.",
        "tags": [
          "Invitations"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "purpose",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The purpose identifier of the invitation.",
            "example": "demo-1"
          }
        ],
        "responses": {
          "200": {
            "description": "Invitation retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "invitation": {
                      "type": "object",
                      "description": "The retrieved invitation credential record."
                    }
                  },
                  "example": {
                    "invitation_id": 1,
                    "oob_id": "ef62b35f-ebd1-4760-89cd-1b33e6506f22",
                    "contact_id": null,
                    "connection_id": "853dbc66-4daa-45a8-8a6b-3cb81639c108",
                    "my_did": "",
                    "alias": "Documentation-Example",
                    "invitation_key": "did:key:z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3#z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3",
                    "invitation_mode": "multi",
                    "invitation_url": "https://example/agent?oob=eyJAdHlwZSI6ICJodHRwczovL2RpZGNvbW0ub3JnL291dC1vZi1iYW5kLzEuMS9pbnZpdGF0aW9uIiwgIkBpZCI6ICI5MGRhNGU1YS0yNzQxLTRlZmUtYWY2ZC0yMTVkMTZhODQyOGEiLCAibGFiZWwiOiAiUHJvdmVuIiwgImhhbmRzaGFrZV9wcm90b2NvbHMiOiBbImh0dHBzOi8vZGlkY29tbS5vcmcvZGlkZXhjaGFuZ2UvMS4xIl0sICJzZXJ2aWNlcyI6IFt7ImlkIjogIiNpbmxpbmUiLCAidHlwZSI6ICJkaWQtY29tbXVuaWNhdGlvbiIsICJyZWNpcGllbnRLZXlzIjogWyJkaWQ6a2V5Ono2TWtwYXpVNEVCTVpKU1VDN3VkOHFLMVRhNkwxTGtqMXhUQ1E3OVJMcVZUTHdRMyN6Nk1rcGF6VTRFQk1aSlNVQzd1ZDhxSzFUYTZMMUxrajF4VENRNzlSTHFWVEx3UTMiXSwgInNlcnZpY2VFbmRwb2ludCI6ICJodHRwczovL2J1Y2tldHM0bGlmZS5zaGFyZS56cm9rLmlvL2FnZW50In1dfQ",
                    "invitation_msg_id": "90da4e5a-2741-4efe-af6d-215d16a8428a",
                    "invitation": {
                      "@type": "https://didcomm.org/out-of-band/1.1/invitation",
                      "@id": "90da4e5a-2741-4efe-af6d-215d16a8428a",
                      "label": "Proven",
                      "handshake_protocols": [
                        "https://didcomm.org/didexchange/1.1"
                      ],
                      "services": [
                        {
                          "id": "#inline",
                          "type": "did-communication",
                          "recipientKeys": [
                            "did:key:z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3#z6MkpazU4EBMZJSUC7ud8qK1Ta6L1Lkj1xTCQ79RLqVTLwQ3"
                          ],
                          "serviceEndpoint": "https://example/agent"
                        }
                      ]
                    },
                    "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                    "accept": "auto",
                    "their_role": "sender",
                    "their_label": "Proven",
                    "service_endpoint": "https://example/agent",
                    "domain": "example",
                    "path": "agent",
                    "workflow_status": "active",
                    "state": "done",
                    "description": "",
                    "purpose": "demo-1",
                    "active_starting_at": "2025-06-26T21:49:44.196Z",
                    "active_ending_at": null,
                    "uses_allowed": null,
                    "uses_total": 2,
                    "created_at": "2025-06-26T21:49:44.252Z",
                    "updated_at": "2025-06-26T22:29:00.649Z"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Invalid parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Invalid purpose parameter!"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Invitation not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Invitation record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/oid4vci/credentials-supported": {
      "post": {
        "summary": "Create a credential supported record.",
        "description": "This endpoint creates a credential supported record.",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "format": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "cryptographic_binding_methods_supported": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "cryptographic_suites_supported": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "display": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  },
                  "format_data": {
                    "type": "object"
                  },
                  "vc_additional_data": {
                    "type": "object"
                  }
                },
                "example": {
                  "format": "vc+sd-jwt",
                  "id": "IDCard",
                  "format_data": {
                    "cryptographic_binding_methods_supported": [
                      "jwk"
                    ],
                    "display": [
                      {
                        "name": "ID Card",
                        "locale": "en-US",
                        "background_color": "#12107c",
                        "text_color": "#FFFFFF"
                      }
                    ],
                    "vct": "ExampleIDCard",
                    "claims": {
                      "given_name": {
                        "mandatory": true,
                        "value_type": "string"
                      },
                      "family_name": {
                        "mandatory": true,
                        "value_type": "string"
                      },
                      "something_nested": {
                        "key1": {
                          "key2": {
                            "key3": {
                              "mandatory": true,
                              "value_type": "string"
                            }
                          }
                        }
                      },
                      "age_equal_or_over": {
                        "12": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "14": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "16": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "18": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "21": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "65": {
                          "mandatory": true,
                          "value_type": "boolean"
                        }
                      }
                    }
                  },
                  "vc_additional_data": {
                    "sd_list": [
                      "/given_name",
                      "/family_name",
                      "/age_equal_or_over/12",
                      "/age_equal_or_over/14",
                      "/age_equal_or_over/16",
                      "/age_equal_or_over/18",
                      "/age_equal_or_over/21",
                      "/age_equal_or_over/65"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string"
                    },
                    "updated_at": {
                      "type": "string"
                    },
                    "supported_cred_id": {
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    },
                    "identifier": {
                      "type": null
                    },
                    "format_data": {
                      "type": "object"
                    },
                    "vc_additional_data": {
                      "type": "object"
                    },
                    "cryptographic_binding_methods_supported": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "cryptographic_suites_supported": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "display": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "example": {
                  "created_at": "2025-06-23T20:56:23.546Z",
                  "updated_at": "2025-06-23T20:56:23.546Z",
                  "supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
                  "format": "vc+sd-jwt",
                  "identifier": "IDCard",
                  "format_data": {
                    "vct": "ExampleIDCard",
                    "claims": {
                      "given_name": {
                        "mandatory": true,
                        "value_type": "string"
                      },
                      "family_name": {
                        "mandatory": true,
                        "value_type": "string"
                      },
                      "something_nested": {
                        "key1": {
                          "key2": {
                            "key3": {
                              "mandatory": true,
                              "value_type": "string"
                            }
                          }
                        }
                      },
                      "age_equal_or_over": {
                        "12": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "14": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "16": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "18": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "21": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "65": {
                          "mandatory": true,
                          "value_type": "boolean"
                        }
                      }
                    },
                    "display": [
                      {
                        "name": "ID Card",
                        "locale": "en-US",
                        "text_color": "#FFFFFF",
                        "background_color": "#12107c"
                      }
                    ],
                    "cryptographic_binding_methods_supported": [
                      "jwk"
                    ]
                  },
                  "vc_additional_data": {
                    "sd_list": [
                      "/given_name",
                      "/family_name",
                      "/age_equal_or_over/12",
                      "/age_equal_or_over/14",
                      "/age_equal_or_over/16",
                      "/age_equal_or_over/18",
                      "/age_equal_or_over/21",
                      "/age_equal_or_over/65"
                    ]
                  },
                  "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                  "cryptographic_binding_methods_supported": null,
                  "cryptographic_suites_supported": null,
                  "display": null
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      },
      "get": {
        "summary": "Get credential supported record(s).",
        "description": "This endpoint gets credential supported record(s).",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "supported_cred_id",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The supported_cred_id you would like to filter by"
          },
          {
            "in": "query",
            "name": "format",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The credential format you would like to filter by"
          },
          {
            "in": "query",
            "name": "identifier",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The credential identifier you would like to filter by"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "created_at": {
                        "type": "string"
                      },
                      "updated_at": {
                        "type": "string"
                      },
                      "supported_cred_id": {
                        "type": "string"
                      },
                      "format": {
                        "type": "string"
                      },
                      "identifier": {
                        "type": "string"
                      },
                      "format_data": {
                        "type": "object"
                      },
                      "vc_additional_data": {
                        "type": "object"
                      },
                      "cryptographic_binding_methods_supported": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "cryptographic_suites_supported": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "display": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "example": [
                  {
                    "supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
                    "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                    "created_at": "2025-06-23T20:56:23.546Z",
                    "cryptographic_binding_methods_supported": null,
                    "cryptographic_suites_supported": null,
                    "display": null,
                    "format": "vc+sd-jwt",
                    "format_data": {
                      "vct": "ExampleIDCard",
                      "claims": {
                        "given_name": {
                          "mandatory": true,
                          "value_type": "string"
                        },
                        "family_name": {
                          "mandatory": true,
                          "value_type": "string"
                        },
                        "something_nested": {
                          "key1": {
                            "key2": {
                              "key3": {
                                "mandatory": true,
                                "value_type": "string"
                              }
                            }
                          }
                        },
                        "age_equal_or_over": {
                          "12": {
                            "mandatory": true,
                            "value_type": "boolean"
                          },
                          "14": {
                            "mandatory": true,
                            "value_type": "boolean"
                          },
                          "16": {
                            "mandatory": true,
                            "value_type": "boolean"
                          },
                          "18": {
                            "mandatory": true,
                            "value_type": "boolean"
                          },
                          "21": {
                            "mandatory": true,
                            "value_type": "boolean"
                          },
                          "65": {
                            "mandatory": true,
                            "value_type": "boolean"
                          }
                        }
                      },
                      "display": [
                        {
                          "name": "ID Card",
                          "locale": "en-US",
                          "text_color": "#FFFFFF",
                          "background_color": "#12107c"
                        }
                      ],
                      "cryptographic_binding_methods_supported": [
                        "jwk"
                      ]
                    },
                    "identifier": "IDCard",
                    "updated_at": "2025-06-23T20:56:23.546Z",
                    "vc_additional_data": {
                      "sd_list": [
                        "/given_name",
                        "/family_name",
                        "/age_equal_or_over/12",
                        "/age_equal_or_over/14",
                        "/age_equal_or_over/16",
                        "/age_equal_or_over/18",
                        "/age_equal_or_over/21",
                        "/age_equal_or_over/65"
                      ]
                    }
                  },
                  {
                    "supported_cred_id": "e18dcae7-75c7-4ee1-b818-0b0b2e83ef74",
                    "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                    "created_at": "2025-06-23T20:56:28.234Z",
                    "cryptographic_binding_methods_supported": [
                      "did"
                    ],
                    "cryptographic_suites_supported": [
                      "ES256"
                    ],
                    "display": [
                      {
                        "logo": {
                          "url": "https://w3c-ccg.github.io/vc-ed/plugfest-1-2022/images/JFF_LogoLockup.png",
                          "alt_text": "a square logo of a university"
                        },
                        "name": "Email Credential",
                        "locale": "en-US",
                        "text_color": "#FFFFFF",
                        "background_color": "#12107c"
                      }
                    ],
                    "format": "jwt_vc_json",
                    "format_data": {
                      "order": null,
                      "types": [
                        "VerifiableCredential",
                        "EmailCredential"
                      ],
                      "context": [
                        "https://www.w3.org/2018/credentials/v1",
                        "https://www.w3.org/2018/credentials/examples/v1"
                      ],
                      "credentialSubject": {
                        "domain": {},
                        "address": {},
                        "local_part": {},
                        "verified_at": {}
                      }
                    },
                    "identifier": "Email - JWT VC",
                    "updated_at": "2025-06-23T20:56:28.234Z",
                    "vc_additional_data": {
                      "type": [
                        "VerifiableCredential",
                        "EmailCredential"
                      ],
                      "@context": [
                        "https://www.w3.org/2018/credentials/v1",
                        "https://www.w3.org/2018/credentials/examples/v1"
                      ]
                    }
                  }
                ]
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vci/credentials-supported/jwt": {
      "post": {
        "summary": "Create a JWT-VC credential supported record.",
        "description": "This endpoint creates a JWT-VC credential supported record.",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "@context": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  },
                  "format": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "type": {
                    "type": null
                  },
                  "credentialSubject": {
                    "type": "object"
                  },
                  "cryptographic_binding_methods_supported": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "cryptographic_suites_supported": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "display": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  },
                  "order": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "cryptographic_binding_methods_supported": [
                    "did"
                  ],
                  "cryptographic_suites_supported": [
                    "ES256"
                  ],
                  "display": [
                    {
                      "name": "Email Credential",
                      "locale": "en-US",
                      "logo": {
                        "url": "https://w3c-ccg.github.io/vc-ed/plugfest-1-2022/images/JFF_LogoLockup.png",
                        "alt_text": "a square logo of a university"
                      },
                      "background_color": "#12107c",
                      "text_color": "#FFFFFF"
                    }
                  ],
                  "format": "jwt_vc_json",
                  "credentialSubject": {
                    "verified_at": {},
                    "local_part": {},
                    "address": {},
                    "domain": {}
                  },
                  "type": [
                    "VerifiableCredential",
                    "EmailCredential"
                  ],
                  "id": "Email - JWT VC",
                  "@context": [
                    "https://www.w3.org/2018/credentials/v1",
                    "https://www.w3.org/2018/credentials/examples/v1"
                  ]
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string"
                    },
                    "updated_at": {
                      "type": "string"
                    },
                    "supported_cred_id": {
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    },
                    "identifier": {
                      "type": "string"
                    },
                    "format_data": {
                      "type": "object"
                    },
                    "vc_additional_data": {
                      "type": "object"
                    },
                    "cryptographic_binding_methods_supported": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "cryptographic_suites_supported": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "display": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "example": {
                  "created_at": "2025-06-23T20:56:28.234Z",
                  "updated_at": "2025-06-23T20:56:28.234Z",
                  "supported_cred_id": "e18dcae7-75c7-4ee1-b818-0b0b2e83ef74",
                  "format": "jwt_vc_json",
                  "identifier": "Email - JWT VC",
                  "cryptographic_binding_methods_supported": [
                    "did"
                  ],
                  "cryptographic_suites_supported": [
                    "ES256"
                  ],
                  "display": [
                    {
                      "logo": {
                        "url": "https://w3c-ccg.github.io/vc-ed/plugfest-1-2022/images/JFF_LogoLockup.png",
                        "alt_text": "a square logo of a university"
                      },
                      "name": "Email Credential",
                      "locale": "en-US",
                      "text_color": "#FFFFFF",
                      "background_color": "#12107c"
                    }
                  ],
                  "format_data": {
                    "order": null,
                    "types": [
                      "VerifiableCredential",
                      "EmailCredential"
                    ],
                    "context": [
                      "https://www.w3.org/2018/credentials/v1",
                      "https://www.w3.org/2018/credentials/examples/v1"
                    ],
                    "credentialSubject": {
                      "domain": {},
                      "address": {},
                      "local_part": {},
                      "verified_at": {}
                    }
                  },
                  "vc_additional_data": {
                    "type": [
                      "VerifiableCredential",
                      "EmailCredential"
                    ],
                    "@context": [
                      "https://www.w3.org/2018/credentials/v1",
                      "https://www.w3.org/2018/credentials/examples/v1"
                    ]
                  },
                  "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff"
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vci/credentials-supported/sd-jwt": {
      "post": {
        "summary": "Create a SD-JWT credential supported record.",
        "description": "This endpoint creates SD-JWT a credential supported record.",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "format": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "claims": {
                    "type": "object"
                  },
                  "cryptographic_binding_methods_supported": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "cryptographic_suites_supported": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "display": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  },
                  "order": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "sd_list": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "vct": {
                    "type": "string"
                  }
                },
                "example": {
                  "format": "vc+sd-jwt",
                  "id": "test",
                  "vct": "testCard",
                  "claims": {
                    "given_name": {
                      "mandatory": true,
                      "value_type": "string"
                    },
                    "family_name": {
                      "mandatory": true,
                      "value_type": "string"
                    },
                    "something_nested": {
                      "key1": {
                        "key2": {
                          "key3": {
                            "mandatory": true,
                            "value_type": "string"
                          }
                        }
                      }
                    },
                    "age_equal_or_over": {
                      "12": {
                        "mandatory": true,
                        "value_type": "boolean"
                      },
                      "14": {
                        "mandatory": true,
                        "value_type": "boolean"
                      },
                      "16": {
                        "mandatory": true,
                        "value_type": "boolean"
                      },
                      "18": {
                        "mandatory": true,
                        "value_type": "boolean"
                      },
                      "21": {
                        "mandatory": true,
                        "value_type": "boolean"
                      },
                      "65": {
                        "mandatory": true,
                        "value_type": "boolean"
                      }
                    }
                  },
                  "sd_list": [
                    "/given_name",
                    "/family_name",
                    "/age_equal_or_over/12",
                    "/age_equal_or_over/14",
                    "/age_equal_or_over/16",
                    "/age_equal_or_over/18",
                    "/age_equal_or_over/21",
                    "/age_equal_or_over/65"
                  ]
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string"
                    },
                    "updated_at": {
                      "type": "string"
                    },
                    "supported_cred_id": {
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    },
                    "identifier": {
                      "type": "string"
                    },
                    "format_data": {
                      "type": "object"
                    },
                    "vc_additional_data": {
                      "type": "object"
                    },
                    "cryptographic_binding_methods_supported": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "cryptographic_suites_supported": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "display": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "example": {
                  "created_at": "2025-06-23T22:37:10.953Z",
                  "updated_at": "2025-06-23T22:37:10.953Z",
                  "supported_cred_id": "3f3427bd-381d-466a-b395-6ed104937ac3",
                  "format": "vc+sd-jwt",
                  "identifier": "test",
                  "format_data": {
                    "vct": "testCard",
                    "order": null,
                    "claims": {
                      "given_name": {
                        "mandatory": true,
                        "value_type": "string"
                      },
                      "family_name": {
                        "mandatory": true,
                        "value_type": "string"
                      },
                      "something_nested": {
                        "key1": {
                          "key2": {
                            "key3": {
                              "mandatory": true,
                              "value_type": "string"
                            }
                          }
                        }
                      },
                      "age_equal_or_over": {
                        "12": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "14": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "16": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "18": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "21": {
                          "mandatory": true,
                          "value_type": "boolean"
                        },
                        "65": {
                          "mandatory": true,
                          "value_type": "boolean"
                        }
                      }
                    }
                  },
                  "vc_additional_data": {
                    "sd_list": [
                      "/given_name",
                      "/family_name",
                      "/age_equal_or_over/12",
                      "/age_equal_or_over/14",
                      "/age_equal_or_over/16",
                      "/age_equal_or_over/18",
                      "/age_equal_or_over/21",
                      "/age_equal_or_over/65"
                    ]
                  },
                  "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                  "cryptographic_binding_methods_supported": null,
                  "cryptographic_suites_supported": null,
                  "display": null
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vci/credentials-supported/{supported_cred_id}": {
      "get": {
        "summary": "Gets a credential supported record by supported_cred_id.",
        "description": "This endpoint gets a credential supported record by supported_cred_id.",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "supported_cred_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The supported_cred_id you would like to get"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string"
                    },
                    "updated_at": {
                      "type": "string"
                    },
                    "supported_cred_id": {
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    },
                    "identifier": {
                      "type": "string"
                    },
                    "format_data": {
                      "type": "object"
                    },
                    "vc_additional_data": {
                      "type": "object"
                    },
                    "cryptographic_binding_methods_supported": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "cryptographic_suites_supported": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "display": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "examples": {
                  "Sdjwt": {
                    "value": {
                      "supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
                      "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                      "created_at": "2025-06-23T20:56:23.546Z",
                      "cryptographic_binding_methods_supported": null,
                      "cryptographic_suites_supported": null,
                      "display": null,
                      "format": "vc+sd-jwt",
                      "format_data": {
                        "vct": "ExampleIDCard",
                        "claims": {
                          "given_name": {
                            "mandatory": true,
                            "value_type": "string"
                          },
                          "family_name": {
                            "mandatory": true,
                            "value_type": "string"
                          },
                          "something_nested": {
                            "key1": {
                              "key2": {
                                "key3": {
                                  "mandatory": true,
                                  "value_type": "string"
                                }
                              }
                            }
                          },
                          "age_equal_or_over": {
                            "12": {
                              "mandatory": true,
                              "value_type": "boolean"
                            },
                            "14": {
                              "mandatory": true,
                              "value_type": "boolean"
                            },
                            "16": {
                              "mandatory": true,
                              "value_type": "boolean"
                            },
                            "18": {
                              "mandatory": true,
                              "value_type": "boolean"
                            },
                            "21": {
                              "mandatory": true,
                              "value_type": "boolean"
                            },
                            "65": {
                              "mandatory": true,
                              "value_type": "boolean"
                            }
                          }
                        },
                        "display": [
                          {
                            "name": "ID Card",
                            "locale": "en-US",
                            "text_color": "#FFFFFF",
                            "background_color": "#12107c"
                          }
                        ],
                        "cryptographic_binding_methods_supported": [
                          "jwk"
                        ]
                      },
                      "identifier": "IDCard",
                      "updated_at": "2025-06-23T20:56:23.546Z",
                      "vc_additional_data": {
                        "sd_list": [
                          "/given_name",
                          "/family_name",
                          "/age_equal_or_over/12",
                          "/age_equal_or_over/14",
                          "/age_equal_or_over/16",
                          "/age_equal_or_over/18",
                          "/age_equal_or_over/21",
                          "/age_equal_or_over/65"
                        ]
                      }
                    }
                  },
                  "Jwtvc": {
                    "value": {
                      "supported_cred_id": "e18dcae7-75c7-4ee1-b818-0b0b2e83ef74",
                      "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                      "created_at": "2025-06-23T20:56:28.234Z",
                      "cryptographic_binding_methods_supported": [
                        "did"
                      ],
                      "cryptographic_suites_supported": [
                        "ES256"
                      ],
                      "display": [
                        {
                          "logo": {
                            "url": "https://w3c-ccg.github.io/vc-ed/plugfest-1-2022/images/JFF_LogoLockup.png",
                            "alt_text": "a square logo of a university"
                          },
                          "name": "Email Credential",
                          "locale": "en-US",
                          "text_color": "#FFFFFF",
                          "background_color": "#12107c"
                        }
                      ],
                      "format": "jwt_vc_json",
                      "format_data": {
                        "order": null,
                        "types": [
                          "VerifiableCredential",
                          "EmailCredential"
                        ],
                        "context": [
                          "https://www.w3.org/2018/credentials/v1",
                          "https://www.w3.org/2018/credentials/examples/v1"
                        ],
                        "credentialSubject": {
                          "domain": {},
                          "address": {},
                          "local_part": {},
                          "verified_at": {}
                        }
                      },
                      "identifier": "Email - JWT VC",
                      "updated_at": "2025-06-23T20:56:28.234Z",
                      "vc_additional_data": {
                        "type": [
                          "VerifiableCredential",
                          "EmailCredential"
                        ],
                        "@context": [
                          "https://www.w3.org/2018/credentials/v1",
                          "https://www.w3.org/2018/credentials/examples/v1"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      },
      "delete": {
        "summary": "Delete a credential supported record.",
        "description": "This endpoint deletes a credential supported record.",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "supported_cred_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The supported_cred_id you would like to delete"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok"
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vci/credentials-supported/mdoc": {
      "post": {
        "summary": "Register an mDoc credential type.",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "doctype"
                ],
                "properties": {
                  "doctype": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "display": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  },
                  "verification_method": {
                    "type": "string"
                  },
                  "issuer_id": {
                    "type": "string"
                  },
                  "claims_schema": {
                    "type": "object"
                  },
                  "vc_additional_data": {
                    "type": "object"
                  },
                  "cryptographic_binding_methods_supported": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "cryptographic_suites_supported": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "proof_types_supported": {
                    "type": "object"
                  }
                }
              },
              "example": {
                "doctype": "org.iso.18013.5.1.mDL",
                "label": "Mobile Driver's License",
                "description": "ISO 18013-5 Mobile Driver's License"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "mDoc type registered.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "agentRecord": {
                    "supported_cred_id": "9fd5ef9d-b8b8-4f52-b6a9-95b9ce4f6f8a",
                    "identifier": "org.iso.18013.5.1.mDL",
                    "format": "mso_mdoc",
                    "display": [
                      {
                        "name": "org.iso.18013.5.1.mDL"
                      }
                    ],
                    "format_data": {
                      "doctype": "org.iso.18013.5.1.mDL",
                      "claims": {}
                    }
                  },
                  "dbConfig": {
                    "config_id": "c4d8f7f2-f8d0-4d0b-93d0-9f9f31a5c003",
                    "wallet_id": "wallet-123",
                    "doctype": "org.iso.18013.5.1.mDL",
                    "supported_cred_id": "9fd5ef9d-b8b8-4f52-b6a9-95b9ce4f6f8a",
                    "format": "mso_mdoc",
                    "label": "Mobile Driver's License",
                    "description": "ISO 18013-5 Mobile Driver's License",
                    "created_at": "2026-03-10T18:30:00.000Z",
                    "updated_at": "2026-03-10T18:30:00.000Z"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "403": {
            "description": "API key lacks required scope"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      },
      "get": {
        "summary": "List registered mDoc credential types.",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "doctype",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "config_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of mDoc credential type configurations.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "example": [
                  {
                    "config_id": "c4d8f7f2-f8d0-4d0b-93d0-9f9f31a5c003",
                    "wallet_id": "wallet-123",
                    "doctype": "org.iso.18013.5.1.mDL",
                    "supported_cred_id": "9fd5ef9d-b8b8-4f52-b6a9-95b9ce4f6f8a",
                    "format": "mso_mdoc",
                    "label": "Mobile Driver's License",
                    "description": "ISO 18013-5 Mobile Driver's License",
                    "created_at": "2026-03-10T18:30:00.000Z",
                    "updated_at": "2026-03-10T18:30:00.000Z"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "403": {
            "description": "API key lacks required scope"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vci/exchanges": {
      "get": {
        "summary": "Get credential exchange record(s).",
        "description": "This endpoint gets credential exchange record(s).",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "exchange_id",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The exchange_id you would like to filter by"
          },
          {
            "in": "query",
            "name": "state",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The state you would like to filter by."
          },
          {
            "in": "query",
            "name": "supported_cred_id",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The supported_cred_id you would like to filter by"
          },
          {
            "in": "query",
            "name": "doctype",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional mDoc doctype filter."
          },
          {
            "in": "query",
            "name": "connection_id",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional mDoc connection_id filter."
          },
          {
            "in": "query",
            "name": "config_id",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional mDoc config_id filter."
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "exchange_id": {
                        "type": "string"
                      },
                      "supported_cred_id": {
                        "type": "string"
                      },
                      "config_id": {
                        "type": "string"
                      },
                      "doctype": {
                        "type": "string"
                      },
                      "state": {
                        "type": "string"
                      },
                      "credential_subject": {
                        "type": "object"
                      },
                      "verification_method": {
                        "type": "string"
                      },
                      "issuer_id": {
                        "type": "string"
                      },
                      "connection_id": {
                        "type": "string"
                      },
                      "contact_id": {
                        "type": "string"
                      },
                      "cbor_encoded": {
                        "type": "string"
                      },
                      "label": {
                        "type": "string"
                      },
                      "error": {
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "nonce": {
                        "type": "string"
                      },
                      "token": {
                        "type": "string"
                      },
                      "created_at": {
                        "type": "string"
                      },
                      "updated_at": {
                        "type": "string"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "exchange_id": "253eb7bc-5060-45e4-bc06-fb006d1654ce",
                    "supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
                    "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                    "state": "offer",
                    "pin": null,
                    "credential_subject": {},
                    "verification_method": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj#key-1",
                    "issuer_id": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj",
                    "code": "iQ7DWmf2vjogMtQ_bdrDQg",
                    "nonce": null,
                    "token": null,
                    "created_at": "2025-06-23T21:04:42.554Z",
                    "updated_at": "2025-06-23T21:04:42.571Z"
                  },
                  {
                    "exchange_id": "5d78070b-527a-4267-afc4-c4cb385ed6fb",
                    "supported_cred_id": "e18dcae7-75c7-4ee1-b818-0b0b2e83ef74",
                    "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                    "state": "offer",
                    "pin": null,
                    "credential_subject": {},
                    "verification_method": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj#key-1",
                    "issuer_id": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj",
                    "code": "QYU7Io9wO13VGt7fshoMQg",
                    "nonce": null,
                    "token": null,
                    "created_at": "2025-06-23T21:05:07.459Z",
                    "updated_at": "2025-06-23T21:05:07.488Z"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vci/exchanges/{exchange_id}": {
      "get": {
        "summary": "Get a credential exchange record by exchange_id.",
        "description": "This endpoint gets a credential exchange record by exchange_id.",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "exchange_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The exchange_id you would like to get"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "exchange_id": {
                      "type": "string"
                    },
                    "supported_cred_id": {
                      "type": "string"
                    },
                    "state": {
                      "type": "string"
                    },
                    "credential_subject": {
                      "type": "object"
                    },
                    "verification_method": {
                      "type": "string"
                    },
                    "issuer_id": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "nonce": {
                      "type": "string"
                    },
                    "token": {
                      "type": "string"
                    },
                    "created_at": {
                      "type": "string"
                    },
                    "updated_at": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Sdjwt": {
                    "value": {
                      "exchange_id": "253eb7bc-5060-45e4-bc06-fb006d1654ce",
                      "supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
                      "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                      "state": "offer",
                      "pin": null,
                      "credential_subject": {},
                      "verification_method": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj#key-1",
                      "issuer_id": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj",
                      "code": "iQ7DWmf2vjogMtQ_bdrDQg",
                      "nonce": null,
                      "token": null,
                      "created_at": "2025-06-23T21:04:42.554Z",
                      "updated_at": "2025-06-23T21:04:42.571Z"
                    }
                  },
                  "Jwtvc": {
                    "value": {
                      "exchange_id": "5d78070b-527a-4267-afc4-c4cb385ed6fb",
                      "supported_cred_id": "e18dcae7-75c7-4ee1-b818-0b0b2e83ef74",
                      "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                      "state": "offer",
                      "pin": null,
                      "credential_subject": {},
                      "verification_method": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj#key-1",
                      "issuer_id": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj",
                      "code": "QYU7Io9wO13VGt7fshoMQg",
                      "nonce": null,
                      "token": null,
                      "created_at": "2025-06-23T21:05:07.459Z",
                      "updated_at": "2025-06-23T21:05:07.488Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      },
      "delete": {
        "summary": "Delete a credential exchange record.",
        "description": "This endpoint deletes a credential exchange record.",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "exchange_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The exchange_id you would like to delete"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vci/issue": {
      "post": {
        "summary": "Creates a credential exchange, and gets an offer.",
        "description": "This endpoint creates a credential exchange and gets an offer.",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "credential_subject": {
                    "type": "object"
                  },
                  "supported_cred_id": {
                    "type": "string"
                  },
                  "did": {
                    "type": "string"
                  },
                  "verification_method": {
                    "type": "string"
                  },
                  "pin": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "connection_id": {
                    "type": "string"
                  }
                }
              },
              "examples": {
                "Sdjwt": {
                  "value": {
                    "supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
                    "credential_subject": {
                      "given_name": "Caleb",
                      "family_name": "Bob",
                      "something_nested": {
                        "key1": {
                          "key2": {
                            "key3": "something nested"
                          }
                        }
                      },
                      "source_document_type": "id_card",
                      "age_equal_or_over": {
                        "12": true,
                        "14": true,
                        "16": true,
                        "18": true,
                        "21": true,
                        "65": false
                      }
                    }
                  }
                },
                "Jwtvc": {
                  "value": {
                    "supported_cred_id": "e18dcae7-75c7-4ee1-b818-0b0b2e83ef74",
                    "credential_subject": {
                      "degree": {},
                      "given_name": {
                        "value": "Test"
                      },
                      "gpa": {
                        "value": "1.0"
                      },
                      "last_name": {
                        "value": "Bob"
                      }
                    }
                  }
                },
                "Mdoc": {
                  "value": {
                    "supported_cred_id": "9fd5ef9d-b8b8-4f52-b6a9-95b9ce4f6f8a",
                    "credential_subject": {
                      "family_name": "Doe",
                      "given_name": "Jane",
                      "birth_date": "1990-01-15",
                      "issue_date": "2026-03-10",
                      "expiry_date": "2031-03-10",
                      "issuing_country": "US",
                      "issuing_authority": "State DMV",
                      "document_number": "DL123456",
                      "driving_privileges": "A,B,C",
                      "un_distinguishing_sign": "USA",
                      "sex": "2",
                      "height": "170",
                      "eye_colour": "BLU",
                      "birth_place": "New York",
                      "resident_city": "Springfield",
                      "resident_state": "IL",
                      "resident_postal_code": "62701",
                      "resident_country": "US",
                      "nationality": "US",
                      "age_over_18": "true",
                      "portrait": ""
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "offer": {
                      "type": "object",
                      "properties": {
                        "credential_issuer": {
                          "type": "string"
                        },
                        "credentials": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "grants": {
                          "type": "object",
                          "properties": {
                            "urn:ietf:params:oauth:grant-type:pre-authorized_code": {
                              "type": "object",
                              "properties": {
                                "pre-authorized_code": {
                                  "type": "string"
                                },
                                "user_pin_required": {
                                  "type": "boolean"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "credential_offer": {
                      "type": "string",
                      "description": "A URL encoded OpenID credential offer URI (openid-credential-offer://)"
                    },
                    "exchange": {
                      "type": "object",
                      "properties": {
                        "state": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updated_at": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "exchange_id": {
                          "type": "string"
                        },
                        "supported_cred_id": {
                          "type": "string"
                        },
                        "credential_subject": {
                          "type": "object"
                        },
                        "verification_method": {
                          "type": "string"
                        },
                        "issuer_id": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Sdjwt": {
                    "value": {
                      "offer": {
                        "credential_issuer": "https://example/oid4vc/tenant/c286d1c7-c548-48d1-8580-76d3fe317bff",
                        "credentials": [
                          "IDCard"
                        ],
                        "grants": {
                          "urn:ietf:params:oauth:grant-type:pre-authorized_code": {
                            "pre-authorized_code": "iQ7DWmf2vjogMtQ_bdrDQg",
                            "user_pin_required": false
                          }
                        }
                      },
                      "credential_offer": "openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%20%22https%3A//example/oid4vc/tenant/c286d1c7-c548-48d1-8580-76d3fe317bff%22%2C%20%22credentials%22%3A%20%5B%22IDCard%22%5D%2C%20%22grants%22%3A%20%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%20%7B%22pre-authorized_code%22%3A%20%22iQ7DWmf2vjogMtQ_bdrDQg%22%2C%20%22user_pin_required%22%3A%20false%7D%7D%7D",
                      "exchange": {
                        "state": "created",
                        "created_at": "2025-06-23T21:04:42.554462Z",
                        "updated_at": "2025-06-23T21:04:42.554462Z",
                        "exchange_id": "253eb7bc-5060-45e4-bc06-fb006d1654ce",
                        "supported_cred_id": "dd6384eb-b0b8-4084-af3b-2ddc5668addd",
                        "credential_subject": {
                          "given_name": "Caleb",
                          "family_name": "Bob",
                          "something_nested": {
                            "key1": {
                              "key2": {
                                "key3": "something nested"
                              }
                            }
                          },
                          "source_document_type": "id_card",
                          "age_equal_or_over": {
                            "12": true,
                            "14": true,
                            "16": true,
                            "18": true,
                            "21": true,
                            "65": false
                          }
                        },
                        "verification_method": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj#key-1",
                        "issuer_id": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj"
                      }
                    }
                  },
                  "Jwtvc": {
                    "value": {
                      "offer": {
                        "credential_issuer": "https://example/oid4vc/tenant/c286d1c7-c548-48d1-8580-76d3fe317bff",
                        "credentials": [
                          "Email - JWT VC"
                        ],
                        "grants": {
                          "urn:ietf:params:oauth:grant-type:pre-authorized_code": {
                            "pre-authorized_code": "QYU7Io9wO13VGt7fshoMQg",
                            "user_pin_required": false
                          }
                        }
                      },
                      "credential_offer": "openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%20%22https%3A//example/oid4vc/tenant/c286d1c7-c548-48d1-8580-76d3fe317bff%22%2C%20%22credentials%22%3A%20%5B%22Email%20-%20JWT%20VC%22%5D%2C%20%22grants%22%3A%20%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%20%7B%22pre-authorized_code%22%3A%20%22QYU7Io9wO13VGt7fshoMQg%22%2C%20%22user_pin_required%22%3A%20false%7D%7D%7D",
                      "exchange": {
                        "state": "created",
                        "created_at": "2025-06-23T21:05:07.459332Z",
                        "updated_at": "2025-06-23T21:05:07.459332Z",
                        "exchange_id": "5d78070b-527a-4267-afc4-c4cb385ed6fb",
                        "supported_cred_id": "e18dcae7-75c7-4ee1-b818-0b0b2e83ef74",
                        "credential_subject": {
                          "degree": {},
                          "given_name": {
                            "value": "Test"
                          },
                          "gpa": {
                            "value": "1.0"
                          },
                          "last_name": {
                            "value": "Bob"
                          }
                        },
                        "verification_method": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj#key-1",
                        "issuer_id": "did:sov:Qi5LPB4mtKfbhQqC2f6yPj"
                      }
                    }
                  },
                  "Mdoc": {
                    "value": {
                      "offer": {
                        "credential_issuer": "https://example/oid4vc/tenant/c286d1c7-c548-48d1-8580-76d3fe317bff",
                        "credentials": [
                          "org.iso.18013.5.1.mDL"
                        ],
                        "grants": {
                          "urn:ietf:params:oauth:grant-type:pre-authorized_code": {
                            "pre-authorized_code": "iQ7DWmf2vjogMtQ_bdrDQg",
                            "user_pin_required": false
                          }
                        }
                      },
                      "credential_offer": "openid-credential-offer://?credential_offer=%7B...%7D",
                      "exchange": {
                        "state": "created",
                        "created_at": "2026-03-12T22:03:12.204Z",
                        "updated_at": "2026-03-12T22:03:12.237Z",
                        "exchange_id": "921786c9-dd65-473a-bebf-e5283d689c96",
                        "supported_cred_id": "9fd5ef9d-b8b8-4f52-b6a9-95b9ce4f6f8a",
                        "credential_subject": {
                          "family_name": "Doe",
                          "given_name": "Jane",
                          "birth_date": "1990-01-15",
                          "issue_date": "2026-03-10",
                          "expiry_date": "2031-03-10",
                          "issuing_country": "US",
                          "issuing_authority": "State DMV",
                          "document_number": "DL123456",
                          "driving_privileges": "A,B,C",
                          "un_distinguishing_sign": "USA",
                          "sex": "2",
                          "height": "170",
                          "eye_colour": "BLU",
                          "birth_place": "New York",
                          "resident_city": "Springfield",
                          "resident_state": "IL",
                          "resident_postal_code": "62701",
                          "resident_country": "US",
                          "nationality": "US",
                          "age_over_18": "true",
                          "portrait": ""
                        },
                        "verification_method": "did:key:zDnaevgeiLuxFHYTHCHb1eAr489xPuCy3pDamtiGe5pWPvU41#zDnaevgeiLuxFHYTHCHb1eAr489xPuCy3pDamtiGe5pWPvU41",
                        "issuer_id": "did:key:zDnaevgeiLuxFHYTHCHb1eAr489xPuCy3pDamtiGe5pWPvU41"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vci/setup/mdoc": {
      "post": {
        "summary": "Provision mDoc issuer key material.",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "force": {
                    "type": "boolean"
                  }
                }
              },
              "example": {
                "force": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "mDoc issuer keys provisioned.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "key_id": "8d3e8f18-5e7d-4f1a-a72b-1db2f1d0c001",
                  "cert_id": "6af84a3c-b6e9-4b1c-844a-6ce6a1f2d002",
                  "message": "mDoc issuer keys provisioned successfully."
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "403": {
            "description": "API key lacks required scope"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vci/status/mdoc": {
      "get": {
        "summary": "Fetch mDoc issuer readiness status.",
        "tags": [
          "Oid4vci"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "mDoc issuer readiness status.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "keys": [
                    {
                      "key_id": "8d3e8f18-5e7d-4f1a-a72b-1db2f1d0c001",
                      "cert_id": "6af84a3c-b6e9-4b1c-844a-6ce6a1f2d002"
                    }
                  ],
                  "defaultCertificate": {
                    "cert_id": "6af84a3c-b6e9-4b1c-844a-6ce6a1f2d002",
                    "key_id": "8d3e8f18-5e7d-4f1a-a72b-1db2f1d0c001",
                    "subject_dn": "CN=Proven mDoc Issuer",
                    "issuer_dn": "CN=Proven mDoc Issuer"
                  },
                  "trustAnchors": []
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "403": {
            "description": "API key lacks required scope"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vp/presentation-definitions": {
      "post": {
        "summary": "Create a presentation definition.",
        "description": "This endpoint creates a presentation definition.",
        "tags": [
          "Oid4vp"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "pres_def": {
                    "type": "object"
                  }
                }
              },
              "examples": {
                "Sdjwt": {
                  "value": {
                    "pres_def": {
                      "id": "0c400131-dce5-4a59-8a70-a17ef31f8903",
                      "purpose": "Present basic profile info",
                      "input_descriptors": [
                        {
                          "format": {
                            "vc+sd-jwt": {}
                          },
                          "id": "ID Card",
                          "name": "Profile",
                          "purpose": "Present basic profile info",
                          "constraints": {
                            "limit_disclosure": "required",
                            "fields": [
                              {
                                "path": [
                                  "$.vct"
                                ],
                                "filter": {
                                  "type": "string"
                                }
                              },
                              {
                                "path": [
                                  "$.family_name"
                                ]
                              },
                              {
                                "path": [
                                  "$.given_name"
                                ]
                              },
                              {
                                "path": [
                                  "$.something_nested.key1.key2.key3"
                                ]
                              }
                            ]
                          }
                        }
                      ]
                    }
                  }
                },
                "Jwtvc": {
                  "value": {
                    "pres_def": {
                      "id": "626c7ea9-4238-4aaf-9727-8ba5ccbb2421",
                      "purpose": "Present basic profile info",
                      "format": {
                        "jwt_vc_json": {
                          "alg": [
                            "ES256"
                          ]
                        },
                        "jwt_vp_json": {
                          "alg": [
                            "ES256"
                          ]
                        },
                        "jwt_vc": {
                          "alg": [
                            "ES256"
                          ]
                        },
                        "jwt_vp": {
                          "alg": [
                            "ES256"
                          ]
                        }
                      },
                      "input_descriptors": [
                        {
                          "id": "4ce7aff1-0234-4f35-9d21-251668a60950",
                          "name": "Profile",
                          "purpose": "Present basic profile info",
                          "constraints": {
                            "fields": [
                              {
                                "name": "name",
                                "path": [
                                  "$.vc.credentialSubject.first_name",
                                  "$.credentialSubject.first_name"
                                ],
                                "filter": {
                                  "type": "string",
                                  "pattern": "^.{1,64}$"
                                }
                              },
                              {
                                "name": "lastname",
                                "path": [
                                  "$.vc.credentialSubject.last_name",
                                  "$.credentialSubject.last_name"
                                ],
                                "filter": {
                                  "type": "string",
                                  "pattern": "^.{1,64}$"
                                }
                              }
                            ]
                          }
                        }
                      ]
                    }
                  }
                },
                "MsoMdoc": {
                  "value": {
                    "pres_def": {
                      "input_descriptors": [
                        {
                          "id": "org.iso.18013.5.1.mDL",
                          "format": {
                            "mso_mdoc": {
                              "alg": [
                                "ES256"
                              ]
                            }
                          },
                          "constraints": {
                            "limit_disclosure": "required",
                            "fields": [
                              {
                                "path": [
                                  "$['org.iso.18013.5.1']['given_name']"
                                ]
                              },
                              {
                                "path": [
                                  "$['org.iso.18013.5.1']['family_name']"
                                ]
                              }
                            ]
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string"
                    },
                    "updated_at": {
                      "type": "string"
                    },
                    "pres_def_id": {
                      "type": "string"
                    },
                    "pres_def": {
                      "type": "object"
                    }
                  }
                },
                "examples": {
                  "Sdjwt": {
                    "value": {
                      "created_at": "2025-06-23T22:01:09.009Z",
                      "updated_at": "2025-06-23T22:01:09.009Z",
                      "pres_def_id": "500d4c56-5aed-4753-8add-383833335f5c",
                      "pres_def": {
                        "id": "162bbcb2-a4dc-4d71-9afa-9dc317f259e0",
                        "purpose": "Present basic profile info",
                        "input_descriptors": [
                          {
                            "id": "ID Card",
                            "name": "Profile",
                            "format": {
                              "vc+sd-jwt": {}
                            },
                            "purpose": "Present basic profile info",
                            "constraints": {
                              "fields": [
                                {
                                  "path": [
                                    "$.vct"
                                  ],
                                  "filter": {
                                    "type": "string"
                                  }
                                },
                                {
                                  "path": [
                                    "$.family_name"
                                  ]
                                },
                                {
                                  "path": [
                                    "$.given_name"
                                  ]
                                },
                                {
                                  "path": [
                                    "$.something_nested.key1.key2.key3"
                                  ]
                                }
                              ],
                              "limit_disclosure": "required"
                            }
                          }
                        ]
                      },
                      "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff"
                    }
                  },
                  "Jwtvc": {
                    "value": {
                      "created_at": "2025-06-23T22:04:20.785Z",
                      "updated_at": "2025-06-23T22:04:20.785Z",
                      "pres_def_id": "1dcacd31-533a-4246-9b4b-75d501f32576",
                      "pres_def": {
                        "id": "4608c94c-86aa-4925-9390-cd2d3e73e923",
                        "format": {
                          "jwt_vc": {
                            "alg": [
                              "ES256"
                            ]
                          },
                          "jwt_vp": {
                            "alg": [
                              "ES256"
                            ]
                          },
                          "jwt_vc_json": {
                            "alg": [
                              "ES256"
                            ]
                          },
                          "jwt_vp_json": {
                            "alg": [
                              "ES256"
                            ]
                          }
                        },
                        "purpose": "Present basic profile info",
                        "input_descriptors": [
                          {
                            "id": "4ce7aff1-0234-4f35-9d21-251668a60950",
                            "name": "Profile",
                            "purpose": "Present basic profile info",
                            "constraints": {
                              "fields": [
                                {
                                  "name": "name",
                                  "path": [
                                    "$.vc.credentialSubject.first_name",
                                    "$.credentialSubject.first_name"
                                  ],
                                  "filter": {
                                    "type": "string",
                                    "pattern": "^.{1,64}$"
                                  }
                                },
                                {
                                  "name": "lastname",
                                  "path": [
                                    "$.vc.credentialSubject.last_name",
                                    "$.credentialSubject.last_name"
                                  ],
                                  "filter": {
                                    "type": "string",
                                    "pattern": "^.{1,64}$"
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff"
                    }
                  },
                  "MsoMdoc": {
                    "value": {
                      "created_at": "2025-06-23T22:05:00.000Z",
                      "updated_at": "2025-06-23T22:05:00.000Z",
                      "pres_def_id": "42c870ae-b605-4121-b5e3-1e6bb3a00c6f",
                      "pres_def": {
                        "id": "24be1389-7bae-4b36-978d-64f735e51cb4",
                        "input_descriptors": [
                          {
                            "id": "org.iso.18013.5.1.mDL",
                            "format": {
                              "mso_mdoc": {
                                "alg": [
                                  "ES256"
                                ]
                              }
                            },
                            "constraints": {
                              "limit_disclosure": "required",
                              "fields": [
                                {
                                  "path": [
                                    "$['org.iso.18013.5.1']['given_name']"
                                  ]
                                },
                                {
                                  "path": [
                                    "$['org.iso.18013.5.1']['family_name']"
                                  ]
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      },
      "get": {
        "summary": "Get all presentation definitions.",
        "description": "This endpoint gets all presentation definitions.",
        "tags": [
          "Oid4vp"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "created_at": {
                        "type": "string"
                      },
                      "updated_at": {
                        "type": "string"
                      },
                      "pres_def_id": {
                        "type": "string"
                      },
                      "pres_def": {
                        "type": "object"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "pres_def_id": "500d4c56-5aed-4753-8add-383833335f5c",
                    "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                    "pres_def": {
                      "id": "162bbcb2-a4dc-4d71-9afa-9dc317f259e0",
                      "purpose": "Present basic profile info",
                      "input_descriptors": [
                        {
                          "id": "ID Card",
                          "name": "Profile",
                          "format": {
                            "vc+sd-jwt": {}
                          },
                          "purpose": "Present basic profile info",
                          "constraints": {
                            "fields": [
                              {
                                "path": [
                                  "$.vct"
                                ],
                                "filter": {
                                  "type": "string"
                                }
                              },
                              {
                                "path": [
                                  "$.family_name"
                                ]
                              },
                              {
                                "path": [
                                  "$.given_name"
                                ]
                              },
                              {
                                "path": [
                                  "$.something_nested.key1.key2.key3"
                                ]
                              }
                            ],
                            "limit_disclosure": "required"
                          }
                        }
                      ]
                    },
                    "created_at": "2025-06-23T22:01:09.009Z",
                    "updated_at": "2025-06-23T22:01:09.009Z"
                  },
                  {
                    "pres_def_id": "67ed21a1-69be-4df5-8d42-2f5ee32ec887",
                    "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                    "pres_def": {
                      "id": "2fcd3bc5-320a-4a51-ab33-ec7b70a8a29d",
                      "format": {
                        "jwt_vc": {
                          "alg": [
                            "ES256"
                          ]
                        },
                        "jwt_vp": {
                          "alg": [
                            "ES256"
                          ]
                        },
                        "jwt_vc_json": {
                          "alg": [
                            "ES256"
                          ]
                        },
                        "jwt_vp_json": {
                          "alg": [
                            "ES256"
                          ]
                        }
                      },
                      "purpose": "Present basic profile info",
                      "input_descriptors": [
                        {
                          "id": "4ce7aff1-0234-4f35-9d21-251668a60950",
                          "name": "Profile",
                          "purpose": "Present basic profile info",
                          "constraints": {
                            "fields": [
                              {
                                "name": "name",
                                "path": [
                                  "$.vc.credentialSubject.first_name",
                                  "$.credentialSubject.first_name"
                                ],
                                "filter": {
                                  "type": "string",
                                  "pattern": "^.{1,64}$"
                                }
                              },
                              {
                                "name": "lastname",
                                "path": [
                                  "$.vc.credentialSubject.last_name",
                                  "$.credentialSubject.last_name"
                                ],
                                "filter": {
                                  "type": "string",
                                  "pattern": "^.{1,64}$"
                                }
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "created_at": "2025-06-23T22:01:14.085Z",
                    "updated_at": "2025-06-23T22:01:14.085Z"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vp/presentation-definitions/{pres_def_id}": {
      "get": {
        "summary": "Get a presentation definition by pres_def_id.",
        "description": "This endpoint gets a presentation definition by pres_def_id.",
        "tags": [
          "Oid4vp"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "pres_def_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The pres_def_id for the presentation you would like to get"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string"
                    },
                    "updated_at": {
                      "type": "string"
                    },
                    "pres_def_id": {
                      "type": "string"
                    },
                    "pres_def": {
                      "type": "object"
                    }
                  }
                },
                "examples": {
                  "Sdjwt": {
                    "value": {
                      "pres_def_id": "500d4c56-5aed-4753-8add-383833335f5c",
                      "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                      "pres_def": {
                        "id": "162bbcb2-a4dc-4d71-9afa-9dc317f259e0",
                        "purpose": "Present basic profile info",
                        "input_descriptors": [
                          {
                            "id": "ID Card",
                            "name": "Profile",
                            "format": {
                              "vc+sd-jwt": {}
                            },
                            "purpose": "Present basic profile info",
                            "constraints": {
                              "fields": [
                                {
                                  "path": [
                                    "$.vct"
                                  ],
                                  "filter": {
                                    "type": "string"
                                  }
                                },
                                {
                                  "path": [
                                    "$.family_name"
                                  ]
                                },
                                {
                                  "path": [
                                    "$.given_name"
                                  ]
                                },
                                {
                                  "path": [
                                    "$.something_nested.key1.key2.key3"
                                  ]
                                }
                              ],
                              "limit_disclosure": "required"
                            }
                          }
                        ]
                      },
                      "created_at": "2025-06-23T22:01:09.009Z",
                      "updated_at": "2025-06-23T22:01:09.009Z"
                    }
                  },
                  "Jwtvc": {
                    "value": {
                      "pres_def_id": "67ed21a1-69be-4df5-8d42-2f5ee32ec887",
                      "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                      "pres_def": {
                        "id": "2fcd3bc5-320a-4a51-ab33-ec7b70a8a29d",
                        "format": {
                          "jwt_vc": {
                            "alg": [
                              "ES256"
                            ]
                          },
                          "jwt_vp": {
                            "alg": [
                              "ES256"
                            ]
                          },
                          "jwt_vc_json": {
                            "alg": [
                              "ES256"
                            ]
                          },
                          "jwt_vp_json": {
                            "alg": [
                              "ES256"
                            ]
                          }
                        },
                        "purpose": "Present basic profile info",
                        "input_descriptors": [
                          {
                            "id": "4ce7aff1-0234-4f35-9d21-251668a60950",
                            "name": "Profile",
                            "purpose": "Present basic profile info",
                            "constraints": {
                              "fields": [
                                {
                                  "name": "name",
                                  "path": [
                                    "$.vc.credentialSubject.first_name",
                                    "$.credentialSubject.first_name"
                                  ],
                                  "filter": {
                                    "type": "string",
                                    "pattern": "^.{1,64}$"
                                  }
                                },
                                {
                                  "name": "lastname",
                                  "path": [
                                    "$.vc.credentialSubject.last_name",
                                    "$.credentialSubject.last_name"
                                  ],
                                  "filter": {
                                    "type": "string",
                                    "pattern": "^.{1,64}$"
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "created_at": "2025-06-23T22:01:14.085Z",
                      "updated_at": "2025-06-23T22:01:14.085Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      },
      "delete": {
        "summary": "Delete a presentation definition.",
        "description": "This endpoint deletes a presentation definition",
        "tags": [
          "Oid4vp"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "pres_def_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The pres_def_id you would like to delete"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok"
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vp/presentations": {
      "get": {
        "summary": "Gets all presentations.",
        "description": "This endpoint gets all presentations",
        "tags": [
          "Oid4vp"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "presentation_id": {
                        "type": "string"
                      },
                      "pres_def_id": {
                        "type": "string"
                      },
                      "request_id": {
                        "type": "string"
                      },
                      "state": {
                        "type": "string"
                      },
                      "matched_credentials": {
                        "type": "object"
                      },
                      "verified": {
                        "type": "string"
                      },
                      "created_at": {
                        "type": "string"
                      },
                      "updated_at": {
                        "type": "string"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "presentation_id": "852ab8c5-2938-40d3-8ea5-02cfc4b91552",
                    "pres_def_id": "500d4c56-5aed-4753-8add-383833335f5c",
                    "request_id": "6c3c3638-5076-4d25-b5a2-d6e06d0ea4be",
                    "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                    "state": "request-created",
                    "matched_credentials": {},
                    "verified": null,
                    "created_at": "2025-06-23T22:06:36.327Z",
                    "updated_at": "2025-06-23T22:06:36.327Z"
                  },
                  {
                    "presentation_id": "ef545064-f2f7-4c8b-aee6-4511c24db85f",
                    "pres_def_id": "1dcacd31-533a-4246-9b4b-75d501f32576",
                    "request_id": "9a0a052e-6f07-49f0-9456-2d57b2365673",
                    "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                    "state": "request-created",
                    "matched_credentials": {},
                    "verified": null,
                    "created_at": "2025-06-23T22:06:50.799Z",
                    "updated_at": "2025-06-23T22:06:50.799Z"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vp/presentations/{presentation_id}": {
      "get": {
        "summary": "Get a presentation record by presentation_id.",
        "description": "This endpoint gets a presentation record by presentation_id.",
        "tags": [
          "Oid4vp"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "presentation_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The presentation_id for the presentation you would like to get"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "presentation_id": {
                      "type": "string"
                    },
                    "pres_def_id": {
                      "type": "string"
                    },
                    "request_id": {
                      "type": "string"
                    },
                    "state": {
                      "type": "string"
                    },
                    "matched_credentials": {
                      "type": "object"
                    },
                    "verified": {
                      "type": "string"
                    },
                    "created_at": {
                      "type": "string"
                    },
                    "updated_at": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Sdjwt": {
                    "value": {
                      "presentation_id": "852ab8c5-2938-40d3-8ea5-02cfc4b91552",
                      "pres_def_id": "500d4c56-5aed-4753-8add-383833335f5c",
                      "request_id": "6c3c3638-5076-4d25-b5a2-d6e06d0ea4be",
                      "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                      "state": "request-created",
                      "matched_credentials": {},
                      "verified": null,
                      "created_at": "2025-06-23T22:06:36.327Z",
                      "updated_at": "2025-06-23T22:06:36.327Z"
                    }
                  },
                  "Jwtvc": {
                    "value": {
                      "presentation_id": "ef545064-f2f7-4c8b-aee6-4511c24db85f",
                      "pres_def_id": "1dcacd31-533a-4246-9b4b-75d501f32576",
                      "request_id": "9a0a052e-6f07-49f0-9456-2d57b2365673",
                      "wallet_id": "c286d1c7-c548-48d1-8580-76d3fe317bff",
                      "state": "request-created",
                      "matched_credentials": {},
                      "verified": null,
                      "created_at": "2025-06-23T22:06:50.799Z",
                      "updated_at": "2025-06-23T22:06:50.799Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      },
      "delete": {
        "summary": "Delete a presentation.",
        "description": "This endpoint deletes a presentation.",
        "tags": [
          "Oid4vp"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "presentation_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The presentation_id for the presentation you would like to delete"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok"
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/oid4vp/request": {
      "post": {
        "summary": "Create a presentation request.",
        "description": "This endpoint creates a presentation request.",
        "tags": [
          "Oid4vp"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "pres_def_id": {
                    "type": "string"
                  },
                  "vp_formats": {
                    "type": "object"
                  }
                }
              },
              "examples": {
                "Sdjwt": {
                  "value": {
                    "pres_def_id": "c782ad57-d550-4fef-b588-93d8b2dc0662",
                    "vp_formats": {
                      "vc+sd-jwt": {
                        "sd-jwt_alg_values": [
                          "ES256",
                          "ES384"
                        ],
                        "kb-jwt_alg_values": [
                          "ES256",
                          "ES384"
                        ]
                      }
                    }
                  }
                },
                "Jwtvc": {
                  "value": {
                    "pres_def_id": "95a00742-2e39-4113-9fa0-113daa09aa98",
                    "vp_formats": {
                      "jwt_vc": {
                        "alg": [
                          "ES256",
                          "EdDSA"
                        ]
                      },
                      "jwt_vp": {
                        "alg": [
                          "ES256",
                          "EdDSA"
                        ]
                      },
                      "jwt_vc_json": {
                        "alg": [
                          "ES256",
                          "EdDSA"
                        ]
                      },
                      "jwt_vp_json": {
                        "alg": [
                          "ES256",
                          "EdDSA"
                        ]
                      }
                    }
                  }
                },
                "MsoMdoc": {
                  "value": {
                    "pres_def_id": "42c870ae-b605-4121-b5e3-1e6bb3a00c6f",
                    "vp_formats": {
                      "mso_mdoc": {
                        "alg": [
                          "ES256"
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_uri": {
                      "type": "string"
                    },
                    "request": {
                      "type": "object",
                      "properties": {
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        },
                        "request_id": {
                          "type": "string"
                        },
                        "pres_def_id": {
                          "type": "string"
                        },
                        "vp_formats": {
                          "type": "object"
                        }
                      }
                    },
                    "presentation": {
                      "type": "object",
                      "properties": {
                        "state": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        },
                        "presentation_id": {
                          "type": "string"
                        },
                        "pres_def_id": {
                          "type": "object"
                        },
                        "request_id": {
                          "type": "object"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Sdjwt": {
                    "value": {
                      "request_uri": "openid://?request_uri=https%3A//example/oid4vc/tenant/c286d1c7-c548-48d1-8580-76d3fe317bff/oid4vp/request/6c3c3638-5076-4d25-b5a2-d6e06d0ea4be",
                      "request": {
                        "created_at": "2025-06-23T22:06:36.321837Z",
                        "updated_at": "2025-06-23T22:06:36.321837Z",
                        "request_id": "6c3c3638-5076-4d25-b5a2-d6e06d0ea4be",
                        "pres_def_id": "500d4c56-5aed-4753-8add-383833335f5c",
                        "vp_formats": {
                          "vc+sd-jwt": {
                            "sd-jwt_alg_values": [
                              "ES256",
                              "ES384"
                            ],
                            "kb-jwt_alg_values": [
                              "ES256",
                              "ES384"
                            ]
                          }
                        }
                      },
                      "presentation": {
                        "state": "request-created",
                        "created_at": "2025-06-23T22:06:36.327233Z",
                        "updated_at": "2025-06-23T22:06:36.327233Z",
                        "presentation_id": "852ab8c5-2938-40d3-8ea5-02cfc4b91552",
                        "pres_def_id": "500d4c56-5aed-4753-8add-383833335f5c",
                        "request_id": "6c3c3638-5076-4d25-b5a2-d6e06d0ea4be"
                      }
                    }
                  },
                  "Jwtvc": {
                    "value": {
                      "request_uri": "openid://?request_uri=https%3A//example/oid4vc/tenant/c286d1c7-c548-48d1-8580-76d3fe317bff/oid4vp/request/9a0a052e-6f07-49f0-9456-2d57b2365673",
                      "request": {
                        "created_at": "2025-06-23T22:06:50.795437Z",
                        "updated_at": "2025-06-23T22:06:50.795437Z",
                        "request_id": "9a0a052e-6f07-49f0-9456-2d57b2365673",
                        "pres_def_id": "1dcacd31-533a-4246-9b4b-75d501f32576",
                        "vp_formats": {
                          "jwt_vc": {
                            "alg": [
                              "ES256",
                              "EdDSA"
                            ]
                          },
                          "jwt_vp": {
                            "alg": [
                              "ES256",
                              "EdDSA"
                            ]
                          },
                          "jwt_vc_json": {
                            "alg": [
                              "ES256",
                              "EdDSA"
                            ]
                          },
                          "jwt_vp_json": {
                            "alg": [
                              "ES256",
                              "EdDSA"
                            ]
                          }
                        }
                      },
                      "presentation": {
                        "state": "request-created",
                        "created_at": "2025-06-23T22:06:50.799338Z",
                        "updated_at": "2025-06-23T22:06:50.799338Z",
                        "presentation_id": "ef545064-f2f7-4c8b-aee6-4511c24db85f",
                        "pres_def_id": "1dcacd31-533a-4246-9b4b-75d501f32576",
                        "request_id": "9a0a052e-6f07-49f0-9456-2d57b2365673"
                      }
                    }
                  },
                  "MsoMdoc": {
                    "value": {
                      "request_uri": "openid4vp://?client_id=did%3Ajwk%3A...&request_uri=https%3A//example/oid4vc/tenant/ab37c90e-fff8-4498-9ffb-1c24a8276d5a/oid4vp/request/43050ce4-bfb4-4454-b5de-9bbd1c564a85",
                      "request": {
                        "created_at": "2025-06-23T22:07:10.000000Z",
                        "updated_at": "2025-06-23T22:07:10.000000Z",
                        "request_id": "43050ce4-bfb4-4454-b5de-9bbd1c564a85",
                        "pres_def_id": "42c870ae-b605-4121-b5e3-1e6bb3a00c6f",
                        "vp_formats": {
                          "mso_mdoc": {
                            "alg": [
                              "ES256"
                            ]
                          }
                        }
                      },
                      "presentation": {
                        "state": "request-created",
                        "created_at": "2025-06-23T22:07:10.000000Z",
                        "updated_at": "2025-06-23T22:07:10.000000Z",
                        "presentation_id": "5e871b45-3821-4a94-8695-303517939afb",
                        "pres_def_id": "42c870ae-b605-4121-b5e3-1e6bb3a00c6f",
                        "request_id": "43050ce4-bfb4-4454-b5de-9bbd1c564a85"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/presentations": {
      "get": {
        "summary": "Get all presentations",
        "description": "This endpoint retrieves all presentations.",
        "tags": [
          "Presentations"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "sort-field",
            "schema": {
              "type": "string"
            },
            "description": "The field to sort by (default updated_at)."
          },
          {
            "in": "query",
            "name": "sort-direction",
            "schema": {
              "type": "string"
            },
            "description": "The direction to sort (ASC or DESC, default DESC)."
          },
          {
            "in": "query",
            "name": "page-size",
            "schema": {
              "type": "integer"
            },
            "description": "The number of presentations per page (default 20)."
          },
          {
            "in": "query",
            "name": "current-page",
            "schema": {
              "type": "integer"
            },
            "description": "The current page number (default 1)."
          },
          {
            "in": "query",
            "name": "item-count",
            "schema": {
              "type": "integer"
            },
            "description": "The total number of items."
          },
          {
            "in": "query",
            "name": "state-filter",
            "schema": {
              "type": "string"
            },
            "description": "If provided, returns only presentations with this state."
          },
          {
            "in": "query",
            "name": "contact-id",
            "schema": {
              "type": "string"
            },
            "description": "If provided, returns only presentations for this contact_id."
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of presentations",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "params": {
                      "type": "object",
                      "properties": {
                        "sort": {
                          "type": "array"
                        },
                        "pageSize": {
                          "type": "integer"
                        },
                        "currentPage": {
                          "type": "integer"
                        },
                        "pageCount": {
                          "type": "integer"
                        },
                        "itemCount": {
                          "type": "integer"
                        },
                        "stateFilter": {
                          "type": "string"
                        },
                        "contactIdFilter": {
                          "type": "string"
                        }
                      }
                    },
                    "rows": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "count": {
                      "type": "integer"
                    }
                  }
                },
                "example": {
                  "params": {
                    "sort": [
                      [
                        "created_at",
                        "DESC"
                      ]
                    ],
                    "pageSize": 20,
                    "currentPage": 1,
                    "pageCount": 1,
                    "itemCount": 1,
                    "stateFilter": null,
                    "contactIdFilter": null
                  },
                  "rows": [
                    {
                      "presentation_exchange_id": "ed453b46-6d4b-4777-a5ca-e5693d45108e",
                      "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                      "trace": false,
                      "connection_id": "0ecc0b3c-4d15-4660-b8da-15d0feeded59",
                      "role": "verifier",
                      "verified": true,
                      "presentation_created_at": "2025-06-26T22:44:44.872Z",
                      "presentation_updated_at": "2025-06-26T22:45:10.823Z",
                      "presentation_request_dict": {
                        "@type": "https://didcomm.org/present-proof/2.0/request-presentation",
                        "@id": "49dfcc74-770f-4e42-a291-0b6713b5ada0",
                        "comment": "Requesting Presentation v2.0",
                        "will_confirm": true,
                        "formats": [
                          {
                            "attach_id": "indy",
                            "format": "hlindy/proof-req@v2.0"
                          }
                        ],
                        "request_presentations~attach": [
                          {
                            "@id": "indy",
                            "mime-type": "application/json",
                            "data": {
                              "base64": "eyJuYW1lIjogIlByb29mIFJlcXVlc3QgdjIiLCAibm9uY2UiOiAiMTMwMjE2MjA2MTgzOTQ3NjE5MTU5MjQ5MjA1MjIxNTQyMDI5NDE5MzEyMjI4MTc5NzIyNDE3MjU4MTI0MjI0NTk3NTY5OTMzMTAxMTA2MTg1MTgwMjM1MjE2MTc4MTE1MzkyNjI0OSIsICJyZXF1ZXN0ZWRfcHJlZGljYXRlcyI6IHt9LCAicmVxdWVzdGVkX2F0dHJpYnV0ZXMiOiB7IjYxMTQyZjg0LTIyNGUtNDhjZS05Zjc4LTk5ZjE2NDAyMmIxNyI6IHsibmFtZXMiOiBbInZlcmlmaWVkX2F0IiwgImxvY2FsX3BhcnQiLCAiYWRkcmVzcyIsICJkb21haW4iXSwgInJlc3RyaWN0aW9ucyI6IFt7InNjaGVtYV9pZCI6ICJLVDRMdEw3SEVNZVBxUVN5S1ZvZjdnOjI6RW1haWw6MS4wIn1dfX0sICJ2ZXJzaW9uIjogIjEuMCJ9"
                            }
                          }
                        ]
                      },
                      "initiator": "self",
                      "presentation_request": {
                        "name": "Proof Request v2",
                        "nonce": "1302162061839476191592492052215420294193122281797224172581242245975699331011061851802352161781153926249",
                        "requested_predicates": {},
                        "requested_attributes": {
                          "61142f84-224e-48ce-9f78-99f164022b17": {
                            "names": [
                              "verified_at",
                              "local_part",
                              "address",
                              "domain"
                            ],
                            "restrictions": [
                              {
                                "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0"
                              }
                            ]
                          }
                        },
                        "version": "1.0"
                      },
                      "state": "done",
                      "thread_id": "49dfcc74-770f-4e42-a291-0b6713b5ada0",
                      "auto_present": false,
                      "presentation": null,
                      "contact_label": "Jimbo Jones",
                      "contact_id": "8dba10d6-00d5-4f3a-ac8f-834211c9cbb9",
                      "created_at": "2025-06-26T22:44:44.897Z",
                      "updated_at": "2025-06-26T22:45:10.847Z"
                    }
                  ],
                  "count": 1
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/presentations/{presentation_exchange_id}": {
      "get": {
        "summary": "Get a presentation by ID",
        "description": "This endpoint retrieves a presentation by its exchange id.",
        "tags": [
          "Presentations"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "presentation_exchange_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The presentation exchange id of the presentation to retrieve."
          }
        ],
        "responses": {
          "200": {
            "description": "Presentation record retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "record": {
                      "type": "object",
                      "description": "The retrieved presentation record."
                    }
                  }
                },
                "example": {
                  "presentation_exchange_id": "ed453b46-6d4b-4777-a5ca-e5693d45108e",
                  "wallet_id": "6b4ae41c-9c8a-49fd-9efa-fa0436d40b5c",
                  "trace": false,
                  "connection_id": "0ecc0b3c-4d15-4660-b8da-15d0feeded59",
                  "role": "verifier",
                  "verified": true,
                  "presentation_created_at": "2025-06-26T22:44:44.872Z",
                  "presentation_updated_at": "2025-06-26T22:45:10.823Z",
                  "presentation_request_dict": {
                    "@type": "https://didcomm.org/present-proof/2.0/request-presentation",
                    "@id": "49dfcc74-770f-4e42-a291-0b6713b5ada0",
                    "comment": "Requesting Presentation v2.0",
                    "will_confirm": true,
                    "formats": [
                      {
                        "attach_id": "indy",
                        "format": "hlindy/proof-req@v2.0"
                      }
                    ],
                    "request_presentations~attach": [
                      {
                        "@id": "indy",
                        "mime-type": "application/json",
                        "data": {
                          "base64": "eyJuYW1lIjogIlByb29mIFJlcXVlc3QgdjIiLCAibm9uY2UiOiAiMTMwMjE2MjA2MTgzOTQ3NjE5MTU5MjQ5MjA1MjIxNTQyMDI5NDE5MzEyMjI4MTc5NzIyNDE3MjU4MTI0MjI0NTk3NTY5OTMzMTAxMTA2MTg1MTgwMjM1MjE2MTc4MTE1MzkyNjI0OSIsICJyZXF1ZXN0ZWRfcHJlZGljYXRlcyI6IHt9LCAicmVxdWVzdGVkX2F0dHJpYnV0ZXMiOiB7IjYxMTQyZjg0LTIyNGUtNDhjZS05Zjc4LTk5ZjE2NDAyMmIxNyI6IHsibmFtZXMiOiBbInZlcmlmaWVkX2F0IiwgImxvY2FsX3BhcnQiLCAiYWRkcmVzcyIsICJkb21haW4iXSwgInJlc3RyaWN0aW9ucyI6IFt7InNjaGVtYV9pZCI6ICJLVDRMdEw3SEVNZVBxUVN5S1ZvZjdnOjI6RW1haWw6MS4wIn1dfX0sICJ2ZXJzaW9uIjogIjEuMCJ9"
                        }
                      }
                    ]
                  },
                  "initiator": "self",
                  "presentation_request": {
                    "name": "Proof Request v2",
                    "nonce": "1302162061839476191592492052215420294193122281797224172581242245975699331011061851802352161781153926249",
                    "requested_predicates": {},
                    "requested_attributes": {
                      "61142f84-224e-48ce-9f78-99f164022b17": {
                        "names": [
                          "verified_at",
                          "local_part",
                          "address",
                          "domain"
                        ],
                        "restrictions": [
                          {
                            "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0"
                          }
                        ]
                      }
                    },
                    "version": "1.0"
                  },
                  "state": "done",
                  "thread_id": "49dfcc74-770f-4e42-a291-0b6713b5ada0",
                  "auto_present": false,
                  "presentation": null,
                  "contact_label": "Jimbo Jones",
                  "contact_id": "8dba10d6-00d5-4f3a-ac8f-834211c9cbb9",
                  "created_at": "2025-06-26T22:44:44.897Z",
                  "updated_at": "2025-06-26T22:45:10.847Z"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Presentation not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Presentation record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/presentations/{presentation_exchange_id}/pii": {
      "post": {
        "summary": "Remove PII from a presentation",
        "description": "This endpoint manually removes PII from a presentation record.",
        "tags": [
          "Presentations"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "presentation_exchange_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The presentation exchange ID.",
            "example": "ed453b46-6d4b-4777-a5ca-e5693d45108e"
          }
        ],
        "responses": {
          "200": {
            "description": "PII removed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Presentation PII removed"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Presentation record not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Presentation record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/settings/webhook-target-urls": {
      "put": {
        "summary": "Set webhook target URLs",
        "description": "This endpoint allows you to set webhook target URLs.",
        "tags": [
          "Settings"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "urls": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uri",
                      "example": "http://example.com/webhook"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook target URLs set successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "webhookTargetUrls": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    }
                  }
                },
                "example": [
                  "http://example.com/webhook"
                ]
              }
            }
          },
          "400": {
            "description": "Bad request. Invalid parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Invalid URL format: http://invalid-url"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "Get all webhook target URLs",
        "description": "This endpoint retrieves all webhook target URLs.",
        "tags": [
          "Settings"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "A list of webhook target URLs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "webhookTargetUrls": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    }
                  }
                },
                "example": [
                  "http://example.com/webhook"
                ]
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/settings/pii": {
      "post": {
        "summary": "Set PII settings",
        "description": "Configure PII (Personally Identifiable Information) settings including retention period and removal on API access.",
        "tags": [
          "Settings"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "piiRetentionSeconds",
                  "piiRemoveOnApiAccess"
                ],
                "properties": {
                  "piiRetentionSeconds": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Number of seconds to retain PII data after a workflow completes. Use 0 to disable automatic removal.",
                    "example": 86400
                  },
                  "piiRemoveOnApiAccess": {
                    "type": "boolean",
                    "description": "Whether to remove PII data after it has been accessed via API",
                    "example": false
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "PII settings updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "piiRetentionSeconds": {
                      "type": "integer",
                      "example": 86400
                    },
                    "piiRemoveOnApiAccess": {
                      "type": "boolean",
                      "example": false
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Invalid parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Invalid request format."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "Get PII settings",
        "description": "Retrieve the current PII settings for the wallet.",
        "tags": [
          "Settings"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "PII settings retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "piiRetentionSeconds": {
                      "type": "integer",
                      "example": 86400
                    },
                    "piiRemoveOnApiAccess": {
                      "type": "boolean",
                      "example": false
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/settings/pii/remove-all": {
      "post": {
        "summary": "Remove all stored PII",
        "description": "Manually trigger the removal of all stored PII data for this wallet.",
        "tags": [
          "Settings"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "PII removal completed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "credentialsTotal": {
                      "type": "integer",
                      "description": "Total number of final state credentials checked"
                    },
                    "credentialsCleared": {
                      "type": "integer",
                      "description": "Number of credentials cleared"
                    },
                    "credentialFailures": {
                      "type": "integer",
                      "description": "Number of credentials failed to clear"
                    },
                    "presentationsTotal": {
                      "type": "integer",
                      "description": "Total number of final state presentations checked"
                    },
                    "presentationsCleared": {
                      "type": "integer",
                      "description": "Number of presentations cleared"
                    },
                    "presentationFailures": {
                      "type": "integer",
                      "description": "Number of presentations failed to clear"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/status-list/defs": {
      "post": {
        "summary": "Post a status list definition.",
        "description": "Post a status list definition.",
        "tags": [
          "Status List"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "publish",
            "schema": {
              "type": "boolean"
            },
            "description": "If true, publish status list on creation at the did:indy provided in `publication.did`. False by default."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status_purpose": {
                    "type": "string",
                    "description": "The purpose of the status. Defaults to \"revocation\".",
                    "example": "revocation"
                  },
                  "status_message": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "example": "0x00"
                        },
                        "message": {
                          "type": "string",
                          "example": "active"
                        }
                      }
                    },
                    "example": [
                      {
                        "status": "0x00",
                        "message": "active"
                      },
                      {
                        "status": "0x01",
                        "message": "revoked"
                      }
                    ]
                  },
                  "status_size": {
                    "type": "integer",
                    "description": "The size of the status in bits.",
                    "example": 1
                  },
                  "shard_size": {
                    "type": "integer",
                    "description": "The size of a shard, between 1 and list_size.",
                    "example": 1024
                  },
                  "list_size": {
                    "type": "integer",
                    "description": "Number of entries in status list, minimum 131072",
                    "example": 131072
                  },
                  "publication": {
                    "type": "object",
                    "properties": {
                      "did": {
                        "type": "string",
                        "example": "did:indy:indicio:test:W3v5casouvLGCwVx6KGgYG"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully created a status list definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "publication": {
                      "type": "object",
                      "properties": {
                        "published": {
                          "type": "boolean",
                          "description": "Whether the status list was published",
                          "example": true
                        },
                        "did": {
                          "type": "string",
                          "description": "did where the list has been published",
                          "example": "did:indy:indicio:test:W3v5casouvLGCwVx6KGgYG"
                        },
                        "status_type": {
                          "type": "string",
                          "description": "format in which the list has been published",
                          "example": "w3c"
                        }
                      }
                    }
                  }
                },
                "example": {
                  "created_at": "2025-06-27T20:35:15.473651Z",
                  "updated_at": "2025-06-27T20:35:15.996608Z",
                  "id": "2321788b-a636-40bc-ae93-5a9a0bc210d3",
                  "supported_cred_id": "16fe7a59-5a82-422e-a274-45e2f89a14dc",
                  "status_purpose": "revocation",
                  "status_message": [],
                  "status_size": 1,
                  "shard_size": 1024,
                  "list_size": 131072,
                  "list_seed": "ZFlUArwo3VtgC8TMU9Mypkv8yKEmoB8k",
                  "list_index": 0,
                  "list_number": "0",
                  "next_list_number": "1",
                  "list_numbers": [
                    "0",
                    "1"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error"
          }
        }
      },
      "get": {
        "summary": "Query status list definitions.",
        "description": "Retrieves the status lists, filtered by supported credential ID or status purpose.",
        "tags": [
          "Status List"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "status_purpose",
            "schema": {
              "type": "string"
            },
            "description": "Filter by status purpose."
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the status list definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "example": [
                  {
                    "created_at": "2025-06-27T20:35:15.473651Z",
                    "updated_at": "2025-06-27T20:35:15.996608Z",
                    "id": "2321788b-a636-40bc-ae93-5a9a0bc210d3",
                    "supported_cred_id": "16fe7a59-5a82-422e-a274-45e2f89a14dc",
                    "status_purpose": "revocation",
                    "status_message": [],
                    "status_size": 1,
                    "shard_size": 1024,
                    "list_size": 131072,
                    "list_seed": "ZFlUArwo3VtgC8TMU9Mypkv8yKEmoB8k",
                    "list_index": 0,
                    "list_number": "0",
                    "next_list_number": "1",
                    "list_numbers": [
                      "0",
                      "1"
                    ]
                  }
                ]
              }
            }
          },
          "404": {
            "description": "Status list definitions not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/status-list/defs/{id}": {
      "get": {
        "summary": "Get a status list definition by ID.",
        "description": "Retrieve the status list.",
        "tags": [
          "Status List"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the status list definition to retrieve."
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the status list definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "The status list definition ID."
                      }
                    }
                  }
                },
                "example": {
                  "created_at": "2025-06-27T20:35:15.473651Z",
                  "updated_at": "2025-06-27T20:35:15.996608Z",
                  "id": "2321788b-a636-40bc-ae93-5a9a0bc210d3",
                  "supported_cred_id": "16fe7a59-5a82-422e-a274-45e2f89a14dc",
                  "status_purpose": "revocation",
                  "status_message": [],
                  "status_size": 1,
                  "shard_size": 1024,
                  "list_size": 131072,
                  "list_seed": "ZFlUArwo3VtgC8TMU9Mypkv8yKEmoB8k",
                  "list_index": 0,
                  "list_number": "0",
                  "next_list_number": "1",
                  "list_numbers": [
                    "0",
                    "1"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Status list not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      },
      "delete": {
        "summary": "Delete a status list definition by ID.",
        "description": "Delete the status list.",
        "tags": [
          "Status List"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the status list definition to delete."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "recursive_delete": {
                    "type": "boolean",
                    "description": "Delete all underlying status list and entries recursively.",
                    "example": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully removed the status list definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "The status list definition ID.",
                        "example": "1"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Status list not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/status-list/entries/{credential_exchange_id}": {
      "get": {
        "summary": "Get a status list credential by credential exchange ID.",
        "description": "Delete the status list.",
        "tags": [
          "Status List"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "credential_exchange_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the credential."
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the status list credential.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "list": {
                      "type": "integer",
                      "description": "The status list number.",
                      "example": 1
                    },
                    "index": {
                      "type": "integer",
                      "description": "The status list index.",
                      "example": 1
                    },
                    "status": {
                      "type": "string",
                      "description": "The status bitstring.",
                      "example": "01"
                    },
                    "assigned": {
                      "type": "boolean",
                      "description": "Status assigned.",
                      "example": true
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Credential not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/status-list/entries/revoke/{credential_exchange_id}": {
      "patch": {
        "summary": "Update a status list credential's status.",
        "description": "Update a status list credential's status.",
        "tags": [
          "Status List"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "credential_exchange_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the credential."
          },
          {
            "in": "query",
            "name": "update",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Whether to automatically update the published status list after revocation. True by default."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "description": "The status bitstring.",
                    "example": "01"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved the status list credential.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "list": {
                      "type": "integer",
                      "description": "The status list number.",
                      "example": 1
                    },
                    "index": {
                      "type": "integer",
                      "description": "The status list index.",
                      "example": 1
                    },
                    "status": {
                      "type": "string",
                      "description": "The status bitstring.",
                      "example": "01"
                    },
                    "assigned": {
                      "type": "boolean",
                      "description": "Status assigned.",
                      "example": true
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Credential not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/status-list/entries/batch-revoke": {
      "patch": {
        "summary": "Update multiple status list credentials' statuses at a time.",
        "description": "Update multiple status list credentials' status at a time.",
        "tags": [
          "Status List"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "update",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Whether to automatically update the published status list after revocation. True by default."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "credential_exchange_id": {
                      "type": "string",
                      "description": "Identifier of the credential.",
                      "example": "string"
                    },
                    "status": {
                      "type": "string",
                      "description": "The status bitstring.",
                      "example": "01"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved the status list credential.",
            "content": {
              "application/json": {
                "schema": {
                  "array": null,
                  "items": {
                    "type": "object",
                    "properties": {
                      "list": {
                        "type": "integer",
                        "description": "The status list number.",
                        "example": 1
                      },
                      "index": {
                        "type": "integer",
                        "description": "The status list index.",
                        "example": 1
                      },
                      "status": {
                        "type": "string",
                        "description": "The status bitstring.",
                        "example": "01"
                      },
                      "assigned": {
                        "type": "boolean",
                        "description": "Status assigned.",
                        "example": true
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Credential not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/v1/status-list/defs/{def_id}/publish": {
      "put": {
        "summary": "Publish a status list definition.",
        "description": "Publish a status list definition.",
        "tags": [
          "Status List"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "def_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the status list definition."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "did": {
                    "type": "string",
                    "description": "DID.",
                    "example": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs"
                  },
                  "verification_method": {
                    "type": "string",
                    "description": "Verification method.",
                    "example": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs#assert"
                  },
                  "status_type": {
                    "type": "string",
                    "description": "Status Type.",
                    "example": "w3c"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully published the status list definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "published": true,
                  "definition_id": "249cc470-f20c-43c9-a8e4-2f638848c4c6",
                  "status_lists": [
                    {
                      "iss": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs",
                      "nbf": 1752096949,
                      "jti": "urn:uuid:0",
                      "sub": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/0",
                      "vc": {
                        "@context": [
                          "https://www.w3.org/ns/credentials/v2"
                        ],
                        "id": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/0",
                        "type": [
                          "VerifiableCredential",
                          "BitstringStatusListCredential"
                        ],
                        "issuer": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs",
                        "validFrom": "2025-07-09T21:35:49.840088+00:00",
                        "validUntil": "2026-07-09T21:35:49.840088+00:00",
                        "credentialSubject": {
                          "id": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/0#list",
                          "type": "BitstringStatusList",
                          "statusPurpose": "revocation",
                          "encodedList": "H4sIALXgbmgC_-3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAAAAAIC3AYbSVKsAQAAA"
                        }
                      }
                    },
                    {
                      "iss": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs",
                      "nbf": 1752096949,
                      "jti": "urn:uuid:1",
                      "sub": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/1",
                      "vc": {
                        "@context": [
                          "https://www.w3.org/ns/credentials/v2"
                        ],
                        "id": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/1",
                        "type": [
                          "VerifiableCredential",
                          "BitstringStatusListCredential"
                        ],
                        "issuer": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs",
                        "validFrom": "2025-07-09T21:35:49.860404+00:00",
                        "validUntil": "2026-07-09T21:35:49.860404+00:00",
                        "credentialSubject": {
                          "id": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/1#list",
                          "type": "BitstringStatusList",
                          "statusPurpose": "revocation",
                          "encodedList": "H4sIALXgbmgC_-3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAAAAAIC3AYbSVKsAQAAA"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Status list not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/api/subwallet/create": {
      "post": {
        "summary": "Create a new subwallet",
        "description": "This endpoint allows you to create a new subwallet by providing a wallet name and an optional label.",
        "tags": [
          "Subwallet - super-admin role only"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "wallet_name"
                ],
                "properties": {
                  "wallet_name": {
                    "type": "string",
                    "description": "The name of the subwallet to be created.",
                    "example": "mySubwallet"
                  },
                  "label": {
                    "type": "string",
                    "description": "An optional label for the subwallet.",
                    "example": "My Subwallet Label"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Subwallet created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "wallet_id": {
                      "type": "string",
                      "description": "The ID of the created subwallet.",
                      "example": 1
                    },
                    "token": {
                      "type": "string",
                      "description": "A token for the created subwallet.",
                      "example": "abcdef123456"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Subwallet creation failed due to missing wallet name.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Error message indicating the reason for failure.",
                      "example": "Subwallet creation failed. Subwallet name is required."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal server error while creating subwallet.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Error creating subwallet"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/subwallets": {
      "get": {
        "summary": "Retrieve all subwallets",
        "description": "This endpoint allows you to retrieve all subwallets created under this base admin.",
        "tags": [
          "Subwallet - super-admin role only"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved subwallets successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "wallet_id": {
                        "type": "string",
                        "description": "The ID of the retrieved subwallet.",
                        "example": 1
                      },
                      "token": {
                        "type": "string",
                        "description": "A token for the retrieved subwallet.",
                        "example": "abcdef123456"
                      },
                      "label": {
                        "type": "string",
                        "description": "A label for the retrieved subwallet.",
                        "example": "MySubwallet"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal server error while retrieving subwallets.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "There was a problem retrieving subwallets"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/subwallets/{wallet_id}": {
      "get": {
        "summary": "Retrieve subwallet by wallet_id",
        "description": "This endpoint allows you to retrieve a subwallet by its wallet_id",
        "tags": [
          "Subwallet - super-admin role only"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the subwallet"
          }
        ],
        "responses": {
          "200": {
            "description": "A subwallet record",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "wallet_id": {
                      "type": "string",
                      "description": "The ID of the retrieved subwallet.",
                      "example": 1
                    },
                    "token": {
                      "type": "string",
                      "description": "A token for the retrieved subwallet.",
                      "example": "abcdef123456"
                    },
                    "label": {
                      "type": "string",
                      "description": "A label for the retrieved subwallet.",
                      "example": "MySubwallet"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Subwallet record not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Subwallet record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error while retrieving a subwallet.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "There was a problem retrieving subwallet"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/apikey/create": {
      "post": {
        "summary": "Create a new API key",
        "description": "Generates a new API key and stores its HMAC in the database. API key names must be unique per wallet.",
        "tags": [
          "Subwallet - super-admin role only"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "wallet_id": {
                    "type": "string",
                    "description": "The ID of the wallet for which the API key is being created."
                  },
                  "name": {
                    "type": "string",
                    "description": "A descriptive label for the API key."
                  },
                  "roles": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "The roles associated with the API key."
                  },
                  "expires_at": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true,
                    "description": "Optional ISO-8601 timestamp when the API key expires. Omit or set to null for no expiration."
                  }
                },
                "example": {
                  "wallet_id": "wallet123",
                  "name": "CI worker",
                  "roles": [
                    "admin"
                  ],
                  "expires_at": "2026-01-01T00:00:00.000Z"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "API key successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "api_key": {
                      "type": "string",
                      "description": "The generated API key."
                    },
                    "key_id": {
                      "type": "string",
                      "description": "The ID of the stored HMACed API key."
                    },
                    "name": {
                      "type": "string",
                      "description": "The saved label for the API key."
                    },
                    "status": {
                      "type": "string",
                      "description": "Status message."
                    },
                    "expires_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "The selected expiration timestamp, if provided."
                    }
                  },
                  "example": {
                    "api_key": "abcdef123456",
                    "key_id": "key123",
                    "name": "CI worker",
                    "status": "API key successfully created.",
                    "expires_at": "2026-01-01T00:00:00.000Z"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Missing or invalid parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Error message."
                    }
                  },
                  "example": {
                    "error": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Error message."
                    }
                  },
                  "example": {
                    "error": "Internal server error"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/apikey/revoke": {
      "post": {
        "summary": "Revoke an API key",
        "description": "This endpoint revokes an API key by deleting it for the specified wallet and name.",
        "tags": [
          "Subwallet - super-admin role only"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "wallet_id",
                  "name"
                ],
                "properties": {
                  "wallet_id": {
                    "type": "string",
                    "description": "The ID of the wallet associated with the API key.",
                    "example": "wallet123"
                  },
                  "name": {
                    "type": "string",
                    "description": "The name of the API key to be revoked.",
                    "example": "CI worker"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "API key successfully revoked",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "description": "Status message indicating the API key was successfully revoked."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Missing or invalid parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Error message indicating what went wrong."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "API key record not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "API key record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/fetch-taa": {
      "post": {
        "summary": "Fetch the TAA",
        "description": "This endpoint fetches the Transaction Author Agreement (TAA) using the provided API key.",
        "tags": [
          "TAA"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "TAA fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "taa": {
                      "type": "object",
                      "description": "The fetched TAA."
                    }
                  }
                },
                "example": {
                  "aml_record": {
                    "aml": {
                      "at_submission": "The agreement was reviewed by the user and accepted at the time of submission of this transaction.",
                      "for_session": "The agreement was reviewed by the user and accepted at some point in the user’s session prior to submission.",
                      "on_file": "An authorized person accepted the agreement, and such acceptance is on file with the user’s organization.",
                      "product_eula": "The agreement was included in the software product’s terms and conditions as part of a license to the end user.",
                      "service_agreement": "The agreement was included in the terms and conditions the user accepted as part of contracting a service.",
                      "wallet_agreement": "The agreement was reviewed by the user and this affirmation was persisted in the user’s wallet for use during submission."
                    },
                    "amlContext": "https://raw.githubusercontent.com/Indicio-tech/indicio-network/main/TAA/AML.md",
                    "version": "1.0"
                  },
                  "taa_record": {
                    "digest": "c965dd01fec099ea95babaea3031bc09905432d3d7f1519bc0b99971aece8592",
                    "ratification_ts": 1606435200,
                    "text": "Indicio Transaction Author Agreement \n\nVersion 1.3\n\n11/10/2020\n\n**Summary:**\n\nThis summary is to help you understand your obligations when writing to the Indicio Network, which is composed of a TestNet, DemoNet, and MainNet. It does not have any legal effect or replace the full legal text of the agreement provided below it.\n\n\n\n*   We define the Transaction Author role (or any role described in this statement that performs the functions of a Transaction Author) as one of using an application to add transactions to the Indicio Network for the purpose of issuing Credentials.  \n \nCredential issuing transactions include, but may not be limited to, writing Schema and Credential Definitions, unprivileged DIDs, altering DID attributes, creating Revocation Registries, and updating Revocation Registries. \n\n*   This agreement grants you the Transaction Author permission to write data to the Indicio Network and its component Networks, the Indicio TestNet, DemoNet, and MainNet under certain terms and conditions.  \n\n*   You represent and warrant that the data you are writing does not violate any applicable laws or infringe the rights of any other party.\n\n     \n\n*   You understand the data you write to the TestNet and DemoNet is public but not permanent, and in accordance with the Indicio TestNet agreement will be erased by periodic resets of the TestNet and DemoNet. \n\n*   You understand that any data you write to the MainNet is public and permanent and cannot be erased. This includes public keys.  \n\n*   If it is determined that the data you wrote violated this agreement, Indicio can impose penalties, including suspension or termination of this agreement, and may take steps to block public access to this data through creating a Tombstone.  \n\n*   Indicio makes no promises about the reliability or correctness of the data stored on the Indicio Network or the operation of the Indicio Network. \n\n**Agreement.**\n\nThis Transaction Author Agreement (the “**Agreement**”) is entered into on the date you accepted this Agreement (the “**Effective Date**”) between Indicio Inc., a Benefit Corporation organized under the laws of the State of Delaware, United States of America (“**Indicio**”), and you (“**Transaction Author**”), either an entity or a natural person acting as an Individual. \n\nIndicio and the Transaction Author are individually referred to herein as a “Party” and collectively as the “Parties.” All references to “you” throughout this Agreement will include that person or entity. You represent that you are authorized to accept this Agreement on that person’s or entity’s behalf, and in the event you or the person or entity violates this Agreement, the person or entity agrees to be responsible to Indicio. \n\nBy clicking “Accept” or similar or writing Transactions to the Indicio Network, the Transaction Author agrees to be bound by this Agreement and all terms incorporated by reference. If the Transaction Author does not agree to this Agreement in its entirety, do not click “Accept” or write Transactions to the Indicio Network. \n\nIf Indicio makes material changes to this Agreement, we will notify you by posting a notice on our website prior to the effective date of the changes. By continuing to act as a Transaction Author or by otherwise writing Transactions on the Indicio Network after we post changes to our website, you agree to be bound by the revised Agreement. \n\n\nWHEREAS, the Transaction Author desires to write Transactions to the Indicio Network\n\n(each a “**Transaction**”); and \n\nWHEREAS, subject to the Transaction Author complying with the terms and conditions of this Agreement, Indicio grants permission to the Transaction Author to write Transactions to the Indicio Network; \n\nFOR GOOD AND VALUABLE CONSIDERATION, THE SUFFICIENCY OF WHICH IS HEREBY ACKNOWLEDGED, THE PARTIES AGREE AS FOLLOWS: \n\n\n## 1. \tDefinitions\n\n*Pertaining to the network:*\n\n\n\n1. \tThe **Indicio Governance Framework** refers to Indicio’s governance public benefit mission, policies, and rules available at LINK or any successor website.  \n\n\n2. \tThe **Indicio Ledger** is the collective term for all the ledgers on the Indicio Network, including the MainNet, DemoNet, and TestNet, and their sub ledgers, viz., pool, admin, main, config., etc. \n\n\n3. \tThe **Indicio Network** is a public, permissioned network built on Hyperledger Indy, Aries, and Ursa, and consisting of a MainNet, DemoNet, and TestNet. It is run by Indicio—the genesis node operator for the Network—and the Node Operators, of which Indicio is also a member. Public refers to being able to read and permissioned refers to the ability to write to the ledger. \n\n\n*Network terminology:* \n\n\n\n4.\tA **Credential** is a digital assertion containing a set of claims about the identity attributes of an entity (as per IETF RFC 3986, Uniform Resource Identifier (URI), an entity is a resource of any kind that can be uniquely and independently identified). \n\n\n\n5. \tA **Credential Definition** is a machine-readable definition of the semantic structure of a Credential based on one or more Credential Schemas.  \n\n\n\n6. \tA **Credential Schema** is a machine-readable definition of the semantics of data structure. Schemas define the attributes in a Credential Definition.  \n\n\n\n7. \tA **DID** is the acronym for decentralized identifier, a unique, permanent URL for an identity. \n\n\n\n8. \tA **DID** Document is a machine-readable document describing the public cryptographic keys, service endpoints, and other metadata associated with a DID. Each DID points to a unique DID document on a ledger.  \n\n\n\n9. \tA **Revocation Registry** is a cryptographic data structure for recording the revocation of credentials. \n\n\n\n10.\t**Permissioned Write Access** refers to a network state where “Public Write Access” is not permitted. In this state, Transaction Authors may only write transactions with a signature from an approving Transaction Endorser. \n\n\n\n11. **Public Write Access** refers to the state that a network is in when anyone can become a Transaction Author and write to the ledger. The Indicio Network does not, in its present state, allow Public Write Access.\n\n\n12. **Public Read Access** means that anyone can access, audit, read, or download content on the Ledger, although there may be a fee to do so. \n\n\n\n13. A **Tombstone** is a technical means of blocking public access to a ledger record without erasing that record. It is used only in the event of impermissible public data being written to the ledger in violation of Transaction Author and Endorser agreements.   \n\n\n\n14. A **Transaction** refers to the act of writing Schemas and Credential Definitions to the ledger for the purpose of issuing Credentials, creating Revocation Registries for the purpose of revoking credentials, updating Revocation Registries, creating a DID, adding or editing attributes to a DID, and rotating a DID’s key.   \n\n\n\n15. A **Transaction Author** refers to an entity using an application to write records to the Indicio Network for the purpose of issuing credentials. Credential issuing transactions include, but may not be limited to, writing Schema and Credential Definitions, creating Revocation Registries, and updating Revocation Registries. They can also write DID transactions to the ledger including DID creation, attribute creation and editing, and key rotation. \n\n\n\n16. A **Transaction Endorser** refers to an entity that is authorized to approve a Transaction Author write to the ledger. \n\n\n\n17. A **Trustee** refers to a person authorized to administer the governance and maintenance of the network. Multiple Trustee signatures are required to perform certain administrative and maintenance functions.\n\n\n*Pertaining to data privacy:*\n\n\n18. **Data Controller**  is defined by the EU General Data Protection Regulation (GDPR), the natural or legal person, public authority, agency, or other body which, alone or jointly with others, determines the purposes and means of the processing of Personal Data.\n\n\n19. **Data Processor** is defined by the EU General Data Protection Regulation (GDPR), a natural or legal person, public authority, agency, or other body which processes Personal Data on behalf of a Data Controller**.**\n\n\n20. **Data Protection Laws** mean California’s Consumer Privacy Act (CCPA), the European Union’s General Data Protection Regulation (GDPR), and any other national or international data protection and privacy laws, regulations, and regulatory requirements applicable to a party under this Agreement.  \n\n\n\n21. **Personal Data** means information that relates directly or indirectly to a data subject, including without limitation, names, email addresses, postal addresses, identification numbers, location data, online identifiers, or one or more factors specific to the physical, physiological, genetic, mental, economic, cultural or social identity of the data subject. \n\n\n22. **Node Data** means any information which includes any Personal Data that a Node Operator Processes through the Node.\t\n\n\n23. **Permissible Personal Data** refers to the Personal Data that a Transaction Author writes to the Indicio Network that is permitted under this Agreement and Indicio’s Governance Framework, namely, but not limited to, identification numbers and online identifiers. \n\n\n\n24. **Impermissible Personal Data** refers to personal data that is not covered under Permissible Personal Data and should not be written to the ledger \n\n\n\n25. **Process** or **Processing** means any operation or set of operations that is performed on Transaction data, whether or not by automated means, such as the access, collection, use, storage, disclosure, dissemination, combination, recording, organization, structuring, adaption, alteration, copying, transfer, retrieval, consultation, disposal, restriction, erasure and/or destruction of Transaction data. \n\n\n\n\n## 2. \tPermission to write to the Indicio Network \n\n\n1.\tIndicio hereby grants to the Transaction Author a non-exclusive, non-assignable, non-sublicensable, royalty free, and revocable license to write to and use the Indicio Network in accordance with this Agreement and the applicable Indicio Governance Framework or Indicio TestNet Governance Framework. \n\n\n2.\tTransactions can only be authored through Permissioned Write Access, whereby a Transaction Author can only write to the Indicio Network by using an authorized Transaction Endorser.  \n\n\n\n3.\tOnce an initial Transaction has been written to one of the Indicio Networks by the Transaction Author, the Transaction Author is granted permission to make additional Transactions to update the state of a previous Transaction.\n\n\n\n    An update transaction does not remove the initial transaction, which will remain on the Indicio Main Network (MainNet) due to the immutability of the ledger; and a transaction will remain on Indicio Test Network (TestNet) or Demo Network (DemoNet) until it is reset, which will occur at periodic intervals.  \n\n    A Transaction Author may make an update transaction if and only if the Transaction Author was the author of the initial transaction. Update Transactions are Transactions and are subject to all the terms of this Agreement. \n\n\n## 3. \tTransaction Author obligations \n\n\n*Pertaining to all Transactions, a Transaction Author MUST:*\n\n\n\n1. Comply with any requirements imposed by the Transaction Endorser on the Transaction Author.\n1. Not write Impermissible** **Personal Data to the ledger. \n1. Not write data to the ledger that would violate the intellectual property rights of others. \n\n\n\n\n\n\n## 4.\tPenalties for violating Transaction Author Agreement\n\n\n1. \tIn the event that the transaction author intentionally or inadvertently violates the terms of the Transaction Author and Transaction Endorser agreements and writes Impermissible** **Personal Data to the ledger, Indicio reserves the right to act on behalf of the Node Operators and block public access to that data through creating a Tombstone. \n\n\n2. \tDepending on the severity of an infraction or in the event of repeated infractions, Transaction Endorsers may be required to block endorsement of specific Transaction Authors by the Network Trustees. \n\n\n\n## 5.\tData processing and control under GDPR\n\n\n1. \tIndicio will serve as the designated data controller for the Indicio Network; all roles and rules with respect to Transaction Endorsers complying with GDPR are explained in the Indicio Data Processing Agreement. \n\n\n\n\n\n## 6.\t Term and termination \n\n\n1. \tThis Agreement commences on the Effective Date and shall remain in force until terminated by either Party pursuant to this **Section 6 (Term and Termination)**.  \n\n\n\n\n\n2. \tEither Party may terminate this Agreement: (i) if the other Party has materially defaulted in the performance of any of its obligations under this Agreement and has not cured such default within fifteen (15) business days of receipt of written notice from the non-defaulting Party of such default or (ii) immediately in the event of any government sanctions or other legal measures that make it unlawful for Transaction Author to write Transactions to the Indicio Network.  \n\n\n\n3.\tAdditionally, the Transaction Author may terminate this Agreement upon 30 days’ advance written notice to Indicio and ceasing all use of the Indicio Network. \n\n\n4.\tThe Transaction Author Agreement can be immediately terminated by Indicio if the Transaction Author writes Impermissible Personal Data to the ledger.\n\n\n5.\tUpon termination or expiration of this Agreement for any reason, the rights granted to the Transaction Author by Indicio under this Agreement automatically terminate. \n\n\n6. \tSpecific instructions for relinquishing a validator node are described in the document “Node Operator Termination.” \n\n\n\n## 7. Representations and warranties; disclaimer \n\na. By Indicio:\n\n\n1. \tTHE INDICIO NETWORK IS PROVIDED AS-IS WITH ALL FAULTS. TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, INDICIO MAKES NO REPRESENTATION OR WARRANTY CONCERNING THE ACCURACY, RELIABILITY, OR COMPLETENESS OF ANY INFORMATION OR DATA OBTAINED OR DERIVED THROUGH THE USE OF THE INDICIO NETWORK AS THE INDICIO NETWORK OPERATES ON A DISTRIBUTED NETWORK AND INDICIO DOES NOT CONTROL THE INFORMATION OR DATA WRITTEN TO THE INDICIO NETWORK. INDICIO DISCLAIMS ANY OTHER REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ACCURACY OR COMPLETENESS OF DATA. \n\n\n\n2.\tAs the architect of the Indicio Network and administrator of the Indicio Governance and TestNet Frameworks, Indicio is an independent controller of the Personal Data Transactions. In no event will the Indicio be held liable for the actions or omissions of Transaction Author arising out of any Impermissible** **Personal Data that Transaction Author writes to the Indicio Network in breach of this Agreement and the Indicio Governance and TestNet Governance Framework, including but not limited to any Impermissible Personal Data. Notwithstanding the foregoing, if Transaction Author writes Permissible Personal Data to the Indicio Network in express compliance with this Agreement and the Indicio Governance Framework, Indicio is responsible for the lawfulness of such Processing once such Permissible Personal Data is written to the Indicio Network. \n\n\n\nb. By Transaction Author. Transaction Author represents and warrants: \n\n\n3.\tIf a natural person, he or she is 16 years of age or older.  \n\n\n\n4.\tIt has all necessary rights and permissions to write the Transactions. \n\n\n\n5.\tThe Transactions do not and will not violate any applicable law.  \n\n\n\n6.\tThe Transactions will not contain data or information that infringes on or misappropriates the intellectual property rights of any third party. \n\n\n\n7.\tIt understands that the Indicio Network operates on a distributed network and that Indicio disclaims any responsibilities with respect to access of data from the Indicio Network. \n\n\n\n8.\tIt understands and acknowledges that Indicio does not control the transfer of data between Nodes and over communications facilities, including the internet, and that the Indicio Network may be subject to limitations, delays, and other problems inherent in the use of such communications facilities.  \n\n\n\n9.\tIt understands and acknowledges that there is regulatory uncertainty regarding the Indicio Network’s compliance with Data Protection Laws as it relates to Permissioned Write Access, Public Write Access, and Personal Data, including cross-border transfers of data, Processing of Personal Data, the right to effective erasure of data, as well as the scope and nature of Personal Data itself.  \n\n\n\n10.\tIt understands and acknowledges that Indicio may modify, at any time, the terms of this Agreement and any other agreement or document related to the Indicio Network based on new information, guidance, or Data Protection Laws; and  \n\n\n\n11.\tIt understands and acknowledges that a Node Operator and/or Indicio may obscure a Transaction if (i) the Node Operator or Indicio is required to do so by a court order or applicable law or (ii) the Node Operator or Indicio has evidence that the Transaction violates the terms of this Agreement or any applicable law.\n\n\n\n\n\n## 8.\t Indemnification \n\n\n1.\tTo the fullest extent permitted by applicable law, a Transaction Author will indemnify and hold harmless Indicio, and each of its respective officers, directors, agents, partners and employees (individually and collectively, the “**Indicio Parties**”) from and against any losses, liabilities, claims, demands, damages, expenses or costs (“**Claims**”) brought by a third party arising out of or related to (i) Transaction Author’s access to or use of Indicio Network in violation of this Agreement; (ii) Transaction Author’s violation, misappropriation or infringement of any rights of another (including intellectual property rights or privacy rights); or (iii) Transaction Author’s violation of applicable law.\n\n\n2.\tA Transaction Author agrees to promptly notify the Indicio Parties in writing of any Claims, cooperate with the Indicio Parties in defending such Claims and pay all fees, costs and expenses associated with defending such Claims (including attorneys’ fees). Transaction Author also agrees that the Indicio Parties will have sole control of the defense or settlement, at Indicio’s sole option, of any Claims. This indemnity is in addition to, and not in lieu of, any other indemnities set forth in a written agreement between Transaction Author and Indicio or the other Indicio Parties. \n\n\n\n\n## 9.\t Governing law and forum \n\nThis Agreement is governed by the law of the State of Delaware, without reference to conflict of laws principles; provided that, if Transaction Author is a governmental entity, this Agreement is governed by the law in which such governmental entity is established. All disputes arising out of or in connection with this Agreement shall be finally settled by binding arbitration under the Rules of Arbitration of the International Chamber of Commerce (the “**Rules**”) by a single arbitrator appointed in accordance with said Rules. Arbitration proceedings will be held in Washington, DC. Unless the Parties otherwise mutually agree, such arbitration shall be conducted in the English language by electronic exchange of documents and by video conference. The arbitrator shall issue a reasoned decision, including findings of fact and conclusions of law. The arbitrator shall require exchange by the Parties of documents relevant to the issues raised by any claim, defense, or counterclaim or on which the producing Party may rely in support of or in opposition to any claim, defense, or counterclaim, with due regard for eliminating undue burden and expense and the expedited and lower cost nature of arbitration. At the request of a Party, the arbitrator may at his or her discretion order the deposition of witnesses. Depositions shall be limited to a maximum of three depositions per Party, each of a maximum of four hours duration, unless the arbitrator otherwise determines. * ---Demand for arbitration may be initiated by either Party on fifteen (15) days written notice by email to the other Party’s designated representative, together with a written specification of the grounds for the dispute and the relief requested. By agreeing to binding and non-appealable arbitration, each party understands that they each forever give up and waive any right which each Party may have to resolve any such claim, difference or dispute by court or jury trial. Notwithstanding the foregoing, either Party may bring a proceeding seeking equitable or injunctive relief solely and exclusively in the state and federal courts located in Wilmington, Delaware, to prevent the infringement of .intellectual property rights or the disclosure of confidential information. Each Party hereto consents to the exclusive jurisdiction of such courts for the adjudication of any such equitable or injunctive relief, as well as for any such matters that are excluded from or fall outside of this arbitration provision. \n\n\n## 10. \tLimitation of liability \n\nEXCEPT IN THE EVENT OF EITHER PARTY’S GROSS NEGLIGENCE, WILLFUL MISCONDUCT OR FRAUD, IN NO EVENT SHALL EITHER PARTY BE LIABLE FOR ANY INDIRECT, INCIDENTAL, EXEMPLARY, PUNITIVE, SPECIAL, OR OTHER CONSEQUENTIAL DAMAGES UNDER THIS AGREEMENT, INCLUDING, WITHOUT LIMITATION, ANY LOST PROFITS, BUSINESS INTERRUPTION, LOSS OF PROGRAMS OR DATA, OR OTHERWISE, EVEN IF THE OTHER PARTY IS EXPRESSLY ADVISED OF THE POSSIBILITY OR LIKELIHOOD OF SUCH DAMAGES. \n\nEXCEPT IN THE EVENT OF EITHER PARTY’S GROSS NEGLIGENCE, WILLFUL MISCONDUCT OR FRAUD, IN NO EVENT SHALL EITHER PARTY’S LIABILITY UNDER THIS AGREEMENT EXCEED $250,000 USD IN THE AGGREGATE, PROVIDED THAT THERE WILL BE NO DOLLAR CAP ON LIABILITY FOR DAMAGES ARISING FROM VIOLATIONS OF DATA PROTECTION LAWS. IN THE EVENT OF EITHER PARTY’S GROSS NEGLIGENCE, SUCH PARTY’S LIABILITY UNDER THIS AGREEMENT SHALL NOT EXCEED $500,000 USD IN THE AGGREGATE. IN THE EVENT OF EITHER PARTY’S WILLFUL MISCONDUCT OR FRAUD, THERE SHALL BE NO DOLLAR CAP ON SUCH PARTY’S LIABILITY UNDER THIS AGREEMENT. \n\n\n## 11. \tMiscellaneous \n\n\n\n1.\tNotice. Any notice, payment, demand or communication required or permitted to be delivered or given by the provisions of this Agreement shall be deemed to have been effectively delivered or given and received on the date personally or electronically delivered to the respective Party to whom it is directed, or when deposited by registered or certified mail, with postage and charges prepaid and addressed to each respective Party. For the Transaction Author, notices will be sent to the agent service endpoint of the Transaction Author’s DID as long as the Transaction Author authorizes such a connection or sent via another mechanism agreed to by the parties. For Indicio, notices will be sent to Indicio Inc., 1225 13th St. NW, suite 205, Washington, DC, USA. \n\n\n\n2.\tSeverability. If any provision of this Agreement is held invalid, illegal, or unenforceable, the validity, legality, and enforceability of any of the remaining provisions of this Agreement shall not in any way be affected or impaired.  \n\n\n\n3.\tRelationship of the Parties. This Agreement does not create a partnership, franchise, joint venture, agency, fiduciary or employment relationship between the Parties. Neither Party will represent that it has any authority to assume or create any obligation, express or implied, on behalf of the other Party, nor to represent the other Party as agent, employee, franchisee, or in any other capacity. There are no third-party beneficiaries to this Agreement. Neither Party shall make any proposals, promises, warranties, guarantees, or representations on behalf of the other Party or in the other Party’s name.  \n\n\n\n4.\tAssignment. Neither Party will voluntarily, or by operation of law, assign or otherwise transfer this Agreement without the other Party’s express prior written consent which will not be unreasonably withheld, provided that no such consent is required for an assignment or transfer to a wholly or majority owned subsidiary or to a successor in interest by reason of merger or consolidation or sale of all or substantially all of the assets of such Party relating to the subject matter of this Agreement.  \n\n\n\n5.\tWaiver. The waiver by either Party of a breach, default, delay or omission of any of the provisions of this Agreement by the other Party will not be construed as a waiver of any subsequent breach of the same or other provisions. \n\n\n\n6.\tEntire Agreement. This Agreement, including all documents incorporated into this Agreement by reference, constitutes the entire agreement of the Parties with respect to the subject matter of this Agreement, and supersedes any and all prior agreements and understandings of the Parties, whether written or oral, with respect to such subject matter. This Agreement supersedes all prior Transaction Author Agreements between Indicio and the Transaction Author with respect to the subject matter hereof.  \n\n\n\n7.\tModification of This Agreement. Indicio reserves the right to modify this Agreement at any time in accordance with this provision, including, but not limited to, changes in applicable law or guidance from any jurisdiction. Indicio will post an amended version of this Agreement on its website at least thirty (30) days prior to the date on which all Transaction Authors must begin operating under the amendment (the “**Amendment Cutover Date**” ). If a Transaction Author continues to Author Transactions to the Indicio Network after the Amendment Cutover Date, such continued use will constitute acceptance of the amended Agreement.  \n\n\n\n8.\tCounterparts. This Agreement may be executed in two or more counterparts, each of which will be deemed an original, but all of which taken together will constitute one and the same instrument.  \n\n\n\n9.\tSurvival. Any terms that by their nature survive termination or expiration of this Agreement shall survive.  \n\n\n\n10.\tGovernmental Entities. If Transaction Author is a governmental entity and it determines that GDPR does not apply to it and its Processing of Transactions, then:  \n\n\n\n    a.\tto the extent that the GDPR requirements referenced in this Agreement are equivalent to the requirements under Data Protection Laws in its own jurisdiction, it will comply with any such requirements; and  \n\n\n\n    b.\tto the extent that GDPR requirements referenced in this Agreement differ from requirements under Data Protection Laws in its own jurisdiction, it will comply with the requirements under its own legislation.  \n\n",
                    "version": "1.3"
                  },
                  "taa_required": true,
                  "taa_accepted": {
                    "mechanism": "wallet_agreement",
                    "time": 1750982400
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accept-taa": {
      "post": {
        "summary": "Accept the TAA",
        "description": "This endpoint accepts the Transaction Author Agreement (TAA) using the provided API key and TAA data.",
        "tags": [
          "TAA"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "mechanism": {
                    "type": "string",
                    "description": "Mechanism for accepting TAA."
                  },
                  "text": {
                    "type": "string",
                    "description": "The Transaction Author Agreement"
                  },
                  "version": {
                    "type": "string",
                    "description": "Version of the TAA"
                  }
                },
                "example": {
                  "mechanism": "on_file",
                  "text": "Indicio Transaction Author Agreement....",
                  "version": "1.3"
                },
                "required": [
                  "mechanism"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "TAA accepted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "taa": {
                      "type": "object",
                      "description": "The accepted TAA."
                    }
                  }
                },
                "example": {
                  "aml_record": {
                    "aml": {
                      "at_submission": "The agreement was reviewed by the user and accepted at the time of submission of this transaction.",
                      "for_session": "The agreement was reviewed by the user and accepted at some point in the user’s session prior to submission.",
                      "on_file": "An authorized person accepted the agreement, and such acceptance is on file with the user’s organization.",
                      "product_eula": "The agreement was included in the software product’s terms and conditions as part of a license to the end user.",
                      "service_agreement": "The agreement was included in the terms and conditions the user accepted as part of contracting a service.",
                      "wallet_agreement": "The agreement was reviewed by the user and this affirmation was persisted in the user’s wallet for use during submission."
                    },
                    "amlContext": "https://raw.githubusercontent.com/Indicio-tech/indicio-network/main/TAA/AML.md",
                    "version": "1.0"
                  },
                  "taa_record": {
                    "digest": "c965dd01fec099ea95babaea3031bc09905432d3d7f1519bc0b99971aece8592",
                    "ratification_ts": 1606435200,
                    "text": "Indicio Transaction Author Agreement \n\nVersion 1.3\n\n11/10/2020\n\n**Summary:**\n\nThis summary is to help you understand your obligations when writing to the Indicio Network, which is composed of a TestNet, DemoNet, and MainNet. It does not have any legal effect or replace the full legal text of the agreement provided below it.\n\n\n\n*   We define the Transaction Author role (or any role described in this statement that performs the functions of a Transaction Author) as one of using an application to add transactions to the Indicio Network for the purpose of issuing Credentials.  \n \nCredential issuing transactions include, but may not be limited to, writing Schema and Credential Definitions, unprivileged DIDs, altering DID attributes, creating Revocation Registries, and updating Revocation Registries. \n\n*   This agreement grants you the Transaction Author permission to write data to the Indicio Network and its component Networks, the Indicio TestNet, DemoNet, and MainNet under certain terms and conditions.  \n\n*   You represent and warrant that the data you are writing does not violate any applicable laws or infringe the rights of any other party.\n\n     \n\n*   You understand the data you write to the TestNet and DemoNet is public but not permanent, and in accordance with the Indicio TestNet agreement will be erased by periodic resets of the TestNet and DemoNet. \n\n*   You understand that any data you write to the MainNet is public and permanent and cannot be erased. This includes public keys.  \n\n*   If it is determined that the data you wrote violated this agreement, Indicio can impose penalties, including suspension or termination of this agreement, and may take steps to block public access to this data through creating a Tombstone.  \n\n*   Indicio makes no promises about the reliability or correctness of the data stored on the Indicio Network or the operation of the Indicio Network. \n\n**Agreement.**\n\nThis Transaction Author Agreement (the “**Agreement**”) is entered into on the date you accepted this Agreement (the “**Effective Date**”) between Indicio Inc., a Benefit Corporation organized under the laws of the State of Delaware, United States of America (“**Indicio**”), and you (“**Transaction Author**”), either an entity or a natural person acting as an Individual. \n\nIndicio and the Transaction Author are individually referred to herein as a “Party” and collectively as the “Parties.” All references to “you” throughout this Agreement will include that person or entity. You represent that you are authorized to accept this Agreement on that person’s or entity’s behalf, and in the event you or the person or entity violates this Agreement, the person or entity agrees to be responsible to Indicio. \n\nBy clicking “Accept” or similar or writing Transactions to the Indicio Network, the Transaction Author agrees to be bound by this Agreement and all terms incorporated by reference. If the Transaction Author does not agree to this Agreement in its entirety, do not click “Accept” or write Transactions to the Indicio Network. \n\nIf Indicio makes material changes to this Agreement, we will notify you by posting a notice on our website prior to the effective date of the changes. By continuing to act as a Transaction Author or by otherwise writing Transactions on the Indicio Network after we post changes to our website, you agree to be bound by the revised Agreement. \n\n\nWHEREAS, the Transaction Author desires to write Transactions to the Indicio Network\n\n(each a “**Transaction**”); and \n\nWHEREAS, subject to the Transaction Author complying with the terms and conditions of this Agreement, Indicio grants permission to the Transaction Author to write Transactions to the Indicio Network; \n\nFOR GOOD AND VALUABLE CONSIDERATION, THE SUFFICIENCY OF WHICH IS HEREBY ACKNOWLEDGED, THE PARTIES AGREE AS FOLLOWS: \n\n\n## 1. \tDefinitions\n\n*Pertaining to the network:*\n\n\n\n1. \tThe **Indicio Governance Framework** refers to Indicio’s governance public benefit mission, policies, and rules available at LINK or any successor website.  \n\n\n2. \tThe **Indicio Ledger** is the collective term for all the ledgers on the Indicio Network, including the MainNet, DemoNet, and TestNet, and their sub ledgers, viz., pool, admin, main, config., etc. \n\n\n3. \tThe **Indicio Network** is a public, permissioned network built on Hyperledger Indy, Aries, and Ursa, and consisting of a MainNet, DemoNet, and TestNet. It is run by Indicio—the genesis node operator for the Network—and the Node Operators, of which Indicio is also a member. Public refers to being able to read and permissioned refers to the ability to write to the ledger. \n\n\n*Network terminology:* \n\n\n\n4.\tA **Credential** is a digital assertion containing a set of claims about the identity attributes of an entity (as per IETF RFC 3986, Uniform Resource Identifier (URI), an entity is a resource of any kind that can be uniquely and independently identified). \n\n\n\n5. \tA **Credential Definition** is a machine-readable definition of the semantic structure of a Credential based on one or more Credential Schemas.  \n\n\n\n6. \tA **Credential Schema** is a machine-readable definition of the semantics of data structure. Schemas define the attributes in a Credential Definition.  \n\n\n\n7. \tA **DID** is the acronym for decentralized identifier, a unique, permanent URL for an identity. \n\n\n\n8. \tA **DID** Document is a machine-readable document describing the public cryptographic keys, service endpoints, and other metadata associated with a DID. Each DID points to a unique DID document on a ledger.  \n\n\n\n9. \tA **Revocation Registry** is a cryptographic data structure for recording the revocation of credentials. \n\n\n\n10.\t**Permissioned Write Access** refers to a network state where “Public Write Access” is not permitted. In this state, Transaction Authors may only write transactions with a signature from an approving Transaction Endorser. \n\n\n\n11. **Public Write Access** refers to the state that a network is in when anyone can become a Transaction Author and write to the ledger. The Indicio Network does not, in its present state, allow Public Write Access.\n\n\n12. **Public Read Access** means that anyone can access, audit, read, or download content on the Ledger, although there may be a fee to do so. \n\n\n\n13. A **Tombstone** is a technical means of blocking public access to a ledger record without erasing that record. It is used only in the event of impermissible public data being written to the ledger in violation of Transaction Author and Endorser agreements.   \n\n\n\n14. A **Transaction** refers to the act of writing Schemas and Credential Definitions to the ledger for the purpose of issuing Credentials, creating Revocation Registries for the purpose of revoking credentials, updating Revocation Registries, creating a DID, adding or editing attributes to a DID, and rotating a DID’s key.   \n\n\n\n15. A **Transaction Author** refers to an entity using an application to write records to the Indicio Network for the purpose of issuing credentials. Credential issuing transactions include, but may not be limited to, writing Schema and Credential Definitions, creating Revocation Registries, and updating Revocation Registries. They can also write DID transactions to the ledger including DID creation, attribute creation and editing, and key rotation. \n\n\n\n16. A **Transaction Endorser** refers to an entity that is authorized to approve a Transaction Author write to the ledger. \n\n\n\n17. A **Trustee** refers to a person authorized to administer the governance and maintenance of the network. Multiple Trustee signatures are required to perform certain administrative and maintenance functions.\n\n\n*Pertaining to data privacy:*\n\n\n18. **Data Controller**  is defined by the EU General Data Protection Regulation (GDPR), the natural or legal person, public authority, agency, or other body which, alone or jointly with others, determines the purposes and means of the processing of Personal Data.\n\n\n19. **Data Processor** is defined by the EU General Data Protection Regulation (GDPR), a natural or legal person, public authority, agency, or other body which processes Personal Data on behalf of a Data Controller**.**\n\n\n20. **Data Protection Laws** mean California’s Consumer Privacy Act (CCPA), the European Union’s General Data Protection Regulation (GDPR), and any other national or international data protection and privacy laws, regulations, and regulatory requirements applicable to a party under this Agreement.  \n\n\n\n21. **Personal Data** means information that relates directly or indirectly to a data subject, including without limitation, names, email addresses, postal addresses, identification numbers, location data, online identifiers, or one or more factors specific to the physical, physiological, genetic, mental, economic, cultural or social identity of the data subject. \n\n\n22. **Node Data** means any information which includes any Personal Data that a Node Operator Processes through the Node.\t\n\n\n23. **Permissible Personal Data** refers to the Personal Data that a Transaction Author writes to the Indicio Network that is permitted under this Agreement and Indicio’s Governance Framework, namely, but not limited to, identification numbers and online identifiers. \n\n\n\n24. **Impermissible Personal Data** refers to personal data that is not covered under Permissible Personal Data and should not be written to the ledger \n\n\n\n25. **Process** or **Processing** means any operation or set of operations that is performed on Transaction data, whether or not by automated means, such as the access, collection, use, storage, disclosure, dissemination, combination, recording, organization, structuring, adaption, alteration, copying, transfer, retrieval, consultation, disposal, restriction, erasure and/or destruction of Transaction data. \n\n\n\n\n## 2. \tPermission to write to the Indicio Network \n\n\n1.\tIndicio hereby grants to the Transaction Author a non-exclusive, non-assignable, non-sublicensable, royalty free, and revocable license to write to and use the Indicio Network in accordance with this Agreement and the applicable Indicio Governance Framework or Indicio TestNet Governance Framework. \n\n\n2.\tTransactions can only be authored through Permissioned Write Access, whereby a Transaction Author can only write to the Indicio Network by using an authorized Transaction Endorser.  \n\n\n\n3.\tOnce an initial Transaction has been written to one of the Indicio Networks by the Transaction Author, the Transaction Author is granted permission to make additional Transactions to update the state of a previous Transaction.\n\n\n\n    An update transaction does not remove the initial transaction, which will remain on the Indicio Main Network (MainNet) due to the immutability of the ledger; and a transaction will remain on Indicio Test Network (TestNet) or Demo Network (DemoNet) until it is reset, which will occur at periodic intervals.  \n\n    A Transaction Author may make an update transaction if and only if the Transaction Author was the author of the initial transaction. Update Transactions are Transactions and are subject to all the terms of this Agreement. \n\n\n## 3. \tTransaction Author obligations \n\n\n*Pertaining to all Transactions, a Transaction Author MUST:*\n\n\n\n1. Comply with any requirements imposed by the Transaction Endorser on the Transaction Author.\n1. Not write Impermissible** **Personal Data to the ledger. \n1. Not write data to the ledger that would violate the intellectual property rights of others. \n\n\n\n\n\n\n## 4.\tPenalties for violating Transaction Author Agreement\n\n\n1. \tIn the event that the transaction author intentionally or inadvertently violates the terms of the Transaction Author and Transaction Endorser agreements and writes Impermissible** **Personal Data to the ledger, Indicio reserves the right to act on behalf of the Node Operators and block public access to that data through creating a Tombstone. \n\n\n2. \tDepending on the severity of an infraction or in the event of repeated infractions, Transaction Endorsers may be required to block endorsement of specific Transaction Authors by the Network Trustees. \n\n\n\n## 5.\tData processing and control under GDPR\n\n\n1. \tIndicio will serve as the designated data controller for the Indicio Network; all roles and rules with respect to Transaction Endorsers complying with GDPR are explained in the Indicio Data Processing Agreement. \n\n\n\n\n\n## 6.\t Term and termination \n\n\n1. \tThis Agreement commences on the Effective Date and shall remain in force until terminated by either Party pursuant to this **Section 6 (Term and Termination)**.  \n\n\n\n\n\n2. \tEither Party may terminate this Agreement: (i) if the other Party has materially defaulted in the performance of any of its obligations under this Agreement and has not cured such default within fifteen (15) business days of receipt of written notice from the non-defaulting Party of such default or (ii) immediately in the event of any government sanctions or other legal measures that make it unlawful for Transaction Author to write Transactions to the Indicio Network.  \n\n\n\n3.\tAdditionally, the Transaction Author may terminate this Agreement upon 30 days’ advance written notice to Indicio and ceasing all use of the Indicio Network. \n\n\n4.\tThe Transaction Author Agreement can be immediately terminated by Indicio if the Transaction Author writes Impermissible Personal Data to the ledger.\n\n\n5.\tUpon termination or expiration of this Agreement for any reason, the rights granted to the Transaction Author by Indicio under this Agreement automatically terminate. \n\n\n6. \tSpecific instructions for relinquishing a validator node are described in the document “Node Operator Termination.” \n\n\n\n## 7. Representations and warranties; disclaimer \n\na. By Indicio:\n\n\n1. \tTHE INDICIO NETWORK IS PROVIDED AS-IS WITH ALL FAULTS. TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, INDICIO MAKES NO REPRESENTATION OR WARRANTY CONCERNING THE ACCURACY, RELIABILITY, OR COMPLETENESS OF ANY INFORMATION OR DATA OBTAINED OR DERIVED THROUGH THE USE OF THE INDICIO NETWORK AS THE INDICIO NETWORK OPERATES ON A DISTRIBUTED NETWORK AND INDICIO DOES NOT CONTROL THE INFORMATION OR DATA WRITTEN TO THE INDICIO NETWORK. INDICIO DISCLAIMS ANY OTHER REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ACCURACY OR COMPLETENESS OF DATA. \n\n\n\n2.\tAs the architect of the Indicio Network and administrator of the Indicio Governance and TestNet Frameworks, Indicio is an independent controller of the Personal Data Transactions. In no event will the Indicio be held liable for the actions or omissions of Transaction Author arising out of any Impermissible** **Personal Data that Transaction Author writes to the Indicio Network in breach of this Agreement and the Indicio Governance and TestNet Governance Framework, including but not limited to any Impermissible Personal Data. Notwithstanding the foregoing, if Transaction Author writes Permissible Personal Data to the Indicio Network in express compliance with this Agreement and the Indicio Governance Framework, Indicio is responsible for the lawfulness of such Processing once such Permissible Personal Data is written to the Indicio Network. \n\n\n\nb. By Transaction Author. Transaction Author represents and warrants: \n\n\n3.\tIf a natural person, he or she is 16 years of age or older.  \n\n\n\n4.\tIt has all necessary rights and permissions to write the Transactions. \n\n\n\n5.\tThe Transactions do not and will not violate any applicable law.  \n\n\n\n6.\tThe Transactions will not contain data or information that infringes on or misappropriates the intellectual property rights of any third party. \n\n\n\n7.\tIt understands that the Indicio Network operates on a distributed network and that Indicio disclaims any responsibilities with respect to access of data from the Indicio Network. \n\n\n\n8.\tIt understands and acknowledges that Indicio does not control the transfer of data between Nodes and over communications facilities, including the internet, and that the Indicio Network may be subject to limitations, delays, and other problems inherent in the use of such communications facilities.  \n\n\n\n9.\tIt understands and acknowledges that there is regulatory uncertainty regarding the Indicio Network’s compliance with Data Protection Laws as it relates to Permissioned Write Access, Public Write Access, and Personal Data, including cross-border transfers of data, Processing of Personal Data, the right to effective erasure of data, as well as the scope and nature of Personal Data itself.  \n\n\n\n10.\tIt understands and acknowledges that Indicio may modify, at any time, the terms of this Agreement and any other agreement or document related to the Indicio Network based on new information, guidance, or Data Protection Laws; and  \n\n\n\n11.\tIt understands and acknowledges that a Node Operator and/or Indicio may obscure a Transaction if (i) the Node Operator or Indicio is required to do so by a court order or applicable law or (ii) the Node Operator or Indicio has evidence that the Transaction violates the terms of this Agreement or any applicable law.\n\n\n\n\n\n## 8.\t Indemnification \n\n\n1.\tTo the fullest extent permitted by applicable law, a Transaction Author will indemnify and hold harmless Indicio, and each of its respective officers, directors, agents, partners and employees (individually and collectively, the “**Indicio Parties**”) from and against any losses, liabilities, claims, demands, damages, expenses or costs (“**Claims**”) brought by a third party arising out of or related to (i) Transaction Author’s access to or use of Indicio Network in violation of this Agreement; (ii) Transaction Author’s violation, misappropriation or infringement of any rights of another (including intellectual property rights or privacy rights); or (iii) Transaction Author’s violation of applicable law.\n\n\n2.\tA Transaction Author agrees to promptly notify the Indicio Parties in writing of any Claims, cooperate with the Indicio Parties in defending such Claims and pay all fees, costs and expenses associated with defending such Claims (including attorneys’ fees). Transaction Author also agrees that the Indicio Parties will have sole control of the defense or settlement, at Indicio’s sole option, of any Claims. This indemnity is in addition to, and not in lieu of, any other indemnities set forth in a written agreement between Transaction Author and Indicio or the other Indicio Parties. \n\n\n\n\n## 9.\t Governing law and forum \n\nThis Agreement is governed by the law of the State of Delaware, without reference to conflict of laws principles; provided that, if Transaction Author is a governmental entity, this Agreement is governed by the law in which such governmental entity is established. All disputes arising out of or in connection with this Agreement shall be finally settled by binding arbitration under the Rules of Arbitration of the International Chamber of Commerce (the “**Rules**”) by a single arbitrator appointed in accordance with said Rules. Arbitration proceedings will be held in Washington, DC. Unless the Parties otherwise mutually agree, such arbitration shall be conducted in the English language by electronic exchange of documents and by video conference. The arbitrator shall issue a reasoned decision, including findings of fact and conclusions of law. The arbitrator shall require exchange by the Parties of documents relevant to the issues raised by any claim, defense, or counterclaim or on which the producing Party may rely in support of or in opposition to any claim, defense, or counterclaim, with due regard for eliminating undue burden and expense and the expedited and lower cost nature of arbitration. At the request of a Party, the arbitrator may at his or her discretion order the deposition of witnesses. Depositions shall be limited to a maximum of three depositions per Party, each of a maximum of four hours duration, unless the arbitrator otherwise determines. Demand for arbitration may be initiated by either Party on fifteen (15) days written notice by email to the other Party’s designated representative, together with a written specification of the grounds for the dispute and the relief requested. By agreeing to binding and non-appealable arbitration, each party understands that they each forever give up and waive any right which each Party may have to resolve any such claim, difference or dispute by court or jury trial. Notwithstanding the foregoing, either Party may bring a proceeding seeking equitable or injunctive relief solely and exclusively in the state and federal courts located in Wilmington, Delaware, to prevent the infringement of .intellectual property rights or the disclosure of confidential information. Each Party hereto consents to the exclusive jurisdiction of such courts for the adjudication of any such equitable or injunctive relief, as well as for any such matters that are excluded from or fall outside of this arbitration provision. \n\n\n## 10. \tLimitation of liability \n\nEXCEPT IN THE EVENT OF EITHER PARTY’S GROSS NEGLIGENCE, WILLFUL MISCONDUCT OR FRAUD, IN NO EVENT SHALL EITHER PARTY BE LIABLE FOR ANY INDIRECT, INCIDENTAL, EXEMPLARY, PUNITIVE, SPECIAL, OR OTHER CONSEQUENTIAL DAMAGES UNDER THIS AGREEMENT, INCLUDING, WITHOUT LIMITATION, ANY LOST PROFITS, BUSINESS INTERRUPTION, LOSS OF PROGRAMS OR DATA, OR OTHERWISE, EVEN IF THE OTHER PARTY IS EXPRESSLY ADVISED OF THE POSSIBILITY OR LIKELIHOOD OF SUCH DAMAGES. \n\nEXCEPT IN THE EVENT OF EITHER PARTY’S GROSS NEGLIGENCE, WILLFUL MISCONDUCT OR FRAUD, IN NO EVENT SHALL EITHER PARTY’S LIABILITY UNDER THIS AGREEMENT EXCEED $250,000 USD IN THE AGGREGATE, PROVIDED THAT THERE WILL BE NO DOLLAR CAP ON LIABILITY FOR DAMAGES ARISING FROM VIOLATIONS OF DATA PROTECTION LAWS. IN THE EVENT OF EITHER PARTY’S GROSS NEGLIGENCE, SUCH PARTY’S LIABILITY UNDER THIS AGREEMENT SHALL NOT EXCEED $500,000 USD IN THE AGGREGATE. IN THE EVENT OF EITHER PARTY’S WILLFUL MISCONDUCT OR FRAUD, THERE SHALL BE NO DOLLAR CAP ON SUCH PARTY’S LIABILITY UNDER THIS AGREEMENT. \n\n\n## 11. \tMiscellaneous \n\n\n\n1.\tNotice. Any notice, payment, demand or communication required or permitted to be delivered or given by the provisions of this Agreement shall be deemed to have been effectively delivered or given and received on the date personally or electronically delivered to the respective Party to whom it is directed, or when deposited by registered or certified mail, with postage and charges prepaid and addressed to each respective Party. For the Transaction Author, notices will be sent to the agent service endpoint of the Transaction Author’s DID as long as the Transaction Author authorizes such a connection or sent via another mechanism agreed to by the parties. For Indicio, notices will be sent to Indicio Inc., 1225 13th St. NW, suite 205, Washington, DC, USA. \n\n\n\n2.\tSeverability. If any provision of this Agreement is held invalid, illegal, or unenforceable, the validity, legality, and enforceability of any of the remaining provisions of this Agreement shall not in any way be affected or impaired.  \n\n\n\n3.\tRelationship of the Parties. This Agreement does not create a partnership, franchise, joint venture, agency, fiduciary or employment relationship between the Parties. Neither Party will represent that it has any authority to assume or create any obligation, express or implied, on behalf of the other Party, nor to represent the other Party as agent, employee, franchisee, or in any other capacity. There are no third-party beneficiaries to this Agreement. Neither Party shall make any proposals, promises, warranties, guarantees, or representations on behalf of the other Party or in the other Party’s name.  \n\n\n\n4.\tAssignment. Neither Party will voluntarily, or by operation of law, assign or otherwise transfer this Agreement without the other Party’s express prior written consent which will not be unreasonably withheld, provided that no such consent is required for an assignment or transfer to a wholly or majority owned subsidiary or to a successor in interest by reason of merger or consolidation or sale of all or substantially all of the assets of such Party relating to the subject matter of this Agreement.  \n\n\n\n5.\tWaiver. The waiver by either Party of a breach, default, delay or omission of any of the provisions of this Agreement by the other Party will not be construed as a waiver of any subsequent breach of the same or other provisions. \n\n\n\n6.\tEntire Agreement. This Agreement, including all documents incorporated into this Agreement by reference, constitutes the entire agreement of the Parties with respect to the subject matter of this Agreement, and supersedes any and all prior agreements and understandings of the Parties, whether written or oral, with respect to such subject matter. This Agreement supersedes all prior Transaction Author Agreements between Indicio and the Transaction Author with respect to the subject matter hereof.  \n\n\n\n7.\tModification of This Agreement. Indicio reserves the right to modify this Agreement at any time in accordance with this provision, including, but not limited to, changes in applicable law or guidance from any jurisdiction. Indicio will post an amended version of this Agreement on its website at least thirty (30) days prior to the date on which all Transaction Authors must begin operating under the amendment (the “**Amendment Cutover Date**” ). If a Transaction Author continues to Author Transactions to the Indicio Network after the Amendment Cutover Date, such continued use will constitute acceptance of the amended Agreement.  \n\n\n\n8.\tCounterparts. This Agreement may be executed in two or more counterparts, each of which will be deemed an original, but all of which taken together will constitute one and the same instrument.  \n\n\n\n9.\tSurvival. Any terms that by their nature survive termination or expiration of this Agreement shall survive.  \n\n\n\n10.\tGovernmental Entities. If Transaction Author is a governmental entity and it determines that GDPR does not apply to it and its Processing of Transactions, then:  \n\n\n\n    a.\tto the extent that the GDPR requirements referenced in this Agreement are equivalent to the requirements under Data Protection Laws in its own jurisdiction, it will comply with any such requirements; and  \n\n\n\n    b.\tto the extent that GDPR requirements referenced in this Agreement differ from requirements under Data Protection Laws in its own jurisdiction, it will comply with the requirements under its own legislation.  \n\n",
                    "version": "1.3"
                  },
                  "taa_required": true,
                  "taa_accepted": {
                    "mechanism": "wallet_agreement",
                    "time": 1750982400
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/verifications": {
      "post": {
        "summary": "Trigger an AnonCred verification flow",
        "description": "This endpoint allows you to trigger an AnonCred verification flow.",
        "tags": [
          "Verifications"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "timeout",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "The timeout for the verification (seconds).",
            "example": 30
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "invitation_id": {
                    "type": "integer",
                    "description": "The ID of the invitation.",
                    "nullable": true
                  },
                  "contact_id": {
                    "type": "string",
                    "description": "The ID of the contact."
                  },
                  "schemas": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "schema_attributes": {
                          "type": "object",
                          "properties": {
                            "domain": {
                              "type": "object",
                              "properties": {
                                "restrictions": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "schema_id": {
                                        "type": "string",
                                        "description": "The ID of the schema."
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "username": {
                              "type": "object",
                              "properties": {
                                "restrictions": {
                                  "type": "array",
                                  "items": {
                                    "type": "object"
                                  }
                                }
                              }
                            },
                            "address": {
                              "type": "object",
                              "properties": {
                                "restrictions": {
                                  "type": "array",
                                  "items": {
                                    "type": "object"
                                  }
                                }
                              }
                            },
                            "age": {
                              "type": "object",
                              "properties": {
                                "restrictions": {
                                  "type": "array",
                                  "items": {
                                    "type": "object"
                                  }
                                }
                              }
                            },
                            "race": {
                              "type": "object",
                              "properties": {}
                            }
                          }
                        }
                      }
                    },
                    "description": "The schemas for the verification."
                  },
                  "rule": {
                    "type": "string",
                    "description": "The rule for the verification."
                  }
                }
              },
              "examples": {
                "schema-attributes-request-option-1": {
                  "summary": "Schema attributes request option 1",
                  "value": {
                    "invitation_id": 1,
                    "contact_id": "",
                    "schemas": [
                      {
                        "schema_attributes": {
                          "domain": {
                            "restrictions": [
                              {
                                "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0"
                              }
                            ]
                          }
                        }
                      }
                    ],
                    "rule": "no rule"
                  }
                },
                "schema-attributes-request-option-2": {
                  "summary": "Schema attributes request option 2",
                  "value": {
                    "invitation_id": 1,
                    "contact_id": "",
                    "schemas": [
                      {
                        "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0",
                        "schema_attributes": [
                          "address",
                          "domain"
                        ]
                      }
                    ],
                    "rule": "no rule"
                  }
                },
                "attributes-from-any-schema-request": {
                  "summary": "Attributes from any schema request",
                  "value": {
                    "invitation_id": 1,
                    "contact_id": "",
                    "schemas": [
                      {
                        "schema_attributes": {
                          "address": {
                            "restrictions": [
                              {}
                            ]
                          }
                        }
                      }
                    ],
                    "rule": "no rule"
                  }
                },
                "self-attested-attributes-request-option-1": {
                  "summary": "Self-attested attributes request option 1",
                  "value": {
                    "invitation_id": 1,
                    "contact_id": "",
                    "schemas": [
                      {
                        "schema_attributes": {
                          "age": {
                            "restrictions": []
                          }
                        }
                      }
                    ],
                    "rule": "no rule"
                  }
                },
                "self-attested-attributes-request-option-2": {
                  "summary": "Self-attested attributes request option 2",
                  "value": {
                    "invitation_id": 1,
                    "contact_id": "",
                    "schemas": [
                      {
                        "schema_attributes": {
                          "race": {}
                        }
                      }
                    ],
                    "rule": "no rule"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "AnonCred verification flow triggered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verification_id": {
                      "type": "integer",
                      "description": "The ID of the verification",
                      "example": 1
                    },
                    "connection_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "The connection ID",
                      "example": "bd8d1663-38ac-46c8-9314-7d26bf731c88"
                    },
                    "contact_id": {
                      "type": "string",
                      "description": "The contact ID",
                      "example": ""
                    },
                    "invitation_id": {
                      "type": "integer",
                      "nullable": true,
                      "description": "The invitation ID",
                      "example": 1
                    },
                    "schema_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "The schema ID",
                      "example": null
                    },
                    "schema_attributes": {
                      "type": "object",
                      "description": "The schema attributes for verification"
                    },
                    "wallet_id": {
                      "type": "string",
                      "description": "The wallet ID",
                      "example": "70b6a0d2-628a-4de6-af96-144100f74878"
                    },
                    "rule": {
                      "type": "string",
                      "description": "The verification rule",
                      "example": "no rule"
                    },
                    "meta_data": {
                      "type": "object",
                      "nullable": true,
                      "description": "Additional metadata",
                      "example": null
                    },
                    "state": {
                      "type": "string",
                      "nullable": true,
                      "description": "The verification state",
                      "example": "done"
                    },
                    "complete": {
                      "type": "boolean",
                      "description": "Whether verification is complete",
                      "example": false
                    },
                    "result": {
                      "type": "boolean",
                      "description": "The verification result",
                      "example": false
                    },
                    "result_string": {
                      "type": "string",
                      "description": "Human readable verification result",
                      "example": "Pending"
                    },
                    "result_data": {
                      "type": "array",
                      "nullable": true,
                      "description": "The verification result data",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "value": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "presentation_exchange_id": {
                      "type": "array",
                      "description": "Presentation exchange IDs",
                      "items": {
                        "type": "string"
                      }
                    },
                    "error": {
                      "type": "string",
                      "description": "Error message if any",
                      "example": ""
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Creation timestamp",
                      "example": "2025-07-08T21:54:59.969Z"
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Update timestamp",
                      "example": "2025-07-08T21:55:01.017Z"
                    }
                  }
                },
                "examples": {
                  "sent": {
                    "summary": "Verification request sent",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": null,
                      "schema_attributes": {
                        "domain": {
                          "restrictions": [
                            {
                              "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0"
                            }
                          ]
                        }
                      },
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": null,
                      "complete": false,
                      "result": false,
                      "result_string": "Pending",
                      "result_data": null,
                      "presentation_exchange_id": [
                        "531298a5-31a6-4f2b-9dec-80c8c9e1d9de"
                      ],
                      "error": "",
                      "created_at": "2025-07-08T21:54:59.969Z",
                      "updated_at": "2025-07-08T21:55:01.017Z"
                    }
                  },
                  "declined": {
                    "summary": "Verification request declined",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": null,
                      "schema_attributes": {
                        "domain": {
                          "restrictions": [
                            {
                              "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0"
                            }
                          ]
                        }
                      },
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "abandoned",
                      "complete": true,
                      "result": false,
                      "result_string": "Declined",
                      "result_data": null,
                      "presentation_exchange_id": [
                        "d8d27fa2-72c9-4a52-bc26-f46ebec7d16f"
                      ],
                      "error": "",
                      "created_at": "2025-07-08T22:01:56.826Z",
                      "updated_at": "2025-07-08T22:02:05.529Z"
                    }
                  },
                  "pending-invitation": {
                    "summary": "Pending verification to invitation with no active connections",
                    "value": {
                      "verification_id": 1,
                      "connection_id": null,
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": null,
                      "schema_attributes": {
                        "domain": {
                          "restrictions": [
                            {
                              "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0"
                            }
                          ]
                        }
                      },
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": null,
                      "complete": false,
                      "result": false,
                      "result_string": "New",
                      "result_data": null,
                      "presentation_exchange_id": [],
                      "error": "",
                      "created_at": "2025-09-03T19:25:16.047Z",
                      "updated_at": "2025-09-03T19:25:16.047Z"
                    }
                  },
                  "verified": {
                    "summary": "Verification successfully completed with schema requirement",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": null,
                      "schema_attributes": {
                        "domain": {
                          "restrictions": [
                            {
                              "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0"
                            }
                          ]
                        }
                      },
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "done",
                      "complete": true,
                      "result": true,
                      "result_string": "Verified",
                      "result_data": [
                        {
                          "name": "domain",
                          "value": "example.com"
                        }
                      ],
                      "presentation_exchange_id": [
                        "db4def64-aa8f-4a08-9790-47f4da2d5cad"
                      ],
                      "error": "",
                      "created_at": "2025-07-08T22:02:31.434Z",
                      "updated_at": "2025-07-08T22:02:41.883Z"
                    }
                  },
                  "verified-no-schema": {
                    "summary": "Verification successfully completed without schema requirement",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": null,
                      "schema_attributes": {
                        "address": {
                          "restrictions": [
                            {}
                          ]
                        }
                      },
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "done",
                      "complete": true,
                      "result": true,
                      "result_string": "Verified",
                      "result_data": [
                        {
                          "name": "address",
                          "value": "timmy@example.com"
                        }
                      ],
                      "presentation_exchange_id": [
                        "06876af7-a2b1-4a2f-a0ce-bca9c5616817"
                      ],
                      "error": "",
                      "created_at": "2025-07-08T22:04:34.061Z",
                      "updated_at": "2025-07-08T22:04:42.346Z"
                    }
                  },
                  "self-attested": {
                    "summary": "Self-attested presentation verified successfully",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "1fc25f95-1bd7-4abc-8c93-1c83a211c9ff",
                      "contact_id": "",
                      "invitation_id": 8,
                      "schema_id": null,
                      "schema_attributes": {
                        "age": {
                          "restrictions": []
                        }
                      },
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "done",
                      "complete": true,
                      "result": true,
                      "result_string": "Verified",
                      "result_data": [
                        {
                          "name": "age",
                          "value": "38"
                        }
                      ],
                      "presentation_exchange_id": [
                        "09e3927e-f3b5-4922-b09d-ffdf9348bd7c"
                      ],
                      "error": "",
                      "created_at": "2025-07-08T22:52:04.435Z",
                      "updated_at": "2025-07-08T22:58:34.365Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/verifications/{verification_id}": {
      "get": {
        "summary": "Retrieve an AnonCred verification record by ID",
        "description": "This endpoint allows you to retrieve an AnonCred verification record by its ID.",
        "tags": [
          "Verifications"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "verification_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the verification.",
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "AnonCred verification record was retrieved",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verification_id": {
                      "type": "integer",
                      "description": "The ID of the verification",
                      "example": 1
                    },
                    "connection_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "The connection ID",
                      "example": "bd8d1663-38ac-46c8-9314-7d26bf731c88"
                    },
                    "contact_id": {
                      "type": "string",
                      "description": "The contact ID",
                      "example": ""
                    },
                    "invitation_id": {
                      "type": "integer",
                      "nullable": true,
                      "description": "The invitation ID",
                      "example": 1
                    },
                    "schema_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "The schema ID",
                      "example": null
                    },
                    "schema_attributes": {
                      "type": "object",
                      "description": "The schema attributes for verification"
                    },
                    "wallet_id": {
                      "type": "string",
                      "description": "The wallet ID",
                      "example": "70b6a0d2-628a-4de6-af96-144100f74878"
                    },
                    "rule": {
                      "type": "string",
                      "description": "The verification rule",
                      "example": "no rule"
                    },
                    "meta_data": {
                      "type": "object",
                      "nullable": true,
                      "description": "Additional metadata",
                      "example": null
                    },
                    "state": {
                      "type": "string",
                      "nullable": true,
                      "description": "The verification state",
                      "example": "done"
                    },
                    "complete": {
                      "type": "boolean",
                      "description": "Whether verification is complete",
                      "example": false
                    },
                    "result": {
                      "type": "boolean",
                      "description": "The verification result",
                      "example": false
                    },
                    "result_string": {
                      "type": "string",
                      "description": "Human readable verification result",
                      "example": "Pending"
                    },
                    "result_data": {
                      "type": "array",
                      "nullable": true,
                      "description": "The verification result data",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "value": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "presentation_exchange_id": {
                      "type": "array",
                      "description": "Presentation exchange IDs",
                      "items": {
                        "type": "string"
                      }
                    },
                    "error": {
                      "type": "string",
                      "description": "Error message if any",
                      "example": ""
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Creation timestamp",
                      "example": "2025-07-08T21:54:59.969Z"
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Update timestamp",
                      "example": "2025-07-08T21:55:01.017Z"
                    }
                  }
                },
                "examples": {
                  "sent": {
                    "summary": "Verification request sent",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": null,
                      "schema_attributes": {
                        "domain": {
                          "restrictions": [
                            {
                              "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0"
                            }
                          ]
                        }
                      },
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": null,
                      "complete": false,
                      "result": false,
                      "result_string": "Pending",
                      "result_data": null,
                      "presentation_exchange_id": [
                        "531298a5-31a6-4f2b-9dec-80c8c9e1d9de"
                      ],
                      "error": "",
                      "created_at": "2025-07-08T21:54:59.969Z",
                      "updated_at": "2025-07-08T21:55:01.017Z"
                    }
                  },
                  "declined": {
                    "summary": "Verification request declined",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": null,
                      "schema_attributes": {
                        "domain": {
                          "restrictions": [
                            {
                              "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0"
                            }
                          ]
                        }
                      },
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "abandoned",
                      "complete": true,
                      "result": false,
                      "result_string": "Declined",
                      "result_data": null,
                      "presentation_exchange_id": [
                        "d8d27fa2-72c9-4a52-bc26-f46ebec7d16f"
                      ],
                      "error": "",
                      "created_at": "2025-07-08T22:01:56.826Z",
                      "updated_at": "2025-07-08T22:02:05.529Z"
                    }
                  },
                  "pending-invitation": {
                    "summary": "Pending verification to invitation with no active connections",
                    "value": {
                      "verification_id": 1,
                      "connection_id": null,
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": null,
                      "schema_attributes": {
                        "domain": {
                          "restrictions": [
                            {
                              "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0"
                            }
                          ]
                        }
                      },
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": null,
                      "complete": false,
                      "result": false,
                      "result_string": "New",
                      "result_data": null,
                      "presentation_exchange_id": [],
                      "error": "",
                      "created_at": "2025-09-03T19:25:16.047Z",
                      "updated_at": "2025-09-03T19:25:16.047Z"
                    }
                  },
                  "verified": {
                    "summary": "Verification successfully completed with schema requirement",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": null,
                      "schema_attributes": {
                        "domain": {
                          "restrictions": [
                            {
                              "schema_id": "E8BS9Fcg3cu2m9Dwaa3hVG:2:Email:1.0"
                            }
                          ]
                        }
                      },
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "done",
                      "complete": true,
                      "result": true,
                      "result_string": "Verified",
                      "result_data": [
                        {
                          "name": "domain",
                          "value": "example.com"
                        }
                      ],
                      "presentation_exchange_id": [
                        "db4def64-aa8f-4a08-9790-47f4da2d5cad"
                      ],
                      "error": "",
                      "created_at": "2025-07-08T22:02:31.434Z",
                      "updated_at": "2025-07-08T22:02:41.883Z"
                    }
                  },
                  "verified-no-schema": {
                    "summary": "Verification successfully completed without schema requirement",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "bd8d1663-38ac-46c8-9314-7d26bf731c88",
                      "contact_id": "",
                      "invitation_id": 1,
                      "schema_id": null,
                      "schema_attributes": {
                        "address": {
                          "restrictions": [
                            {}
                          ]
                        }
                      },
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "done",
                      "complete": true,
                      "result": true,
                      "result_string": "Verified",
                      "result_data": [
                        {
                          "name": "address",
                          "value": "timmy@example.com"
                        }
                      ],
                      "presentation_exchange_id": [
                        "06876af7-a2b1-4a2f-a0ce-bca9c5616817"
                      ],
                      "error": "",
                      "created_at": "2025-07-08T22:04:34.061Z",
                      "updated_at": "2025-07-08T22:04:42.346Z"
                    }
                  },
                  "self-attested": {
                    "summary": "Self-attested presentation verified successfully",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "1fc25f95-1bd7-4abc-8c93-1c83a211c9ff",
                      "contact_id": "",
                      "invitation_id": 8,
                      "schema_id": null,
                      "schema_attributes": {
                        "age": {
                          "restrictions": []
                        }
                      },
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "done",
                      "complete": true,
                      "result": true,
                      "result_string": "Verified",
                      "result_data": [
                        {
                          "name": "age",
                          "value": "38"
                        }
                      ],
                      "presentation_exchange_id": [
                        "09e3927e-f3b5-4922-b09d-ffdf9348bd7c"
                      ],
                      "error": "",
                      "created_at": "2025-07-08T22:52:04.435Z",
                      "updated_at": "2025-07-08T22:58:34.365Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/verifications/json-ld/{verification_id}": {
      "get": {
        "summary": "Retrieve a JSON-LD verification",
        "description": "This endpoint retrieves a JSON-LD verification by its ID using the provided API key.",
        "tags": [
          "Verifications"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "verification_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the verification.",
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "JSON-LD verification record retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verification_id": {
                      "type": "integer",
                      "description": "The ID of the verification",
                      "example": 1
                    },
                    "connection_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "The connection ID",
                      "example": "bd8d1663-38ac-46c8-9314-7d26bf731c88"
                    },
                    "contact_id": {
                      "type": "string",
                      "description": "The contact ID",
                      "example": ""
                    },
                    "invitation_id": {
                      "type": "integer",
                      "nullable": true,
                      "description": "The invitation ID",
                      "example": 1
                    },
                    "schema_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "The schema ID",
                      "example": null
                    },
                    "schema_attributes": {
                      "type": "object",
                      "description": "The schema attributes for verification"
                    },
                    "wallet_id": {
                      "type": "string",
                      "description": "The wallet ID",
                      "example": "70b6a0d2-628a-4de6-af96-144100f74878"
                    },
                    "rule": {
                      "type": "string",
                      "description": "The verification rule",
                      "example": "no rule"
                    },
                    "meta_data": {
                      "type": "object",
                      "nullable": true,
                      "description": "Additional metadata",
                      "example": null
                    },
                    "state": {
                      "type": "string",
                      "nullable": true,
                      "description": "The verification state",
                      "example": "done"
                    },
                    "complete": {
                      "type": "boolean",
                      "description": "Whether verification is complete",
                      "example": false
                    },
                    "result": {
                      "type": "boolean",
                      "description": "The verification result",
                      "example": false
                    },
                    "result_string": {
                      "type": "string",
                      "description": "Human readable verification result",
                      "example": "Pending"
                    },
                    "result_data": {
                      "type": "array",
                      "nullable": true,
                      "description": "The verification result data",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "value": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "presentation_exchange_id": {
                      "type": "array",
                      "description": "Presentation exchange IDs",
                      "items": {
                        "type": "string"
                      }
                    },
                    "error": {
                      "type": "string",
                      "description": "Error message if any",
                      "example": ""
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Creation timestamp",
                      "example": "2025-07-08T21:54:59.969Z"
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Update timestamp",
                      "example": "2025-07-08T21:55:01.017Z"
                    }
                  }
                },
                "examples": {
                  "revocable-verified": {
                    "summary": "Successful verification of revocable credential",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "1c50d6e1-5a43-48d8-837e-be3cbc815469",
                      "contact_id": "",
                      "invitation_id": 1,
                      "context": [
                        "https://www.w3.org/2018/credentials#VerifiableCredential",
                        "https://www.w3.org/2018/credentials/v1",
                        "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
                      ],
                      "attributes": [
                        "validFrom",
                        {
                          "issuer": "name"
                        },
                        {
                          "credentialSubject": {
                            "achievement": "criteria"
                          }
                        }
                      ],
                      "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                      "label": "Awesome JSON-LD Credential",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "done",
                      "complete": true,
                      "result": true,
                      "result_string": "Verified",
                      "result_data": [
                        {
                          "@context": [
                            "https://www.w3.org/2018/credentials/v1",
                            "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                            "https://www.w3.org/ns/credentials/status/v1",
                            "https://w3id.org/security/suites/ed25519-2020/v1"
                          ],
                          "id": "urn:uuid:e67ecd34-2891-45c5-85bd-84d1e34c0653",
                          "type": [
                            "VerifiableCredential",
                            "OpenBadgeCredential"
                          ],
                          "issuer": {
                            "id": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs",
                            "url": "https://www.awesome-issuer-url.com",
                            "name": "Awesome Issuer Name",
                            "type": [
                              "Profile"
                            ],
                            "email": "issuer-contact@example.org",
                            "image": {
                              "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                              "type": "Image",
                              "caption": "Awesome Issuer Logo"
                            },
                            "description": "An awesome Issuer who Issues awesome credentials."
                          },
                          "issuanceDate": "2024-11-29T21:07:11Z",
                          "expirationDate": "2030-11-29T11:34:20Z",
                          "validFrom": "2024-11-29T11:34:20Z",
                          "validUntil": "2030-11-29T11:34:20Z",
                          "credentialSubject": {
                            "type": [
                              "AchievementSubject"
                            ],
                            "achievement": {
                              "id": "https://example.org/achievements/degree",
                              "name": "Your name",
                              "type": [
                                "Achievement"
                              ],
                              "image": {
                                "id": "https://example.org/achievements/image.png",
                                "type": "Image"
                              },
                              "criteria": {
                                "type": "Criteria",
                                "narrative": "Your narrative"
                              },
                              "description": "Your description"
                            },
                            "id": "did:key:z6MkfsAwW9KmjuMGjeKzYnZ9APMoa6StVxpm9TR91XZYHBKJ"
                          },
                          "credentialStatus": {
                            "id": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/0#81407",
                            "type": "BitstringStatusListEntry",
                            "statusPurpose": "revocation",
                            "statusListIndex": 81407,
                            "statusListCredential": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/0"
                          },
                          "proof": {
                            "type": "Ed25519Signature2020",
                            "proofPurpose": "assertionMethod",
                            "verificationMethod": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs#assert",
                            "created": "2025-07-09T19:28:03.680Z",
                            "proofValue": "z2BjheUpL2P77hWdd1Snhw94vJzeuUoze5DTCjeHoAgYB2agA4dF1K4s3wdB2JCRS7yoXhGsk63xVBQw6aGnYV6H8"
                          },
                          "name": "New Awesome JSON-LD Credential",
                          "awardedDate": "2024-11-29T21:07:11Z",
                          "description": "Awesome Credential Description"
                        }
                      ],
                      "presentation_exchange_id": [
                        "188aba4f-7fc9-4040-93fd-37530fa46027"
                      ],
                      "error": "",
                      "created_at": "2025-07-09T19:30:24.271Z",
                      "updated_at": "2025-07-09T19:30:38.964Z"
                    }
                  },
                  "non-revocable-verified": {
                    "summary": "Successful verification of non-revocable credential",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "253c8641-a1bb-469e-8860-0c6e328caaa3",
                      "contact_id": "",
                      "invitation_id": 1,
                      "context": [
                        "https://www.w3.org/2018/credentials#VerifiableCredential",
                        "https://www.w3.org/2018/credentials/v1",
                        "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
                      ],
                      "attributes": [
                        "validFrom",
                        {
                          "issuer": "name"
                        },
                        {
                          "credentialSubject": {
                            "achievement": "criteria"
                          }
                        }
                      ],
                      "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                      "label": "Awesome JSON-LD Credential",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "done",
                      "complete": true,
                      "result": true,
                      "result_string": "Verified",
                      "result_data": [
                        {
                          "@context": [
                            "https://www.w3.org/2018/credentials/v1",
                            "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                            "https://www.w3.org/ns/credentials/status/v1",
                            "https://w3id.org/security/suites/ed25519-2020/v1"
                          ],
                          "id": "urn:uuid:168434fd-f8f7-4af4-a7b8-c27a9c787bbc",
                          "type": [
                            "VerifiableCredential",
                            "OpenBadgeCredential"
                          ],
                          "issuer": {
                            "id": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs",
                            "url": "https://www.awesome-issuer-url.com",
                            "name": "Awesome Issuer Name",
                            "type": [
                              "Profile"
                            ],
                            "email": "issuer-contact@example.org",
                            "image": {
                              "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                              "type": "Image",
                              "caption": "Awesome Issuer Logo"
                            },
                            "description": "An awesome Issuer who Issues awesome credentials."
                          },
                          "issuanceDate": "2024-11-29T21:07:11Z",
                          "expirationDate": "2030-11-29T11:34:20Z",
                          "validFrom": "2024-11-29T11:34:20Z",
                          "validUntil": "2030-11-29T11:34:20Z",
                          "credentialSubject": {
                            "type": [
                              "AchievementSubject"
                            ],
                            "achievement": {
                              "id": "https://example.org/achievements/degree",
                              "name": "Your name",
                              "type": [
                                "Achievement"
                              ],
                              "image": {
                                "id": "https://example.org/achievements/image.png",
                                "type": "Image"
                              },
                              "criteria": {
                                "type": "Criteria",
                                "narrative": "Your narrative"
                              },
                              "description": "Your description"
                            },
                            "id": "did:key:z6Mkj37aS5K9GjSppvyUgLf1iyb3LHfKLL1NzMAucpwzKbQK"
                          },
                          "proof": {
                            "type": "Ed25519Signature2020",
                            "proofPurpose": "assertionMethod",
                            "verificationMethod": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs#assert",
                            "created": "2025-07-09T22:23:44.784Z",
                            "proofValue": "z2Daa9Wf3ai1dnzcGoCG5xwQgVc6J2iTC5PE4WpDYYGLuSiTjj3DRJ5cW9d3fkQ3YMveJwiAmhm1ir9hm8Bjjtukf"
                          },
                          "name": "New Awesome JSON-LD Credential",
                          "awardedDate": "2024-11-29T21:07:11Z",
                          "description": "Awesome Credential Description"
                        }
                      ],
                      "presentation_exchange_id": [
                        "7677483d-d697-4b05-a632-b97ea34261ae"
                      ],
                      "error": "",
                      "created_at": "2025-07-09T22:26:27.629Z",
                      "updated_at": "2025-07-09T22:26:37.056Z"
                    }
                  },
                  "pending-invitation": {
                    "summary": "Pending verification to invitation with no active connections",
                    "value": {
                      "verification_id": 1,
                      "connection_id": null,
                      "contact_id": "",
                      "invitation_id": 1,
                      "context": [
                        "https://www.w3.org/2018/credentials#VerifiableCredential",
                        "https://www.w3.org/2018/credentials/v1",
                        "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
                      ],
                      "attributes": [
                        "validFrom",
                        {
                          "issuer": "name"
                        },
                        {
                          "credentialSubject": {
                            "achievement": "criteria"
                          }
                        }
                      ],
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "label": "Awesome JSON-LD Credential",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": null,
                      "complete": false,
                      "result": false,
                      "result_string": "New",
                      "result_data": null,
                      "presentation_exchange_id": [],
                      "error": "",
                      "created_at": "2025-09-03T19:25:16.047Z",
                      "updated_at": "2025-09-03T19:25:16.047Z"
                    }
                  },
                  "non-revocable-pending": {
                    "summary": "Pending verification of non-revocable credential",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "253c8641-a1bb-469e-8860-0c6e328caaa3",
                      "contact_id": "",
                      "invitation_id": 1,
                      "context": [
                        "https://www.w3.org/2018/credentials#VerifiableCredential",
                        "https://www.w3.org/2018/credentials/v1",
                        "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
                      ],
                      "attributes": [
                        "validFrom",
                        {
                          "issuer": "name"
                        },
                        {
                          "credentialSubject": {
                            "achievement": "criteria"
                          }
                        }
                      ],
                      "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                      "label": "Awesome JSON-LD Credential",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "request-sent",
                      "complete": false,
                      "result": false,
                      "result_string": "Pending",
                      "result_data": null,
                      "presentation_exchange_id": [
                        "f99ac560-ea93-431c-a6c7-52ab25e085c4"
                      ],
                      "error": "",
                      "created_at": "2025-07-09T22:25:27.460Z",
                      "updated_at": "2025-07-09T22:25:28.502Z"
                    }
                  },
                  "non-revocable-declined": {
                    "summary": "Declined verification of non-revocable credential",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "253c8641-a1bb-469e-8860-0c6e328caaa3",
                      "contact_id": "",
                      "invitation_id": 1,
                      "context": [
                        "https://www.w3.org/2018/credentials#VerifiableCredential",
                        "https://www.w3.org/2018/credentials/v1",
                        "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
                      ],
                      "attributes": [
                        "validFrom",
                        {
                          "issuer": "name"
                        },
                        {
                          "credentialSubject": {
                            "achievement": "criteria"
                          }
                        }
                      ],
                      "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                      "label": "Awesome JSON-LD Credential",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "abandoned",
                      "complete": true,
                      "result": false,
                      "result_string": "Declined",
                      "result_data": null,
                      "presentation_exchange_id": [
                        "b6251186-ab0d-41ec-8cd3-f140557d26be"
                      ],
                      "error": "",
                      "created_at": "2025-07-09T22:27:16.480Z",
                      "updated_at": "2025-07-09T22:27:25.127Z"
                    }
                  },
                  "not-verified": {
                    "summary": "Failed verification of non-revocable credential",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "253c8641-a1bb-469e-8860-0c6e328caaa3",
                      "contact_id": "",
                      "invitation_id": 1,
                      "context": [
                        "https://www.w3.org/2018/credentials#VerifiableCredential",
                        "https://www.w3.org/2018/credentials/v1",
                        "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
                      ],
                      "attributes": [
                        "validFrom",
                        {
                          "issuer": "name"
                        },
                        {
                          "credentialSubject": {
                            "achievement": "criteria"
                          }
                        }
                      ],
                      "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                      "label": "Awesome JSON-LD Credential",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "done",
                      "complete": true,
                      "result": false,
                      "result_string": "Not Verified",
                      "result_data": null,
                      "presentation_exchange_id": [
                        "1d7d22fb-e9b9-49c4-806f-838ca220742b"
                      ],
                      "error": "",
                      "created_at": "2025-07-09T23:00:15.422Z",
                      "updated_at": "2025-07-09T23:00:24.300Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "JSON-LD verification record not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "JSON-LD verification record not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/verifications/json-ld": {
      "post": {
        "summary": "Trigger a JSON-LD verification flow",
        "description": "This endpoint allows you to trigger a JSON-LD verification flow.",
        "tags": [
          "Verifications"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "timeout",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "The timeout for the verification (seconds).",
            "example": 30
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "invitation_id": {
                    "type": "integer",
                    "description": "The ID of the invitation.",
                    "example": 1
                  },
                  "contact_id": {
                    "type": "string",
                    "description": "The ID of the contact.",
                    "example": ""
                  },
                  "definitions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "context": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "A list of context strings.",
                          "example": [
                            "https://www.w3.org/2018/credentials#VerifiableCredential",
                            "https://www.w3.org/2018/credentials/v1",
                            "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
                          ]
                        },
                        "attributes": {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "object",
                                "additionalProperties": true
                              }
                            ]
                          },
                          "description": "A list of attribute strings or objects with nested properties.",
                          "example": [
                            "validFrom",
                            {
                              "issuer": "name"
                            },
                            {
                              "credentialSubject": {
                                "achievement": "criteria"
                              }
                            }
                          ]
                        },
                        "label": {
                          "type": "string",
                          "description": "The label for the definition.",
                          "example": "Awesome JSON-LD Credential"
                        }
                      }
                    },
                    "description": "The definitions for the verification."
                  },
                  "rule": {
                    "type": "string",
                    "description": "The rule for the verification.",
                    "example": "no rule"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Verification was triggered",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verification_id": {
                      "type": "integer",
                      "description": "The ID of the verification",
                      "example": 1
                    },
                    "connection_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "The connection ID",
                      "example": "bd8d1663-38ac-46c8-9314-7d26bf731c88"
                    },
                    "contact_id": {
                      "type": "string",
                      "description": "The contact ID",
                      "example": ""
                    },
                    "invitation_id": {
                      "type": "integer",
                      "nullable": true,
                      "description": "The invitation ID",
                      "example": 1
                    },
                    "schema_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "The schema ID",
                      "example": null
                    },
                    "schema_attributes": {
                      "type": "object",
                      "description": "The schema attributes for verification"
                    },
                    "wallet_id": {
                      "type": "string",
                      "description": "The wallet ID",
                      "example": "70b6a0d2-628a-4de6-af96-144100f74878"
                    },
                    "rule": {
                      "type": "string",
                      "description": "The verification rule",
                      "example": "no rule"
                    },
                    "meta_data": {
                      "type": "object",
                      "nullable": true,
                      "description": "Additional metadata",
                      "example": null
                    },
                    "state": {
                      "type": "string",
                      "nullable": true,
                      "description": "The verification state",
                      "example": "done"
                    },
                    "complete": {
                      "type": "boolean",
                      "description": "Whether verification is complete",
                      "example": false
                    },
                    "result": {
                      "type": "boolean",
                      "description": "The verification result",
                      "example": false
                    },
                    "result_string": {
                      "type": "string",
                      "description": "Human readable verification result",
                      "example": "Pending"
                    },
                    "result_data": {
                      "type": "array",
                      "nullable": true,
                      "description": "The verification result data",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "value": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "presentation_exchange_id": {
                      "type": "array",
                      "description": "Presentation exchange IDs",
                      "items": {
                        "type": "string"
                      }
                    },
                    "error": {
                      "type": "string",
                      "description": "Error message if any",
                      "example": ""
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Creation timestamp",
                      "example": "2025-07-08T21:54:59.969Z"
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Update timestamp",
                      "example": "2025-07-08T21:55:01.017Z"
                    }
                  }
                },
                "examples": {
                  "revocable-verified": {
                    "summary": "Successful verification of revocable credential",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "1c50d6e1-5a43-48d8-837e-be3cbc815469",
                      "contact_id": "",
                      "invitation_id": 1,
                      "context": [
                        "https://www.w3.org/2018/credentials#VerifiableCredential",
                        "https://www.w3.org/2018/credentials/v1",
                        "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
                      ],
                      "attributes": [
                        "validFrom",
                        {
                          "issuer": "name"
                        },
                        {
                          "credentialSubject": {
                            "achievement": "criteria"
                          }
                        }
                      ],
                      "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                      "label": "Awesome JSON-LD Credential",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "done",
                      "complete": true,
                      "result": true,
                      "result_string": "Verified",
                      "result_data": [
                        {
                          "@context": [
                            "https://www.w3.org/2018/credentials/v1",
                            "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                            "https://www.w3.org/ns/credentials/status/v1",
                            "https://w3id.org/security/suites/ed25519-2020/v1"
                          ],
                          "id": "urn:uuid:e67ecd34-2891-45c5-85bd-84d1e34c0653",
                          "type": [
                            "VerifiableCredential",
                            "OpenBadgeCredential"
                          ],
                          "issuer": {
                            "id": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs",
                            "url": "https://www.awesome-issuer-url.com",
                            "name": "Awesome Issuer Name",
                            "type": [
                              "Profile"
                            ],
                            "email": "issuer-contact@example.org",
                            "image": {
                              "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                              "type": "Image",
                              "caption": "Awesome Issuer Logo"
                            },
                            "description": "An awesome Issuer who Issues awesome credentials."
                          },
                          "issuanceDate": "2024-11-29T21:07:11Z",
                          "expirationDate": "2030-11-29T11:34:20Z",
                          "validFrom": "2024-11-29T11:34:20Z",
                          "validUntil": "2030-11-29T11:34:20Z",
                          "credentialSubject": {
                            "type": [
                              "AchievementSubject"
                            ],
                            "achievement": {
                              "id": "https://example.org/achievements/degree",
                              "name": "Your name",
                              "type": [
                                "Achievement"
                              ],
                              "image": {
                                "id": "https://example.org/achievements/image.png",
                                "type": "Image"
                              },
                              "criteria": {
                                "type": "Criteria",
                                "narrative": "Your narrative"
                              },
                              "description": "Your description"
                            },
                            "id": "did:key:z6MkfsAwW9KmjuMGjeKzYnZ9APMoa6StVxpm9TR91XZYHBKJ"
                          },
                          "credentialStatus": {
                            "id": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/0#81407",
                            "type": "BitstringStatusListEntry",
                            "statusPurpose": "revocation",
                            "statusListIndex": 81407,
                            "statusListCredential": "https://example.com/jsonld-status-list/tenants/19fa3524-2859-43e2-ac48-2136c9d8a199/w3c/status/0"
                          },
                          "proof": {
                            "type": "Ed25519Signature2020",
                            "proofPurpose": "assertionMethod",
                            "verificationMethod": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs#assert",
                            "created": "2025-07-09T19:28:03.680Z",
                            "proofValue": "z2BjheUpL2P77hWdd1Snhw94vJzeuUoze5DTCjeHoAgYB2agA4dF1K4s3wdB2JCRS7yoXhGsk63xVBQw6aGnYV6H8"
                          },
                          "name": "New Awesome JSON-LD Credential",
                          "awardedDate": "2024-11-29T21:07:11Z",
                          "description": "Awesome Credential Description"
                        }
                      ],
                      "presentation_exchange_id": [
                        "188aba4f-7fc9-4040-93fd-37530fa46027"
                      ],
                      "error": "",
                      "created_at": "2025-07-09T19:30:24.271Z",
                      "updated_at": "2025-07-09T19:30:38.964Z"
                    }
                  },
                  "non-revocable-verified": {
                    "summary": "Successful verification of non-revocable credential",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "253c8641-a1bb-469e-8860-0c6e328caaa3",
                      "contact_id": "",
                      "invitation_id": 1,
                      "context": [
                        "https://www.w3.org/2018/credentials#VerifiableCredential",
                        "https://www.w3.org/2018/credentials/v1",
                        "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
                      ],
                      "attributes": [
                        "validFrom",
                        {
                          "issuer": "name"
                        },
                        {
                          "credentialSubject": {
                            "achievement": "criteria"
                          }
                        }
                      ],
                      "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                      "label": "Awesome JSON-LD Credential",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "done",
                      "complete": true,
                      "result": true,
                      "result_string": "Verified",
                      "result_data": [
                        {
                          "@context": [
                            "https://www.w3.org/2018/credentials/v1",
                            "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                            "https://www.w3.org/ns/credentials/status/v1",
                            "https://w3id.org/security/suites/ed25519-2020/v1"
                          ],
                          "id": "urn:uuid:168434fd-f8f7-4af4-a7b8-c27a9c787bbc",
                          "type": [
                            "VerifiableCredential",
                            "OpenBadgeCredential"
                          ],
                          "issuer": {
                            "id": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs",
                            "url": "https://www.awesome-issuer-url.com",
                            "name": "Awesome Issuer Name",
                            "type": [
                              "Profile"
                            ],
                            "email": "issuer-contact@example.org",
                            "image": {
                              "id": "https://www.awesome-issuer-url.com/images/issuer-logo.png",
                              "type": "Image",
                              "caption": "Awesome Issuer Logo"
                            },
                            "description": "An awesome Issuer who Issues awesome credentials."
                          },
                          "issuanceDate": "2024-11-29T21:07:11Z",
                          "expirationDate": "2030-11-29T11:34:20Z",
                          "validFrom": "2024-11-29T11:34:20Z",
                          "validUntil": "2030-11-29T11:34:20Z",
                          "credentialSubject": {
                            "type": [
                              "AchievementSubject"
                            ],
                            "achievement": {
                              "id": "https://example.org/achievements/degree",
                              "name": "Your name",
                              "type": [
                                "Achievement"
                              ],
                              "image": {
                                "id": "https://example.org/achievements/image.png",
                                "type": "Image"
                              },
                              "criteria": {
                                "type": "Criteria",
                                "narrative": "Your narrative"
                              },
                              "description": "Your description"
                            },
                            "id": "did:key:z6Mkj37aS5K9GjSppvyUgLf1iyb3LHfKLL1NzMAucpwzKbQK"
                          },
                          "proof": {
                            "type": "Ed25519Signature2020",
                            "proofPurpose": "assertionMethod",
                            "verificationMethod": "did:indy:indicio:test:JKdq87RF5kEsfv7b8BAdqs#assert",
                            "created": "2025-07-09T22:23:44.784Z",
                            "proofValue": "z2Daa9Wf3ai1dnzcGoCG5xwQgVc6J2iTC5PE4WpDYYGLuSiTjj3DRJ5cW9d3fkQ3YMveJwiAmhm1ir9hm8Bjjtukf"
                          },
                          "name": "New Awesome JSON-LD Credential",
                          "awardedDate": "2024-11-29T21:07:11Z",
                          "description": "Awesome Credential Description"
                        }
                      ],
                      "presentation_exchange_id": [
                        "7677483d-d697-4b05-a632-b97ea34261ae"
                      ],
                      "error": "",
                      "created_at": "2025-07-09T22:26:27.629Z",
                      "updated_at": "2025-07-09T22:26:37.056Z"
                    }
                  },
                  "pending-invitation": {
                    "summary": "Pending verification to invitation with no active connections",
                    "value": {
                      "verification_id": 1,
                      "connection_id": null,
                      "contact_id": "",
                      "invitation_id": 1,
                      "context": [
                        "https://www.w3.org/2018/credentials#VerifiableCredential",
                        "https://www.w3.org/2018/credentials/v1",
                        "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
                      ],
                      "attributes": [
                        "validFrom",
                        {
                          "issuer": "name"
                        },
                        {
                          "credentialSubject": {
                            "achievement": "criteria"
                          }
                        }
                      ],
                      "wallet_id": "70b6a0d2-628a-4de6-af96-144100f74878",
                      "label": "Awesome JSON-LD Credential",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": null,
                      "complete": false,
                      "result": false,
                      "result_string": "New",
                      "result_data": null,
                      "presentation_exchange_id": [],
                      "error": "",
                      "created_at": "2025-09-03T19:25:16.047Z",
                      "updated_at": "2025-09-03T19:25:16.047Z"
                    }
                  },
                  "non-revocable-pending": {
                    "summary": "Pending verification of non-revocable credential",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "253c8641-a1bb-469e-8860-0c6e328caaa3",
                      "contact_id": "",
                      "invitation_id": 1,
                      "context": [
                        "https://www.w3.org/2018/credentials#VerifiableCredential",
                        "https://www.w3.org/2018/credentials/v1",
                        "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
                      ],
                      "attributes": [
                        "validFrom",
                        {
                          "issuer": "name"
                        },
                        {
                          "credentialSubject": {
                            "achievement": "criteria"
                          }
                        }
                      ],
                      "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                      "label": "Awesome JSON-LD Credential",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "request-sent",
                      "complete": false,
                      "result": false,
                      "result_string": "Pending",
                      "result_data": null,
                      "presentation_exchange_id": [
                        "f99ac560-ea93-431c-a6c7-52ab25e085c4"
                      ],
                      "error": "",
                      "created_at": "2025-07-09T22:25:27.460Z",
                      "updated_at": "2025-07-09T22:25:28.502Z"
                    }
                  },
                  "non-revocable-declined": {
                    "summary": "Declined verification of non-revocable credential",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "253c8641-a1bb-469e-8860-0c6e328caaa3",
                      "contact_id": "",
                      "invitation_id": 1,
                      "context": [
                        "https://www.w3.org/2018/credentials#VerifiableCredential",
                        "https://www.w3.org/2018/credentials/v1",
                        "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
                      ],
                      "attributes": [
                        "validFrom",
                        {
                          "issuer": "name"
                        },
                        {
                          "credentialSubject": {
                            "achievement": "criteria"
                          }
                        }
                      ],
                      "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                      "label": "Awesome JSON-LD Credential",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "abandoned",
                      "complete": true,
                      "result": false,
                      "result_string": "Declined",
                      "result_data": null,
                      "presentation_exchange_id": [
                        "b6251186-ab0d-41ec-8cd3-f140557d26be"
                      ],
                      "error": "",
                      "created_at": "2025-07-09T22:27:16.480Z",
                      "updated_at": "2025-07-09T22:27:25.127Z"
                    }
                  },
                  "not-verified": {
                    "summary": "Failed verification of non-revocable credential",
                    "value": {
                      "verification_id": 1,
                      "connection_id": "253c8641-a1bb-469e-8860-0c6e328caaa3",
                      "contact_id": "",
                      "invitation_id": 1,
                      "context": [
                        "https://www.w3.org/2018/credentials#VerifiableCredential",
                        "https://www.w3.org/2018/credentials/v1",
                        "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
                      ],
                      "attributes": [
                        "validFrom",
                        {
                          "issuer": "name"
                        },
                        {
                          "credentialSubject": {
                            "achievement": "criteria"
                          }
                        }
                      ],
                      "wallet_id": "19fa3524-2859-43e2-ac48-2136c9d8a199",
                      "label": "Awesome JSON-LD Credential",
                      "rule": "no rule",
                      "meta_data": null,
                      "state": "done",
                      "complete": true,
                      "result": false,
                      "result_string": "Not Verified",
                      "result_data": null,
                      "presentation_exchange_id": [
                        "1d7d22fb-e9b9-49c4-806f-838ca220742b"
                      ],
                      "error": "",
                      "created_at": "2025-07-09T23:00:15.422Z",
                      "updated_at": "2025-07-09T23:00:24.300Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Internal server error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}