{
  "components": {
    "schemas": {
      "AttachmentData": {
        "properties": {
          "base64": {
            "format": "base64",
            "type": "string"
          },
          "json": {},
          "links": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "jws": {},
          "sha256": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "Attachment": {
        "properties": {
          "description": {
            "type": "string"
          },
          "filename": {
            "type": "string"
          },
          "mimeType": {
            "type": "string"
          },
          "lastmodTime": {
            "oneOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "format": "date-time",
                "type": "string"
              }
            ]
          },
          "byteCount": {
            "type": "integer"
          },
          "data": {
            "$ref": "#/components/schemas/AttachmentData"
          }
        },
        "type": "object",
        "required": [
          "data"
        ]
      },
      "Service": {
        "properties": {
          "id": {
            "type": "string"
          },
          "serviceEndpoint": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "id",
          "serviceEndpoint",
          "type"
        ]
      },
      "DidCommService": {
        "properties": {
          "recipientKeys": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "minItems": 1
          },
          "routingKeys": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "accept": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "type": "string"
          },
          "serviceEndpoint": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "recipientKeys",
          "id",
          "serviceEndpoint",
          "type"
        ]
      },
      "ServiceDecorator": {
        "properties": {
          "recipientKeys": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "routingKeys": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "serviceEndpoint": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "recipientKeys",
          "serviceEndpoint"
        ]
      },
      "BaseMessage": {
        "properties": {
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "type": {
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$",
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "id",
          "type"
        ]
      },
      "ThreadDecorator": {
        "properties": {
          "threadId": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "parentThreadId": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "senderOrder": {
            "type": "integer"
          },
          "receivedOrders": {}
        },
        "type": "object"
      },
      "TimingDecorator": {
        "properties": {
          "inTime": {
            "oneOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "format": "date-time",
                "type": "string"
              }
            ]
          },
          "outTime": {
            "oneOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "format": "date-time",
                "type": "string"
              }
            ]
          },
          "staleTime": {
            "oneOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "format": "date-time",
                "type": "string"
              }
            ]
          },
          "expiresTime": {
            "oneOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "format": "date-time",
                "type": "string"
              }
            ]
          },
          "delayMilli": {
            "type": "number"
          },
          "waitUntilTime": {
            "oneOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "format": "date-time",
                "type": "string"
              }
            ]
          }
        },
        "type": "object"
      },
      "TransportDecorator": {
        "properties": {
          "returnRoute": {
            "enum": [
              "none",
              "all",
              "thread"
            ],
            "type": "string"
          },
          "returnRouteThread": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ThreadDecoratorExtension": {
        "properties": {
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "type": {
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$",
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "id",
          "type"
        ]
      },
      "L10nDecoratorExtension": {
        "properties": {
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "type": {
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          }
        },
        "type": "object",
        "required": [
          "id",
          "type"
        ]
      },
      "TransportDecoratorExtension": {
        "properties": {
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "type": {
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          }
        },
        "type": "object",
        "required": [
          "id",
          "type"
        ]
      },
      "TimingDecoratorExtension": {
        "properties": {
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "type": {
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          }
        },
        "type": "object",
        "required": [
          "id",
          "type"
        ]
      },
      "AckDecoratorExtension": {
        "properties": {
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "type": {
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          }
        },
        "type": "object",
        "required": [
          "id",
          "type"
        ]
      },
      "AttachmentDecoratorExtension": {
        "properties": {
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "type": {
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          }
        },
        "type": "object",
        "required": [
          "id",
          "type"
        ]
      },
      "ServiceDecoratorExtension": {
        "properties": {
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "type": {
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          }
        },
        "type": "object",
        "required": [
          "id",
          "type"
        ]
      },
      "ProblemReportMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/notification/1.0/problem-report"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "problemItems": {},
          "whoRetries": {
            "enum": [
              "YOU",
              "ME",
              "BOTH",
              "NONE"
            ],
            "type": "string"
          },
          "fixHint": {},
          "where": {
            "enum": [
              "CLOUD",
              "EDGE",
              "WIRE",
              "AGENCY"
            ],
            "type": "string"
          },
          "impact": {
            "enum": [
              "MESSAGE",
              "THREAD",
              "CONNECTION"
            ],
            "type": "string"
          },
          "noticedTime": {
            "type": "string"
          },
          "trackingUri": {
            "type": "string"
          },
          "escalationUri": {
            "type": "string"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "id"
        ]
      },
      "BatchMessageMessage": {
        "properties": {
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "message": {
            "type": "object"
          }
        },
        "type": "object",
        "required": [
          "id",
          "message"
        ]
      },
      "BatchMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/messagepickup/1.0/batch"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "messages": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "messages",
          "id"
        ]
      },
      "BatchPickupMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/messagepickup/1.0/batch-pickup"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "batchSize": {
            "type": "integer"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "batchSize",
          "id"
        ]
      },
      "ForwardMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/routing/1.0/forward"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "to": {
            "type": "string"
          },
          "message": {
            "type": "object"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "to",
          "message",
          "id"
        ]
      },
      "KeylistUpdate": {
        "properties": {
          "recipientKey": {
            "type": "string"
          },
          "action": {
            "enum": [
              "add",
              "remove"
            ],
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "recipientKey",
          "action"
        ]
      },
      "KeylistUpdateMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/coordinate-mediation/1.0/keylist-update"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "updates": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "updates",
          "id"
        ]
      },
      "KeylistUpdated": {
        "properties": {
          "recipientKey": {
            "type": "string"
          },
          "action": {
            "enum": [
              "add",
              "remove"
            ],
            "type": "string"
          },
          "result": {
            "enum": [
              "client_error",
              "server_error",
              "no_change",
              "success"
            ],
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "recipientKey",
          "action",
          "result"
        ]
      },
      "KeylistUpdateResponseMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/coordinate-mediation/1.0/keylist-update-response"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "updated": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "updated",
          "id"
        ]
      },
      "MediationGrantMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/coordinate-mediation/1.0/mediate-grant"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "routingKeys": {
            "items": {},
            "type": "string",
            "minLength": 1
          },
          "endpoint": {
            "type": "string",
            "minLength": 1
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "routingKeys",
          "endpoint",
          "id"
        ]
      },
      "MediationDenyMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/coordinate-mediation/1.0/mediate-deny"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "id"
        ]
      },
      "MediationRequestMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/coordinate-mediation/1.0/mediate-request"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "sentTime": {
            "oneOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "format": "date-time",
                "type": "string"
              }
            ]
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "sentTime",
          "id"
        ]
      },
      "PublicKey": {
        "properties": {
          "id": {
            "type": "string"
          },
          "controller": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "id",
          "controller",
          "type"
        ]
      },
      "Ed25119Sig2018": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "Ed25519VerificationKey2018"
            ]
          },
          "value": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "controller": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "type",
          "value",
          "id",
          "controller"
        ]
      },
      "EddsaSaSigSecp256k1": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "Secp256k1VerificationKey2018"
            ]
          },
          "value": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "controller": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "type",
          "value",
          "id",
          "controller"
        ]
      },
      "RsaSig2018": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "RsaVerificationKey2018"
            ]
          },
          "value": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "controller": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "type",
          "value",
          "id",
          "controller"
        ]
      },
      "EmbeddedAuthentication": {
        "properties": {
          "publicKey": {
            "$ref": "#/components/schemas/PublicKey",
            "minLength": 1,
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "publicKey"
        ]
      },
      "ReferencedAuthentication": {
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "type"
        ]
      },
      "IndyAgentService": {
        "properties": {
          "recipientKeys": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "minItems": 1
          },
          "routingKeys": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "type": "string"
          },
          "serviceEndpoint": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "recipientKeys",
          "id",
          "serviceEndpoint",
          "type"
        ]
      },
      "DidDoc": {
        "properties": {
          "context": {
            "type": "string",
            "enum": [
              "https://w3id.org/did/v1"
            ]
          },
          "id": {
            "type": "string"
          },
          "publicKey": {
            "$ref": "#/components/schemas/Array",
            "items": {},
            "type": "array"
          },
          "service": {
            "$ref": "#/components/schemas/Array",
            "items": {},
            "type": "array"
          },
          "authentication": {
            "$ref": "#/components/schemas/Array",
            "items": {},
            "type": "array"
          }
        },
        "type": "object",
        "required": [
          "context",
          "id",
          "publicKey",
          "service",
          "authentication"
        ]
      },
      "Connection": {
        "properties": {
          "did": {
            "type": "string"
          },
          "didDoc": {
            "$ref": "#/components/schemas/DidDoc"
          }
        },
        "type": "object",
        "required": [
          "did"
        ]
      },
      "ConnectionInvitationMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/connections/1.0/invitation"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "label": {
            "type": "string"
          },
          "did": {
            "type": "string"
          },
          "recipientKeys": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "serviceEndpoint": {
            "type": "string"
          },
          "routingKeys": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "imageUrl": {
            "format": "url",
            "type": "string"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "label",
          "id"
        ]
      },
      "ConnectionRequestMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/connections/1.0/request"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "label": {
            "type": "string"
          },
          "connection": {
            "$ref": "#/components/schemas/Connection"
          },
          "imageUrl": {
            "format": "url",
            "type": "string"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "label",
          "connection",
          "id"
        ]
      },
      "SignatureDecorator": {
        "properties": {
          "signatureType": {
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$",
            "type": "string"
          },
          "signatureData": {
            "type": "string"
          },
          "signer": {
            "type": "string"
          },
          "signature": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "signatureType",
          "signatureData",
          "signer",
          "signature"
        ]
      },
      "ConnectionResponseMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/connections/1.0/response"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "connectionSig": {
            "$ref": "#/components/schemas/SignatureDecorator"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "connectionSig",
          "id"
        ]
      },
      "TrustPingMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/trust_ping/1.0/ping"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "comment": {
            "type": "string"
          },
          "responseRequested": {
            "type": "boolean"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "responseRequested",
          "id"
        ]
      },
      "TrustPingResponseMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/trust_ping/1.0/ping_response"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "comment": {
            "type": "string"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "id"
        ]
      },
      "ConnectionProblemReportMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/connection/1.0/problem-report"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          },
          "problemItems": {},
          "whoRetries": {
            "enum": [
              "YOU",
              "ME",
              "BOTH",
              "NONE"
            ],
            "type": "string"
          },
          "fixHint": {},
          "where": {
            "enum": [
              "CLOUD",
              "EDGE",
              "WIRE",
              "AGENCY"
            ],
            "type": "string"
          },
          "impact": {
            "enum": [
              "MESSAGE",
              "THREAD",
              "CONNECTION"
            ],
            "type": "string"
          },
          "noticedTime": {
            "type": "string"
          },
          "trackingUri": {
            "type": "string"
          },
          "escalationUri": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "type",
          "id"
        ]
      },
      "AckMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/notification/1.0/ack"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "status": {
            "enum": [
              "OK",
              "FAIL",
              "PENDING"
            ],
            "type": "string"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "status",
          "id"
        ]
      },
      "BasicMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/basicmessage/1.0/message"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "sentTime": {
            "oneOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "format": "date-time",
                "type": "string"
              }
            ]
          },
          "content": {
            "type": "string"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "sentTime",
          "content",
          "id"
        ]
      },
      "CredentialPreviewAttribute": {
        "properties": {
          "name": {
            "type": "string"
          },
          "mimeType": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "name",
          "value"
        ]
      },
      "CredentialPreview": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/issue-credential/1.0/credential-preview"
            ]
          },
          "attributes": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          }
        },
        "type": "object",
        "required": [
          "type",
          "attributes"
        ]
      },
      "CredentialAckMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/issue-credential/1.0/ack"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          },
          "status": {
            "enum": [
              "OK",
              "FAIL",
              "PENDING"
            ],
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "type",
          "id",
          "status"
        ]
      },
      "RequestCredentialMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/issue-credential/1.0/request-credential"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "comment": {
            "type": "string"
          },
          "requestAttachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "requestAttachments",
          "id"
        ]
      },
      "IssueCredentialMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/issue-credential/1.0/issue-credential"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "comment": {
            "type": "string"
          },
          "credentialAttachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "credentialAttachments",
          "id"
        ]
      },
      "OfferCredentialMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/issue-credential/1.0/offer-credential"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "comment": {
            "type": "string"
          },
          "credentialPreview": {
            "$ref": "#/components/schemas/CredentialPreview"
          },
          "offerAttachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "credentialPreview",
          "offerAttachments",
          "id"
        ]
      },
      "ProposeCredentialMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/issue-credential/1.0/propose-credential"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "comment": {
            "type": "string"
          },
          "credentialProposal": {
            "$ref": "#/components/schemas/CredentialPreview"
          },
          "schemaIssuerDid": {
            "type": "string"
          },
          "schemaId": {
            "type": "string"
          },
          "schemaName": {
            "type": "string"
          },
          "schemaVersion": {
            "type": "string"
          },
          "credentialDefinitionId": {
            "type": "string"
          },
          "issuerDid": {
            "type": "string"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "id"
        ]
      },
      "CredentialProblemReportMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/issue-credential/1.0/problem-report"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          },
          "problemItems": {},
          "whoRetries": {
            "enum": [
              "YOU",
              "ME",
              "BOTH",
              "NONE"
            ],
            "type": "string"
          },
          "fixHint": {},
          "where": {
            "enum": [
              "CLOUD",
              "EDGE",
              "WIRE",
              "AGENCY"
            ],
            "type": "string"
          },
          "impact": {
            "enum": [
              "MESSAGE",
              "THREAD",
              "CONNECTION"
            ],
            "type": "string"
          },
          "noticedTime": {
            "type": "string"
          },
          "trackingUri": {
            "type": "string"
          },
          "escalationUri": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "type",
          "id"
        ]
      },
      "DiscloseProtocol": {
        "properties": {
          "protocolId": {
            "type": "string"
          },
          "roles": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object",
        "required": [
          "protocolId"
        ]
      },
      "DiscloseMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/discover-features/1.0/disclose"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "protocols": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "protocols",
          "id"
        ]
      },
      "QueryMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/discover-features/1.0/query"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "query": {
            "type": "string"
          },
          "comment": {
            "type": "string"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "query",
          "id"
        ]
      },
      "PresentationPreviewAttribute": {
        "properties": {
          "credentialDefinitionId": {
            "type": "string"
          },
          "mimeType": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "referent": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "PresentationPreviewPredicate": {
        "properties": {
          "name": {
            "type": "string"
          },
          "credentialDefinitionId": {
            "type": "string"
          },
          "predicate": {
            "enum": [
              "<",
              "<=",
              ">",
              ">="
            ],
            "type": "string"
          },
          "threshold": {
            "type": "integer"
          }
        },
        "type": "object",
        "required": [
          "name",
          "credentialDefinitionId",
          "predicate",
          "threshold"
        ]
      },
      "PresentationPreview": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/present-proof/1.0/presentation-preview"
            ]
          },
          "attributes": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          },
          "predicates": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          }
        },
        "type": "object",
        "required": [
          "type",
          "attributes",
          "predicates"
        ]
      },
      "ProposePresentationMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/present-proof/1.0/propose-presentation"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "comment": {
            "type": "string"
          },
          "presentationProposal": {
            "$ref": "#/components/schemas/PresentationPreview"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "presentationProposal",
          "id"
        ]
      },
      "AttributeValue": {
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "name",
          "value"
        ]
      },
      "AttributeFilter": {
        "properties": {
          "schemaId": {
            "type": "string"
          },
          "schemaIssuerDid": {
            "type": "string"
          },
          "schemaName": {
            "type": "string"
          },
          "schemaVersion": {
            "type": "string"
          },
          "issuerDid": {
            "type": "string"
          },
          "credentialDefinitionId": {
            "type": "string"
          },
          "attributeValue": {
            "$ref": "#/components/schemas/AttributeValue"
          }
        },
        "type": "object"
      },
      "ProofIdentifier": {
        "properties": {
          "schemaId": {
            "type": "string"
          },
          "credentialDefinitionId": {
            "type": "string"
          },
          "revocationRegistryId": {
            "type": "string"
          },
          "timestamp": {
            "type": "number"
          }
        },
        "type": "object",
        "required": [
          "schemaId",
          "credentialDefinitionId"
        ]
      },
      "ProofAttribute": {
        "properties": {
          "subProofIndex": {
            "type": "integer"
          },
          "raw": {
            "type": "string"
          },
          "encoded": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "subProofIndex",
          "raw",
          "encoded"
        ]
      },
      "RequestedProof": {
        "properties": {
          "revealedAttributes": {
            "items": {
              "$ref": "#/components/schemas/Map"
            },
            "type": "array"
          },
          "selfAttestedAttributes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object",
        "required": [
          "revealedAttributes",
          "selfAttestedAttributes"
        ]
      },
      "PartialProof": {
        "properties": {
          "identifiers": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          },
          "requestedProof": {
            "$ref": "#/components/schemas/RequestedProof"
          }
        },
        "type": "object",
        "required": [
          "identifiers",
          "requestedProof"
        ]
      },
      "IndyCredentialInfo": {
        "properties": {
          "referent": {
            "type": "string"
          },
          "attributes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "schemaId": {
            "type": "string"
          },
          "credentialDefinitionId": {
            "type": "string"
          },
          "revocationRegistryId": {
            "type": "string"
          },
          "credentialRevocationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "referent",
          "attributes",
          "schemaId",
          "credentialDefinitionId"
        ]
      },
      "RevocationInterval": {
        "properties": {
          "from": {
            "type": "integer"
          },
          "to": {
            "type": "integer"
          }
        },
        "type": "object"
      },
      "Credential": {
        "properties": {
          "credentialInfo": {
            "$ref": "#/components/schemas/IndyCredentialInfo"
          },
          "interval": {
            "$ref": "#/components/schemas/RevocationInterval"
          }
        },
        "type": "object",
        "required": [
          "credentialInfo"
        ]
      },
      "ProofAttributeInfo": {
        "properties": {
          "name": {
            "type": "string"
          },
          "names": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "nonRevoked": {
            "$ref": "#/components/schemas/RevocationInterval"
          },
          "restrictions": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ProofPredicateInfo": {
        "properties": {
          "name": {
            "type": "string"
          },
          "predicateType": {
            "enum": [
              "<",
              "<=",
              ">",
              ">="
            ],
            "type": "string"
          },
          "predicateValue": {
            "type": "integer"
          },
          "nonRevoked": {
            "$ref": "#/components/schemas/RevocationInterval"
          },
          "restrictions": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          }
        },
        "type": "object",
        "required": [
          "name",
          "predicateType",
          "predicateValue"
        ]
      },
      "ProofRequest": {
        "properties": {
          "name": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "nonce": {
            "type": "string"
          },
          "requestedAttributes": {
            "items": {
              "$ref": "#/components/schemas/Map"
            },
            "type": "array",
            "$ref": "#/components/schemas/Map"
          },
          "requestedPredicates": {
            "items": {
              "$ref": "#/components/schemas/Map"
            },
            "type": "array",
            "$ref": "#/components/schemas/Map"
          },
          "nonRevoked": {
            "$ref": "#/components/schemas/RevocationInterval"
          },
          "ver": {
            "type": "string",
            "enum": [
              "1.0",
              "2.0"
            ]
          }
        },
        "type": "object",
        "required": [
          "name",
          "version",
          "requestedAttributes",
          "requestedPredicates"
        ]
      },
      "RequestedAttribute": {
        "properties": {
          "credentialId": {
            "type": "string"
          },
          "timestamp": {
            "type": "integer"
          },
          "revealed": {
            "type": "boolean"
          }
        },
        "type": "object",
        "required": [
          "credentialId",
          "revealed"
        ]
      },
      "RequestedPredicate": {
        "properties": {
          "credentialId": {
            "type": "string"
          },
          "timestamp": {
            "type": "integer"
          }
        },
        "type": "object",
        "required": [
          "credentialId"
        ]
      },
      "RequestedCredentials": {
        "properties": {
          "requestedAttributes": {
            "items": {
              "$ref": "#/components/schemas/Object"
            },
            "type": "array"
          },
          "requestedPredicates": {
            "items": {
              "$ref": "#/components/schemas/Object"
            },
            "type": "array"
          }
        },
        "type": "object",
        "required": [
          "requestedAttributes",
          "requestedPredicates"
        ]
      },
      "RequestPresentationMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/present-proof/1.0/request-presentation"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "comment": {
            "type": "string"
          },
          "requestPresentationAttachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "requestPresentationAttachments",
          "id"
        ]
      },
      "PresentationMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/present-proof/1.0/presentation"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "comment": {
            "type": "string"
          },
          "presentationAttachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          }
        },
        "type": "object",
        "required": [
          "type",
          "presentationAttachments",
          "id"
        ]
      },
      "PresentationAckMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/present-proof/1.0/ack"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          },
          "status": {
            "enum": [
              "OK",
              "FAIL",
              "PENDING"
            ],
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "type",
          "id",
          "status"
        ]
      },
      "PresentationProblemReportMessage": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "https://didcomm.org/present-proof/1.0/problem-report"
            ],
            "pattern": "(.*?)([a-zA-Z0-9._-]+)\\/(\\d[^/]*)\\/([a-zA-Z0-9._-]+)$"
          },
          "id": {
            "pattern": "[-_./a-zA-Z0-9]{8,64}",
            "type": "string"
          },
          "thread": {
            "$ref": "#/components/schemas/ThreadDecorator"
          },
          "l10n": {
            "$ref": "#/components/schemas/L10nDecorator"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportDecorator"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDecorator"
          },
          "pleaseAck": {
            "$ref": "#/components/schemas/AckDecorator"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array",
            "$ref": "#/components/schemas/Array"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDecorator"
          },
          "problemItems": {},
          "whoRetries": {
            "enum": [
              "YOU",
              "ME",
              "BOTH",
              "NONE"
            ],
            "type": "string"
          },
          "fixHint": {},
          "where": {
            "enum": [
              "CLOUD",
              "EDGE",
              "WIRE",
              "AGENCY"
            ],
            "type": "string"
          },
          "impact": {
            "enum": [
              "MESSAGE",
              "THREAD",
              "CONNECTION"
            ],
            "type": "string"
          },
          "noticedTime": {
            "type": "string"
          },
          "trackingUri": {
            "type": "string"
          },
          "escalationUri": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "type",
          "id"
        ]
      },
      "BasicMessageRequest": {
        "properties": {
          "content": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "content"
        ]
      },
      "InvitationConfigRequest": {
        "properties": {
          "autoAcceptConnection": {
            "type": "boolean"
          },
          "alias": {
            "type": "string"
          },
          "mediatorId": {
            "type": "string"
          },
          "myLabel": {
            "type": "string"
          },
          "myImageUrl": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "ReceiveInvitationByUrlRequest": {
        "properties": {
          "invitationUrl": {
            "type": "string"
          },
          "autoAcceptConnection": {
            "type": "boolean"
          },
          "alias": {
            "type": "string"
          },
          "mediatorId": {
            "type": "string"
          },
          "myLabel": {
            "type": "string"
          },
          "myImageUrl": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "invitationUrl"
        ]
      },
      "InvitationRequest": {
        "properties": {
          "label": {
            "type": "string"
          },
          "did": {
            "type": "string"
          },
          "recipientKeys": {
            "items": {},
            "type": "array"
          },
          "serviceEndpoint": {
            "type": "string"
          },
          "routingKeys": {
            "items": {},
            "type": "array"
          }
        },
        "type": "object",
        "required": [
          "label"
        ]
      },
      "ReceiveInvitationRequest": {
        "properties": {
          "invitation": {
            "$ref": "#/components/schemas/InvitationRequest"
          },
          "autoAcceptConnection": {
            "type": "boolean"
          },
          "alias": {
            "type": "string"
          },
          "mediatorId": {
            "type": "string"
          },
          "myLabel": {
            "type": "string"
          },
          "myImageUrl": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "invitation"
        ]
      },
      "AcceptCredentialProposalRequest": {
        "properties": {
          "comment": {
            "type": "string"
          },
          "credentialDefinitionId": {
            "type": "string"
          },
          "autoAcceptCredential": {
            "enum": [
              "always",
              "contentApproved",
              "never"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "LinkedAttachment": {
        "properties": {
          "attributeName": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "attributeName"
        ]
      },
      "CredentialOfferTemp": {
        "properties": {
          "credentialDefinitionId": {
            "pattern": "^([a-zA-Z0-9]{21,22}):3:CL:(([1-9][0-9]*)|([a-zA-Z0-9]{21,22}:2:.+:[0-9.]+)):(.+)?$",
            "type": "string"
          },
          "comment": {
            "type": "string"
          },
          "preview": {
            "$ref": "#/components/schemas/CredentialPreview"
          },
          "autoAcceptCredential": {
            "enum": [
              "always",
              "contentApproved",
              "never"
            ],
            "type": "string"
          },
          "attachments": {
            "$ref": "#/components/schemas/Array"
          },
          "linkedAttachments": {
            "$ref": "#/components/schemas/Array"
          }
        },
        "type": "object",
        "required": [
          "credentialDefinitionId",
          "preview"
        ]
      },
      "CredentialOfferRequest": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "credentialDefinitionId": {
            "pattern": "^([a-zA-Z0-9]{21,22}):3:CL:(([1-9][0-9]*)|([a-zA-Z0-9]{21,22}:2:.+:[0-9.]+)):(.+)?$",
            "type": "string"
          },
          "comment": {
            "type": "string"
          },
          "preview": {
            "$ref": "#/components/schemas/CredentialPreview"
          },
          "autoAcceptCredential": {
            "enum": [
              "always",
              "contentApproved",
              "never"
            ],
            "type": "string"
          },
          "attachments": {
            "$ref": "#/components/schemas/Array"
          },
          "linkedAttachments": {
            "$ref": "#/components/schemas/Array"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "credentialDefinitionId",
          "preview"
        ]
      },
      "CredentialProposalRequest": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "comment": {
            "type": "string"
          },
          "credentialProposal": {
            "not": {
              "type": "null"
            },
            "$ref": "#/components/schemas/CredentialPreview"
          },
          "schemaIssuerDid": {
            "pattern": "^(did:sov:)?[a-zA-Z0-9]{21,22}$",
            "type": "string"
          },
          "schemaId": {
            "pattern": "^[a-zA-Z0-9]{21,22}:2:.+:[0-9.]+$",
            "type": "string"
          },
          "schemaName": {
            "type": "string"
          },
          "schemaVersion": {
            "pattern": "^(\\d+\\.)?(\\d+\\.)?(\\*|\\d+)$",
            "type": "string"
          },
          "credentialDefinitionId": {
            "pattern": "^([a-zA-Z0-9]{21,22}):3:CL:(([1-9][0-9]*)|([a-zA-Z0-9]{21,22}:2:.+:[0-9.]+)):(.+)?$",
            "type": "string"
          },
          "issuerDid": {
            "pattern": "^(did:sov:)?[a-zA-Z0-9]{21,22}$",
            "type": "string"
          },
          "attachments": {},
          "linkedAttachments": {},
          "autoAcceptCredential": {
            "enum": [
              "always",
              "contentApproved",
              "never"
            ],
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "credentialProposal"
        ]
      },
      "CredentialDefinitionRequest": {
        "properties": {
          "tag": {
            "type": "string"
          },
          "supportRevocation": {
            "type": "boolean"
          },
          "schemaId": {
            "pattern": "^[a-zA-Z0-9]{21,22}:2:.+:[0-9.]+$",
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "tag",
          "supportRevocation",
          "schemaId"
        ]
      },
      "SchemaTemplate": {
        "properties": {
          "name": {
            "type": "string"
          },
          "version": {
            "pattern": "^(\\d+\\.)?(\\d+\\.)?(\\*|\\d+)$",
            "type": "string"
          },
          "attributes": {
            "items": {},
            "type": "array"
          }
        },
        "type": "object",
        "required": [
          "name",
          "version",
          "attributes"
        ]
      },
      "AcceptProofProposalRequest": {
        "properties": {
          "request": {},
          "comment": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "PresentationProofRequest": {
        "properties": {
          "filterByPresentationPreview": {
            "type": "boolean"
          },
          "comment": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "ProofRequestTemplate": {
        "properties": {
          "proofRequest": {
            "$ref": "#/components/schemas/ProofRequest"
          },
          "comment": {
            "type": "string"
          },
          "autoAcceptProof": {
            "enum": [
              "always",
              "contentApproved",
              "never"
            ],
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "proofRequest"
        ]
      },
      "ProofPresentationRequest": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "proofRequest": {
            "$ref": "#/components/schemas/ProofRequest"
          },
          "comment": {
            "type": "string"
          },
          "autoAcceptProof": {
            "enum": [
              "always",
              "contentApproved",
              "never"
            ],
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "proofRequest"
        ]
      },
      "ProofProposalRequest": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "attributes": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          },
          "predicates": {
            "items": {
              "$ref": "#/components/schemas/Array"
            },
            "type": "array"
          },
          "autoAcceptProof": {
            "enum": [
              "always",
              "contentApproved",
              "never"
            ],
            "type": "string"
          },
          "comment": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "attributes",
          "predicates"
        ]
      }
    }
  },
  "info": {
    "title": "ssi-abstraction-agent",
    "version": "0.8.0",
    "description": "Rest endpoint wrapper for using your agent over HTTP"
  },
  "openapi": "3.0.0",
  "paths": {
    "/agent/": {
      "get": {
        "operationId": "AgentController.getAgentInfo",
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Get agent info",
        "tags": [
          "Agent"
        ]
      }
    },
    "/basic-messages/{connectionId}": {
      "get": {
        "operationId": "BasicMessageController.getBasicMessages",
        "parameters": [
          {
            "in": "path",
            "name": "connectionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Get basic messages",
        "tags": [
          "Basic Message"
        ]
      },
      "post": {
        "operationId": "BasicMessageController.sendMessage",
        "parameters": [
          {
            "in": "path",
            "name": "connectionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BasicMessageRequest"
              }
            }
          },
          "description": "BasicMessageRequest",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Send message",
        "tags": [
          "Basic Message"
        ]
      }
    },
    "/connections/{connectionId}": {
      "get": {
        "operationId": "ConnectionController.getConnectionById",
        "parameters": [
          {
            "in": "path",
            "name": "connectionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Get connection by id",
        "tags": [
          "Connection"
        ]
      },
      "delete": {
        "operationId": "ConnectionController.deleteConnection",
        "parameters": [
          {
            "in": "path",
            "name": "connectionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Delete connection",
        "tags": [
          "Connection"
        ]
      }
    },
    "/connections/": {
      "get": {
        "operationId": "ConnectionController.getAllConnections",
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Get all connections",
        "tags": [
          "Connection"
        ]
      }
    },
    "/connections/create-invitation": {
      "post": {
        "operationId": "ConnectionController.createInvitation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InvitationConfigRequest"
              }
            }
          },
          "description": "InvitationConfigRequest",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Create invitation",
        "tags": [
          "Connection"
        ]
      }
    },
    "/connections/receive-invitation": {
      "post": {
        "operationId": "ConnectionController.receiveInvitation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceiveInvitationRequest"
              }
            }
          },
          "description": "ReceiveInvitationRequest",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Receive invitation",
        "tags": [
          "Connection"
        ]
      }
    },
    "/connections/receive-invitation-url": {
      "post": {
        "operationId": "ConnectionController.receiveInvitationByUrl",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceiveInvitationByUrlRequest"
              }
            }
          },
          "description": "ReceiveInvitationByUrlRequest",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Receive invitation by url",
        "tags": [
          "Connection"
        ]
      }
    },
    "/connections/{connectionId}/accept-invitation": {
      "post": {
        "operationId": "ConnectionController.acceptInvitation",
        "parameters": [
          {
            "in": "path",
            "name": "connectionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Accept invitation",
        "tags": [
          "Connection"
        ]
      }
    },
    "/connections/{connectionId}/accept-request": {
      "post": {
        "operationId": "ConnectionController.acceptRequest",
        "parameters": [
          {
            "in": "path",
            "name": "connectionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Accept request",
        "tags": [
          "Connection"
        ]
      }
    },
    "/connections/{connectionId}/accept-response": {
      "post": {
        "operationId": "ConnectionController.acceptResponse",
        "parameters": [
          {
            "in": "path",
            "name": "connectionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Accept response",
        "tags": [
          "Connection"
        ]
      }
    },
    "/credentials/{credentialId}": {
      "get": {
        "operationId": "CredentialController.getCredentialById",
        "parameters": [
          {
            "in": "path",
            "name": "credentialId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Get credential by id",
        "tags": [
          "Credential"
        ]
      },
      "delete": {
        "operationId": "CredentialController.deleteCredential",
        "parameters": [
          {
            "in": "path",
            "name": "credentialId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Delete credential",
        "tags": [
          "Credential"
        ]
      }
    },
    "/credentials/": {
      "get": {
        "operationId": "CredentialController.getAllCredentials",
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Get all credentials",
        "tags": [
          "Credential"
        ]
      }
    },
    "/credentials/propose-credential": {
      "post": {
        "operationId": "CredentialController.proposeCredential",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialProposalRequest"
              }
            }
          },
          "description": "CredentialProposalRequest",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Propose credential",
        "tags": [
          "Credential"
        ]
      }
    },
    "/credentials/{credentialId}/accept-proposal": {
      "post": {
        "operationId": "CredentialController.acceptProposal",
        "parameters": [
          {
            "in": "path",
            "name": "credentialId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcceptCredentialProposalRequest"
              }
            }
          },
          "description": "AcceptCredentialProposalRequest",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Accept proposal",
        "tags": [
          "Credential"
        ]
      }
    },
    "/credentials/offer-outofband-credential": {
      "post": {
        "operationId": "CredentialController.offerCredentialOutOfBand",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialOfferTemp"
              }
            }
          },
          "description": "CredentialOfferTemp",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Offer credential out of band",
        "tags": [
          "Credential"
        ]
      }
    },
    "/credentials/offer-credential": {
      "post": {
        "operationId": "CredentialController.offerCredential",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialOfferRequest"
              }
            }
          },
          "description": "CredentialOfferRequest",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Offer credential",
        "tags": [
          "Credential"
        ]
      }
    },
    "/credentials/{credentialId}/accept-offer": {
      "post": {
        "operationId": "CredentialController.acceptOffer",
        "parameters": [
          {
            "in": "path",
            "name": "credentialId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Accept offer",
        "tags": [
          "Credential"
        ]
      }
    },
    "/credentials/{credentialId}/accept-request": {
      "post": {
        "operationId": "CredentialController.acceptRequest",
        "parameters": [
          {
            "in": "path",
            "name": "credentialId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Accept request",
        "tags": [
          "Credential"
        ]
      }
    },
    "/credentials/{credentialId}/accept-credential": {
      "post": {
        "operationId": "CredentialController.acceptCredential",
        "parameters": [
          {
            "in": "path",
            "name": "credentialId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Accept credential",
        "tags": [
          "Credential"
        ]
      }
    },
    "/credential-definitions/{credentialDefinitionId}": {
      "get": {
        "operationId": "CredentialDefinitionController.getCredentialDefinitionById",
        "parameters": [
          {
            "in": "path",
            "name": "credentialDefinitionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Get credential definition by id",
        "tags": [
          "Credential Definition"
        ]
      }
    },
    "/credential-definitions/": {
      "post": {
        "operationId": "CredentialDefinitionController.createCredentialDefinition",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialDefinitionRequest"
              }
            }
          },
          "description": "CredentialDefinitionRequest",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Create credential definition",
        "tags": [
          "Credential Definition"
        ]
      }
    },
    "/schemas/{schemaId}": {
      "get": {
        "operationId": "SchemaController.getSchemaById",
        "parameters": [
          {
            "in": "path",
            "name": "schemaId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Get schema by id",
        "tags": [
          "Schema"
        ]
      }
    },
    "/schemas/": {
      "post": {
        "operationId": "SchemaController.createSchema",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SchemaTemplate"
              }
            }
          },
          "description": "SchemaTemplate",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Create schema",
        "tags": [
          "Schema"
        ]
      }
    },
    "/proofs/{proofRecordId}": {
      "get": {
        "operationId": "ProofController.getProofById",
        "parameters": [
          {
            "in": "path",
            "name": "proofRecordId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Get proof by id",
        "tags": [
          "Proof"
        ]
      },
      "delete": {
        "operationId": "ProofController.deleteProof",
        "parameters": [
          {
            "in": "path",
            "name": "proofRecordId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Delete proof",
        "tags": [
          "Proof"
        ]
      }
    },
    "/proofs/": {
      "get": {
        "operationId": "ProofController.getAllProofs",
        "parameters": [
          {
            "in": "query",
            "name": "threadId",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Get all proofs",
        "tags": [
          "Proof"
        ]
      }
    },
    "/proofs/propose-proof": {
      "post": {
        "operationId": "ProofController.proposeProof",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProofProposalRequest"
              }
            }
          },
          "description": "ProofProposalRequest",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Propose proof",
        "tags": [
          "Proof"
        ]
      }
    },
    "/proofs/{proofRecordId}/accept-proposal": {
      "post": {
        "operationId": "ProofController.acceptProposal",
        "parameters": [
          {
            "in": "path",
            "name": "proofRecordId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcceptProofProposalRequest"
              }
            }
          },
          "description": "AcceptProofProposalRequest",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Accept proposal",
        "tags": [
          "Proof"
        ]
      }
    },
    "/proofs/request-outofband-proof": {
      "post": {
        "operationId": "ProofController.requestProofOutOfBand",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProofRequestTemplate"
              }
            }
          },
          "description": "ProofRequestTemplate",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Request proof out of band",
        "tags": [
          "Proof"
        ]
      }
    },
    "/proofs/request-proof": {
      "post": {
        "operationId": "ProofController.requestProof",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProofPresentationRequest"
              }
            }
          },
          "description": "ProofPresentationRequest",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Request proof",
        "tags": [
          "Proof"
        ]
      }
    },
    "/proofs/{proofRecordId}/accept-request": {
      "post": {
        "operationId": "ProofController.acceptRequest",
        "parameters": [
          {
            "in": "path",
            "name": "proofRecordId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PresentationProofRequest"
              }
            }
          },
          "description": "PresentationProofRequest",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Accept request",
        "tags": [
          "Proof"
        ]
      }
    },
    "/proofs/{proofRecordId}/accept-presentation": {
      "post": {
        "operationId": "ProofController.acceptPresentation",
        "parameters": [
          {
            "in": "path",
            "name": "proofRecordId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Accept presentation",
        "tags": [
          "Proof"
        ]
      }
    }
  }
}