{
  "openapi": "3.0.0",
  "info": {
    "title": "Verifiable Credentials Service",
    "version": "1.10.07.02",
    "license": {}
  },
  "paths": {
    "/tenant/{tenantId}/community/{communityId}/vc_type": {
      "put": {
        "summary": "Add VC Type",
        "description": "Adds VC type credential for specific community and tenant<br />\n- Auth: a valid license key (system, service, service_ext)\n- returns json containing object id of record saved (unencrypted)\n\n\n|            **Returns**                    |\n|-------------------------------------------|\n\njson payload including id of saved template (mongo object id).\n",
        "tags": [
          "VC Types"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "requestBody": {
          "description": "Request body contains below fields to issue vc for dl.\n\n```\n{\n    \"name\": \"xxxxxxxxxx\",\n    \"type\": \"VerifiedEmployee | VerifiedConsultant\",\n    \"template\": {\n       \"info\": \"xxxxxxxxxx\",\n       \"card\": \"xxxxxxxxxx\",\n       \"detail\": \"xxxxxxxxxx\",\n       \"pass\": \"xxxxxxxxxx\"\n     }\n}\n```\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddVcTypeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddVcTypeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/vc_type/{id}": {
      "delete": {
        "summary": "Delete VC Type template",
        "description": "Deletes Vc Type for VC for specific community and tenant by id<br />\n- Auth: a valid license key (system, service, service_ext)\n\n\n|            **Returns**                    |\n|-------------------------------------------|\n\n200 status if operation is successful.\n",
        "tags": [
          "VC Types"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "id",
            "description": "ID of Vc Type",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted successfully"
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Vc Type not found"
          }
        }
      },
      "patch": {
        "summary": "Updates VC Type",
        "description": "Updates VC Type for VC for specific community and tenant<br />\n- Auth: a valid license key (system, service, service_ext)\n- returns json containing object id of record saved (unencrypted)\n\n\n|            **Returns**                    |\n|-------------------------------------------|\n\njson payload including id of updated vc type (mongo object id).\n",
        "tags": [
          "VC Types"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "ID of Template",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "requestBody": {
          "description": "Request body contains below fields to issue vc for dl.\n\n```\n{\n    \"name\": \"xxxxxxxxxx\", //optional\n    \"template\": {\n       \"info\": \"xxxxxxxxxx\", //optional\n       \"card\": \"xxxxxxxxxx\", //optional\n       \"detail\": \"xxxxxxxxxx\" //optional,\n       \"pass\": \"xxxxxxxxxx\" //optional\n     }\n}\n```\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateVcTypeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateVcTypeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Vc Type not found"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/vc_types/fetch": {
      "post": {
        "summary": "Fetches all available VC Types",
        "description": "Fetches all available Vc Types for tenant and community combination<br />\n- Auth: a valid license key (system, service, service_ext)\n- returns json array containing record of Vc Types saved\n\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nList of Vc Types, please see 200 response.\n",
        "tags": [
          "VC Types"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FetchVcTypesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/vc_type/{type}/templates": {
      "get": {
        "summary": "Fetches all available UI templates associated with vc_type",
        "description": "Fetches all available UI templates (info, card, detail, pass) for tenant and community and vc type combination<br />\n- Auth: a valid license key (system, service, service_ext)\n- returns json containing UI templates (info, card, detail, pass)\n\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nList of Vc Types, please see 200 response.\n",
        "tags": [
          "VC Types"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "type",
            "description": "vc_type (e.g. VerifiedEmployee | VerifiedConsultant)",
            "required": true,
            "schema": {
              "type": "string",
              "example": "VerifiedEmployee"
            }
          },
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FetchTemplatesByVcTypeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/template": {
      "put": {
        "summary": "Add UI VC template",
        "description": "Adds UI template for VC for specific community and tenant<br />\n- Auth: a valid license key (system, service, service_ext)\n- returns json containing object id of record saved (unencrypted)\n\n\n|            **Returns**                    |\n|-------------------------------------------|\n\njson payload including id of saved template (mongo object id).\n",
        "tags": [
          "Templates"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "requestBody": {
          "description": "Request body contains below fields to issue vc for dl.\n\n```\n{\n    \"uid\": \"xxxxxxxxxx\", //must be UUID4 e.g. 7e5c9c44-0981-44c6-9c8f-0ba6785a1598\n    \"name\": \"xxxxxxxxxx\",\n    \"b64\": \"xxxxxxxxxx\", //base 64 of html template\n    \"view\": \"xxxxxxxxxx\" //[info, card, detail, pass]\n}\n```\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddUiTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddUiTemplateResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/template/{id}": {
      "delete": {
        "summary": "Delete UI VC template, If UI template is being actively used in VC type then this api will not be allowed",
        "description": "Deletes UI template for VC for specific community and tenant by id<br />\n- Auth: a valid license key (system, service, service_ext)\n- returns json containing object id of record saved (unencrypted)\n\n\n|            **Returns**                    |\n|-------------------------------------------|\n\n200 status if operation is successful.\n",
        "tags": [
          "Templates"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "ID of template",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted successfully"
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Template not found"
          },
          "405": {
            "description": "Cannot delete UI template as it's active in VC Type"
          }
        }
      },
      "patch": {
        "summary": "Updates UI VC template",
        "description": "Updates UI template for VC for specific community and tenant<br />\n- Auth: a valid license key (system, service, service_ext)\n- returns json containing object id of record saved (unencrypted)\n\n\n|            **Returns**                    |\n|-------------------------------------------|\n\njson payload including id of updated template (mongo object id).\n",
        "tags": [
          "Templates"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "ID of Template",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "requestBody": {
          "description": "Request body contains below fields to issue vc for dl.\n\n```\n{\n    \"name\": \"xxxxxxxxxx\",\n    \"b64\": \"xxxxxxxxxx\" //base 64 of html template\n}\n```\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUiTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateUiTemplateResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Template not found"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/templates/fetch": {
      "post": {
        "summary": "Fetches all available templates",
        "description": "Fetches all available UI Templates for tenant and community combination<br />\n- Auth: a valid license key (system, service, service_ext)\n- returns json array containing record or UI templates saved\n\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nList of UI templates, please see 200 response.\n",
        "tags": [
          "Templates"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FetchUiTemplatesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/servicekeys": {
      "get": {
        "summary": "Get service keys",
        "description": "This endpoint returns available service keys.\nThe license you are using must be of authLevel 'system'\n\n|              **Headers**                  |\n|-------------------------------------------|\n\n### licensekey (required)\nLicense key\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nReturns array with service keys\n",
        "tags": [
          "Service Key"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceKeysResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Internal Server Error"
          },
          "501": {
            "description": "Service Not Implemented"
          }
        }
      }
    },
    "/servicekey/{keyId}": {
      "delete": {
        "summary": "Reset Service Key",
        "description": "This endpoint resets service key for given keyId. Deletes current one and recreates a new one.\nThe license you are using must be of authLevel 'system'\n\n|              **Parameters**                  |\n|-------------------------------------------|\n\n### keyId (required)\nThe keyId of service key to reset\n\n|            **Headers**                    |\n|-------------------------------------------|\n\n### licensekey (required)\nLicense key encrypted with ECDSA\n\n### requestid (required)\nJSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now\n\n### publickey (required)\nPublic key\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nReturns re-created service key\n",
        "tags": [
          "Service Key"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "name": "keyId",
            "in": "path",
            "description": "keyId of service key to reset",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceKeysResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Internal Server Error"
          },
          "501": {
            "description": "Service Not Implemented"
          }
        }
      }
    },
    "/sd": {
      "get": {
        "summary": "Get all service directories.",
        "description": "Get all service directories. <br><br>\nIf the API is call on **external_sd=true** then it will return external URLs\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nReturns all service directories.\n",
        "tags": [
          "Service Directory"
        ],
        "parameters": [
          {
            "name": "external_sd",
            "in": "query",
            "description": "external_sd is used to generate external URLs.",
            "required": false,
            "schema": {
              "type": "boolean",
              "example": true
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceComponentsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/publickeys": {
      "get": {
        "summary": "Get system's public key",
        "description": "Get system's public key.\nNo authorization\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nReturns a public key object\n",
        "tags": [
          "Public Key"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicKeyResponse"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundError"
          }
        }
      }
    },
    "/healthz": {
      "get": {
        "summary": "Get healthz.",
        "description": "Get healthz\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nReturns a healthz object\n - ```version = <git-tag>.<commit-id>.<dob>```\n\n - ```git-tag```: When code is compiled from a git-tag, this must carry the tag name. This should match one of the git tags.\n\n - ```commit-id```: This is the git-commit-id. eg: When code is built from this, the hex code, in the end, is the commit it.\n\n - ```dob```: Date Of Build. This is epoc-time-in-seconds that tell the time when the build was created.\n\n - \u200bif the code is not built from a git-tag, then the ```version =\ufffc<commit-id>.<dob>```\n",
        "tags": [
          "Healthz"
        ],
        "responses": {
          "200": {
            "description": "Success\n\n```\n{\n    \"status\": \"all services operational\",\n    \"publicKey\": \"string\" //same as <service>/publickeys endpoint,\n    \"code\": \"200\",\n    \"version\": \"<version>\" //as defined above\n}\n```\n",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthzResponse"
                }
              }
            }
          }
        }
      }
    },
    "/environment": {
      "get": {
        "description": "Provide details regarding the environments.\n|            **Returns**                    |\n|-------------------------------------------|\n\nReturns an environment object\n",
        "tags": [
          "Environment"
        ],
        "security": [
          {
            "license": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/ecdsa_helper/{method}": {
      "post": {
        "summary": "Encrypt and decrypt the data string by public key and private key.",
        "description": "Encrypt and decrypt the data string by public key and private key.\n\n|            **Parameters**                 |\n|-------------------------------------------|\n\n### method (optional)\nThe method parameter is type of enum. Default value is encrypt. <br />\nThis parameter only accepts following values <br />\n   **encrypt**, **decrypt**\n\n|            **Request Body**                  |\n|----------------------------------------------|\n\n### dataStr (required)\nThe dataStr key is type of string.\n\n<br />\n### publicKey (required)\nThe publicKey is type of string.\n\n<br />\n### privateKey (required)\nThe privateKey is type of string.\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nReturns the encrypted/decrypted string. <br />\nThis API throw an error if something goes wrong. A common source of error is public or private key is not valid.\n",
        "tags": [
          "ECDSA Helper"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EcdsaEncryptDecryptRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "method",
            "schema": {
              "type": "string",
              "enum": [
                "encrypt",
                "decrypt"
              ],
              "default": "encrypt"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EcdsaEncryptDecryptResponse"
                }
              }
            }
          }
        }
      }
    },
    "/vp/{vpId}": {
      "get": {
        "summary": "Download VP using the uuid",
        "description": "Downloads a verifiable presentation with given uuid<br />\n- Auth: a valid license key (any auth level)\n- returns encrypted vp with server's public key\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### vpID (required)\nuuid of vp\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nDownloads a verifiable presentation.\n",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "vpId",
            "description": "UUID of vp",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DownloadVpResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/vc/{vcId}/download": {
      "get": {
        "summary": "Download VC using the id",
        "description": "Downloads a verifiable credential from the vc Id<br />\n- Auth: a valid license key (any auth level)\n- returns encrypted vc with server's public key\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### vcID (required)\nId of vc\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nDownloads a verifiable credential.\n",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "vcId",
            "description": "ID of vc",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DownloadVcResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/vc/from/document/{type}": {
      "post": {
        "summary": "Creates VC from verifiable document",
        "description": "Creates a verifiable credential from verified document <br />\n- Auth: a valid community license key (any auth level)\n- key must be authorized for community.\n- sign a new vc from verified document\n- returns issued vc\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nId of tenant\n\n### communityId (required)\nId of community\n\n### type (required)\nSupported types: dl\n|            **Request Body**                  |\n|----------------------------------------------|\n\n### document (required)\nThe document is of type object\n### did (required)\nThe did is of type string\n### publicKey (required)\nThe public key of user, which is of type string\n### userURN (optional)\nThe urn of user, which is of type string\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nSigns a verifiable credential from document.\n",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "type",
            "in": "path",
            "description": "Type of credential;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxx"
            }
          }
        ],
        "requestBody": {
          "description": "Request body contains below fields to issue vc for dl.\n\n```\n{\n    \"document\": {},\n    \"publicKey\": \"xxxxxxxxxx\",\n    \"did\": \"xxxxxxxxxx\",\n    \"userURN\": \"xxxxxxxxxx\"\n    \"issueVP\": boolean,\n    \"vpRequest\": {\n       \"attributes\": [\"optional string array\"],\n       \"ageToProve\": number optional,\n    }\n}\n```\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VcDocumentSignCredentialRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VcDocumentSignCredentialResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/vc/from/payload/{type}": {
      "post": {
        "summary": "Creates a VC from payload",
        "description": "Issues a verifiable credential from payload <br />\n- Auth: a valid community license key (auth level system, service or service_ext)\n- key must be authorized for community.\n- signs a new vc from payload\n- returns issued vc with download url\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nId of tenant\n\n### communityId (required)\nId of community\n\n### type (required)\nSupported types: employment_card\n|            **Request Body**                  |\n|----------------------------------------------|\n\n### info (required)\nThe info is of type object\n### did (optional)\nThe did is of type string\n### issuer  (required)\nThe is of type object\n### publicKey (optional)\nThe public key of user, which is of type string\n### userURN (optional)\nThe urn of user, which is of type string\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nSigns a verifiable credential from payload.\n",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "type",
            "in": "path",
            "description": "Type of credential;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxx"
            }
          }
        ],
        "requestBody": {
          "description": "Request body contains below fields to issue vc.\n\n```\n{\n  \"info\": {\n     \"id\": \"string required\",\n     \"firstName\": \"string required\",\n     \"lastName\": \"string required\",\n     \"companyName\": \"string required\",\n     \"companyAddress\": \"string required\",\n     \"department\": \"string optional\",\n     \"title\": \"string optional\",\n     \"doe\": \"string required (format yyyymmdd)\"\n     \"xx\": \"string, number or boolean optional\"\n },\n \"did\": \"string required\",\n \"publicKey\": \"string required\",\n \"issuer\": {\n     \"id\": \"string required\"\n     \"xx\": \"string optional\"\n  }\n \"userURN\": \"string optional\",\n \"issueVP\": boolean,\n \"vpRequest\": {\n    \"attributes\": [\"optional string array\"],\n    \"ageToProve\": number optional,\n    \"createShareUrl\": boolean\n }\n\n}\n```\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VcPayloadSignCredentialRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VcPayloadSignCredentialResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/vc/verify": {
      "post": {
        "summary": "Verifies a  VC",
        "description": "Verifies a signed verifiable credential\n- Auth: a valid community license key (any auth level)\n- key must be authorized for community.\n- verifies a signed vc\n- returns status of verification and VC data.\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nId of tenant\n\n### communityId (required)\nId of community\n|            **Request Body**                  |\n|----------------------------------------------|\n\n### vc (required)\nThe vc is type of object.\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nVerifies a verifiable credential.\n",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "requestBody": {
          "description": "Request body contains below fields to verify vc.\n\n```\n{\n   \"vc\": {\n    \"context\": [\n     \"xxx\",\n     \"xxxxxxx\"\n    ],\n    \"issuanceDate\": \"xxxxxxx\",\n    \"issuer\": \"xxxxxxx\",\n    \"expirationDate\": \"xxxxxxx\",\n    \"type\": [\n      \"xxxxxxx\",\n      \"xxxxxxx\"\n    ],\n    \"credentialSubject\": \"xxxxxxx\",\n    \"proof\": {},\n    \"statusUrl\": \"xxxxxxxxxxxxxxxx\"\n  } \n}\n```\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VcVerifyCredentialRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VcVerifyCredentialResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "417": {
            "description": "Expectation failed"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/vp/create": {
      "post": {
        "summary": "Issues a  VP",
        "description": "Issues a verifiable presentation\n- Auth: a valid community license key (any auth level)\n- key must be authorized for community.\n- issues a presenrtation for a collection of VCs\n- returns a signed verifiable presentation\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nId of tenant\n\n### communityId (required)\nId of community\n|            **Request Body**                  |\n|----------------------------------------------|\n\n### vcs (required)\nThe verifiable credentials is type of array.\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nIssues a verifiable presentation for credentials.\n",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "requestBody": {
          "description": "Request body contains below fields to issue vp.\n\n```\n{\n  \"vcs\": [\n     {\n       \"vc\": {},\n       \"attributes\": [string required],\n       \"ageToProve\": number\n     }\n  ],\n  \"createShareUrl\": boolean,\n}\n```\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VcSignPresentationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VcSignPresentationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "417": {
            "description": "Expectation failed"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/vp/verify": {
      "post": {
        "summary": "Verifies a VP",
        "description": "Verifyes a verifiable presentation\n- Auth: a valid community license key (any auth level)\n- key must be authorized for community.\n- verifies a presentation\n- returns a verified status of VP, VC data and age verification result\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nId of tenant\n\n### communityId (required)\nId of community\n|            **Request Body**                  |\n|----------------------------------------------|\n\n### vp (required)\nThe vp is type of object.\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nVerifies a verifiable credential.\n",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "requestBody": {
          "description": "Request body contains below fields to verify a vp\n```\n{\n  \"vp\": {\n    \"context\": [\n      \"xxxxx\"\n    ],\n   \"type\": [\n      \"xxxxxxxxx\"\n   ],\n   \"verifiableCredential\": [\n     {\n       \"context\": [\n         \"xxx\",\n         \"xxxxxxx\"\n       ],\n       \"issuanceDate\": \"xxxxxxx\",\n       \"issuer\": \"xxxxxxx\",\n       \"expirationDate\": \"xxxxxxx\",\n       \"type\": [\n         \"xxxxxxx\",\n         \"xxxxxxx\"\n       ],\n      \"credentialSubject\": \"xxxxxxx\",\n     \"proof\": {}\n    }\n  ],\n  \"proof\": {}\n}\n```\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VpVerifyPresentationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VpVerifyPresentationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "417": {
            "description": "Expectation failed"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/vc/{vcId}/status": {
      "get": {
        "summary": "Get VC Status",
        "description": "Get a specific VC record by its ID\n- Auth: a valid community license key (any auth level)\n- key must be authorized for community.\n- returns VC Record object and its status\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nId of tenant\n\n### communityId (required)\nId of community\n\n### vcId (required)\nId of VC\n\n\n|            **Returns**                    |\n|-------------------------------------------|\n\n- returns VC Record object and its status\n",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "vcId",
            "description": "ID of VC",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetVcByIdResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "417": {
            "description": "Expectation failed"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/pass/create": {
      "post": {
        "summary": "create a pkpass",
        "description": "Issues a pkpass\n- Auth: a valid community license key (any auth level)\n- key must be authorized for community.\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nId of tenant\n\n### communityId (required)\nId of community\n|            **Request Body**                  |\n|----------------------------------------------|\n\n### vcs (required)\nThe verifiable credentials is type of array.\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nIssues a pkpass\n",
        "tags": [
          "Credentials"
        ],
        "security": [
          {
            "keyId": []
          },
          {
            "keySecret": []
          },
          {
            "license": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tenantId",
            "description": "ID of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxx"
            }
          },
          {
            "in": "path",
            "name": "communityId",
            "description": "ID of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "xxxxxxxxxxxxxxxxxxxxxxxx"
            }
          },
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key encrypted with ECDSA / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "requestid",
            "in": "header",
            "description": "JSON string encrypted with ECDSA which should contain \"appid\" (string), \"uuid\" (string) and \"ts\" (number) representing epoch timestamp in seconds - it shouldn't be more or less than 'environment.allowed_time_span' seconds from now / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          },
          {
            "name": "publickey",
            "in": "header",
            "description": "Public Key  / Try Authorize &#128274;",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Do not enter anything, use 'Authorize' fields"
            }
          }
        ],
        "requestBody": {
          "description": "Request body contains below fields to issue vp.\n\n```\n{\n    \"vc\": {\n      \"context\": [\n        \"xxx\",\n        \"xxxxxxx\"\n      ],\n      \"id\": \"xxxxxxx\",\n      \"issuanceDate\": \"xxxxxxx\",\n      \"issuer\": \"xxxxxxx\",\n      \"expirationDate\": \"xxxxxxx\",\n        \"type\": [\n        \"xxxxxxx\",\n        \"xxxxxxx\"\n      ],\n      \"credentialSubject\": \"xxxxxxx\",\n      \"proof\": {},\n      \"statusUrl\": \"xxxxxxxxxxxxxxxx\"\n    },\n    \"issueVP\": boolean,\n    \"vpRequest\": {\n      \"attributes\": [\"optional string array\"],\n      \"ageToProve\": number optional,\n      \"createShareUrl\": boolean\n     }\n}\n```\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VcPassRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "417": {
            "description": "Expectation failed"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "EcdsaEncryptDecryptRequest": {
        "type": "object",
        "properties": {
          "dataStr": {
            "type": "string"
          },
          "publicKey": {
            "type": "string"
          },
          "privateKey": {
            "type": "string"
          }
        },
        "example": {
          "dataStr": "Hey, This is example data string.",
          "publicKey": "xxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxx=",
          "privateKey": "xxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxx="
        }
      },
      "EcdsaEncryptDecryptResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "string"
          }
        },
        "example": {
          "data": "xxxxxxxxxxxxxxxxxxxx"
        }
      },
      "PublicKeyResponse": {
        "type": "object",
        "properties": {
          "publicKey": {
            "type": "string"
          },
          "vc": {
            "type": "array",
            "items": {
              "type": "string",
              "publicKey": "string"
            }
          }
        },
        "example": {
          "publicKey": "",
          "vc": [
            {
              "type": "",
              "publicKey": ""
            }
          ]
        }
      },
      "HealthzResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "example": {
          "status": "all services operational",
          "publicKey": "//same as <service>/publickeys endpoint",
          "code": "200",
          "version": "xxxx.xxxx.xxxx"
        }
      },
      "VcDocumentSignCredentialRequest": {
        "type": "object",
        "properties": {
          "document": {
            "type": "object"
          },
          "publicKey": {
            "type": "string"
          },
          "did": {
            "type": "string"
          },
          "userURN": {
            "type": "string"
          }
        },
        "example": {
          "document": {},
          "publicKey": "xxxxxxxxxx",
          "did": "xxxxxxxxxx",
          "userURN": "xxxxxxxxxx",
          "issueVP": "boolean,",
          "vpRequest": {
            "attributes": [
              "string"
            ],
            "ageToProve": "number"
          }
        }
      },
      "VcDocumentSignCredentialResponse": {
        "type": "object",
        "properties": {
          "vc": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "context": {
                "type": "array"
              },
              "issuanceDate": {
                "type": "string"
              },
              "issuer": {
                "type": "string"
              },
              "expirationDate": {
                "type": "string"
              },
              "type": {
                "type": "array"
              },
              "credentialSubject": {
                "type": "string"
              },
              "proof": {
                "type": "object"
              },
              "statusUrl": {
                "type": "string"
              }
            }
          }
        },
        "example": {
          "vc": {
            "context": [
              "xxx",
              "xxxxxxx"
            ],
            "issuanceDate": "xxxxxxx",
            "issuer": "xxxxxxx",
            "expirationDate": "xxxxxxx",
            "type": [
              "xxxxxxx",
              "xxxxxxx"
            ],
            "credentialSubject": "xxxxxxx",
            "proof": {},
            "statusUrl": "xxxxxxxxxxxxxxxxxxxxxx"
          }
        }
      },
      "VcPayloadSignCredentialRequest": {
        "type": "object",
        "properties": {
          "vc": {
            "type": "object",
            "properties": {
              "info": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "firstName": {
                    "type": "string"
                  },
                  "lastName": {
                    "type": "string"
                  },
                  "companyName": {
                    "type": "string"
                  },
                  "companyAddress": {
                    "type": "string"
                  },
                  "department": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  },
                  "doe": {
                    "type": "string"
                  }
                }
              },
              "publicKey": {
                "type": "string"
              },
              "did": {
                "type": "string"
              },
              "issuer": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  }
                }
              },
              "userURN": {
                "type": "string"
              }
            }
          }
        },
        "example": {
          "info": {
            "id": "xxxxxxxxxx",
            "firstName": "xxxxxxxxxxxx",
            "lastName": "xxxxxxxxxxxxxx",
            "companyName": "xxxxxxxxxxxxx",
            "companyAddress": "xxxxxxxxxxxxx",
            "department": "xxxxxxxxxxxxxx",
            "title": "xxxxxxxxxxxxxxxx",
            "doe": "xxxxxxxxxxxxx (format yyyymmdd)",
            "xxxx": "xxxxxxxxxxxx (string number or boolean)"
          },
          "did": "xxxxxxxxxxxxxxxxx,",
          "publicKey": "XXXXXXXXX",
          "issuer": {
            "id": "xxxxxxxxxxxxxxxxxxx",
            "xxxx": "xxxxxxxxxxxx (any key and value)"
          },
          "userURN": "xxxxxxxxxxxxxxxxx,",
          "issueVP": "boolean,",
          "vpRequest": {
            "attributes": [
              "string"
            ],
            "ageToProve": "number",
            "createShareUrl": "boolean"
          }
        }
      },
      "VcPayloadSignCredentialResponse": {
        "type": "object",
        "properties": {
          "vc": null,
          "properties": {
            "id": {
              "type": "string"
            },
            "context": {
              "type": "array"
            },
            "issuanceDate": {
              "type": "string"
            },
            "issuer": {
              "type": "string"
            },
            "expirationDate": {
              "type": "string"
            },
            "type": {
              "type": "array"
            },
            "credentialSubject": {
              "type": "string"
            },
            "proof": {
              "type": "object"
            },
            "statusUrl": {
              "type": "string"
            }
          },
          "vcId": {
            "type": "string"
          },
          "download_url": {
            "type": "string"
          }
        },
        "example": {
          "vc": {
            "context": [
              "xxx",
              "xxxxxxx"
            ],
            "issuanceDate": "xxxxxxx",
            "issuer": "xxxxxxx",
            "expirationDate": "xxxxxxx",
            "type": [
              "xxxxxxx",
              "xxxxxxx"
            ],
            "credentialSubject": "xxxxxxx",
            "proof": {},
            "statusUrl": "xxxxxxxxxxxxxxxx"
          },
          "vcId": "xxxxxxxxxxxxxxxx",
          "download_url": "xxxxxxxxxxxxxxx"
        }
      },
      "VcVerifyCredentialRequest": {
        "type": "object",
        "properties": {
          "vc": {
            "type": "object"
          }
        },
        "example": {
          "vc": {}
        }
      },
      "VcVerifyCredentialResponse": {
        "type": "object",
        "properties": {
          "verified": {
            "type": "string"
          },
          "status": {
            "type": "object",
            "properties": {
              "vcID": {
                "type": "string"
              },
              "tenantId": {
                "type": "string"
              },
              "communityId": {
                "type": "string"
              },
              "type": {
                "type": "array"
              },
              "issueTS": {
                "type": "number"
              },
              "expiryTS": {
                "type": "number"
              },
              "status": {
                "type": "string"
              },
              "subject": {
                "type": "object",
                "properties": {
                  "did": "string",
                  "publicKey": "string"
                }
              },
              "issuer": "string",
              "userURN": "string"
            }
          }
        },
        "example": {
          "verified": true,
          "status": {
            "vcID": "xxxxxxxx",
            "tenantId": "xxxxxxxx",
            "communityId": "xxxxxxxx",
            "proof": {},
            "type": [
              "xxxxxxxx",
              "xxxxxxxx"
            ],
            "issueTS": 123456,
            "expiryTS": 123456,
            "status": "xxxxxxxx",
            "subject": {
              "did": "string",
              "publicKey": "string"
            },
            "issuer": "xxxxxxxx",
            "userURN": "string"
          }
        }
      },
      "VcSignPresentationRequest": {
        "type": "array",
        "items": {
          "properties": {
            "vc": {
              "type": "object"
            },
            "attributes": {
              "type": "array"
            },
            "ageToProve": {
              "type": "string"
            }
          }
        },
        "example": {
          "vcs": [
            {
              "vc": {},
              "attributes": [
                "string"
              ],
              "ageToProve": "number"
            }
          ]
        }
      },
      "VcSignPresentationResponse": {
        "type": "object",
        "properties": {
          "vp": {
            "type": "object",
            "properties": {
              "context": {
                "type": "array"
              },
              "type": {
                "type": "array"
              },
              "verifiableCredential": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "context": {
                      "type": "array"
                    },
                    "issuanceDate": {
                      "type": "string"
                    },
                    "issuer": {
                      "type": "string"
                    },
                    "expirationDate": {
                      "type": "string"
                    },
                    "type": {
                      "type": "array"
                    },
                    "credentialSubject": {
                      "type": "string"
                    },
                    "proof": {
                      "type": "object"
                    }
                  }
                }
              },
              "proof": {
                "type": "object"
              }
            }
          }
        },
        "example": {
          "vp": {
            "context": [
              "xxxxx"
            ],
            "type": [
              "xxxxxxxxx"
            ],
            "verifiableCredential": [
              {
                "context": [
                  "xxx",
                  "xxxxxxx"
                ],
                "issuanceDate": "xxxxxxx",
                "issuer": "xxxxxxx",
                "expirationDate": "xxxxxxx",
                "type": [
                  "xxxxxxx",
                  "xxxxxxx"
                ],
                "credentialSubject": "xxxxxxx",
                "proof": {}
              }
            ],
            "proof": {}
          }
        }
      },
      "VpVerifyPresentationRequest": {
        "type": "object",
        "properties": {
          "vp": {
            "type": "object"
          }
        },
        "example": {
          "vp": {}
        }
      },
      "VpVerifyPresentationResponse": {
        "type": "object",
        "properties": {
          "verified": {
            "type": "string"
          },
          "vc_status": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "vcID": {
                  "type": "string"
                },
                "tenantId": {
                  "type": "string"
                },
                "communityId": {
                  "type": "string"
                },
                "type": {
                  "type": "array"
                },
                "issueTS": {
                  "type": "number"
                },
                "expiryTS": {
                  "type": "number"
                },
                "status": {
                  "type": "string"
                },
                "subject": {
                  "type": "object",
                  "properties": {
                    "did": "string",
                    "publicKey": "string"
                  }
                },
                "issuer": "string",
                "userURN": "string"
              }
            }
          },
          "ageVerified": {
            "type": "boolean"
          }
        },
        "example": {
          "verified": true,
          "vc_status": [
            {
              "vcID": "xxxxxxxx",
              "tenantId": "xxxxxxxx",
              "communityId": "xxxxxxxx",
              "proof": {},
              "type": [
                "xxxxxxxx",
                "xxxxxxxx"
              ],
              "issueTS": 123456,
              "expiryTS": 123456,
              "status": "xxxxxxxx",
              "subject": {
                "did": "string",
                "publicKey": "string"
              },
              "issuer": "xxxxxxxx",
              "userURN": "string"
            }
          ],
          "ageVerified": true
        }
      },
      "DownloadVcResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "string"
          },
          "publicKey": {
            "type": "string"
          }
        },
        "example": {
          "data": "xxxxxxxxxxxxxxxxxxxxx",
          "publicKey": "xxxxxxxxxxxxxxxxxxx"
        }
      },
      "DownloadVpResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "string"
          },
          "publicKey": {
            "type": "string"
          }
        },
        "example": {
          "data": "xxxxxxxxxxxxxxxxxxxxx",
          "publicKey": "xxxxxxxxxxxxxxxxxxx"
        }
      },
      "VcPassRequest": {
        "type": "object",
        "properties": {
          "vc": {
            "type": "object"
          }
        },
        "example": {
          "vc": {}
        }
      },
      "ServiceKeysResponse": {
        "type": "array",
        "description": "Service keys array",
        "items": {
          "type": "object",
          "required": [
            "tag",
            "keyId",
            "keySecret",
            "type"
          ],
          "properties": {
            "tag": {
              "type": "string",
              "description": "service ecdsa"
            },
            "keyId": {
              "type": "string",
              "description": "ecdsa publicKey"
            },
            "keySecret": {
              "type": "string",
              "description": "ecdsa private key"
            },
            "type": {
              "type": "string",
              "description": "default = ecdsa | hawk"
            }
          },
          "example": {
            "tag": "xxxxx",
            "keyId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx",
            "keySecret": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx",
            "type": "xxxxx"
          }
        }
      },
      "GetVcByIdResponse": {
        "type": "object",
        "properties": {
          "vcID": {
            "type": "string"
          },
          "tenantId": {
            "type": "string"
          },
          "communityId": {
            "type": "string"
          },
          "type": {
            "type": "array"
          },
          "issueTS": {
            "type": "number"
          },
          "expiryTS": {
            "type": "number"
          },
          "status": {
            "type": "string"
          },
          "subject": {
            "type": "object",
            "properties": {
              "did": "string",
              "publicKey": "string"
            }
          },
          "issuer": "string",
          "userURN": "string"
        },
        "example": {
          "vcID": "xxxxxxxx",
          "tenantId": "xxxxxxxx",
          "communityId": "xxxxxxxx",
          "proof": {},
          "type": [
            "xxxxxxxx",
            "xxxxxxxx"
          ],
          "issueTS": 123456,
          "expiryTS": 123456,
          "status": "xxxxxxxx",
          "subject": {
            "did": "string",
            "publicKey": "string"
          },
          "issuer": "xxxxxxxx",
          "userURN": "string"
        }
      },
      "GetServiceComponentsResponse": {
        "type": "object",
        "properties": {
          "name1": {
            "type": "string"
          },
          "name2": {
            "type": "string"
          },
          "name3": {
            "type": "string"
          }
        },
        "example": {
          "name1": "https://xxx.xxxxxx.xxx/xxxxx",
          "name2": "https://xxx.xxxxxx.xxx/xxxxx",
          "name3": "https://xxx.xxxxxx.xxx/xxxxx"
        }
      },
      "NotFoundError": {
        "description": "Not found"
      },
      "AddUiTemplateRequest": {
        "type": "object",
        "properties": {
          "uid": {
            "type": "string",
            "example": "7e5c9c44-0981-44c6-9c8f-0ba6785a1598"
          },
          "name": {
            "type": "string"
          },
          "b64": {
            "type": "string"
          },
          "view": {
            "type": "string",
            "example": "info"
          }
        }
      },
      "AddUiTemplateResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "UpdateUiTemplateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "b64": {
            "type": "string"
          }
        }
      },
      "UpdateUiTemplateResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "FetchUiTemplatesResponse": {
        "type": "array",
        "items": {
          "properties": {
            "id": {
              "type": "string"
            },
            "uid": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "b64": {
              "type": "string"
            },
            "view": {
              "type": "string"
            },
            "communityId": {
              "type": "string"
            },
            "tenantId": {
              "type": "string"
            }
          }
        }
      },
      "AddVcTypeRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "example": "VerifiedEmployee | VerifiedConsultant"
          },
          "template": {
            "type": "object",
            "properties": {
              "info": {
                "type": "string"
              },
              "card": {
                "type": "string"
              },
              "detail": {
                "type": "string"
              },
              "pass": {
                "type": "string"
              }
            }
          }
        }
      },
      "AddVcTypeResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "UpdateVcTypeRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "template": {
            "type": "object",
            "properties": {
              "info": {
                "type": "string"
              },
              "card": {
                "type": "string"
              },
              "detail": {
                "type": "string"
              },
              "pass": {
                "type": "string"
              }
            }
          }
        }
      },
      "UpdateVcTypeResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "FetchVcTypesResponse": {
        "type": "array",
        "items": {
          "properties": {
            "name": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "example": "VerifiedEmployee | VerifiedConsultant"
            },
            "template": {
              "type": "object",
              "properties": {
                "info": {
                  "type": "string"
                },
                "card": {
                  "type": "string"
                },
                "detail": {
                  "type": "string"
                },
                "pass": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "FetchTemplatesByVcTypeResponse": {
        "type": "object",
        "properties": {
          "info": {
            "type": "string"
          },
          "card": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "pass": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "keyId": {
        "type": "apiKey",
        "name": "keyId",
        "in": "header",
        "description": "ECDSA Public Key"
      },
      "keySecret": {
        "type": "apiKey",
        "name": "keySecret",
        "in": "header",
        "description": "ECDSA Private Key"
      },
      "license": {
        "type": "apiKey",
        "name": "license",
        "in": "header",
        "description": "License key from License Microservice"
      }
    }
  },
  "tags": [
    {
      "name": "Service Key"
    },
    {
      "name": "Environment"
    }
  ],
  "servers": [
    {
      "url": "https://pilot-root.1kosmos.net/vcs/"
    }
  ]
}