{
  "openapi": "3.0.0",
  "info": {
    "title": "Reports service API",
    "version": "2.1",
    "description": "API documentation for Reports service API"
  },
  "servers": [
    {
      "url": "https://pilot-root.1kosmos.net/reports/"
    }
  ],
  "paths": {
    "/tenant/{tenantId}/community/{communityId}/metrics": {
      "post": {
        "summary": "Retrieves metrics based on metrics name",
        "description": "This endpoint retrieves metrics information based on provided metricsName\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n### metricsName (required)\nRetrieve metrics information for the given metrics name, should be one of: M_C_ACTIVE_USER, M_C_LOGIN_FAILED, M_C_LOGINS, M_C_NEW_DEVICES, M_G_APPLICATION_USAGE, M_G_LOGIN_FAILED, M_GT_SUCCESSFUL_AUTHENTICATIONS, M_GT_PROOFING_SESSION or M_T_NEW_DEVICES\n\n<br />\n### from (optional in UTC)\ntimestamp,\ndefault = current date - 1 days,\nmax = current date - 90 days\n\n<br />\n### to (optional in UTC)\ntimestamp, if 'to' date is equal to 'from', then metric is counted hourly (in day pointing at 'to' date) instead of daily\ndefault = current\n\nThis endpoint is downloadable. To request download, please add to request body below full object |\n```\n   \"download\": {\n       \"requestBy\": \"string, email (required)\",\n       \"notificationList\": [ \"string, email (required, 1-5 emails)\" ],\n       \"eventData\": {\n           \"tenant_dns\": \"string (required)\",\n           \"user_id\": \"string (required)\"\n          }\n       }\n```\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns metrics information\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter",
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MetricsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/MetricsResponse"
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/audit_log": {
      "post": {
        "summary": "Audit Log Report",
        "description": "This report searches in DB and collects all events (unique tuples) where eventCategory = 'AUDIT_LOG'. Results are in reverse chronological order, by latest event_ts. Results are also in specified time range (from, to) and are paginated (pSize, pIndex).\n\n|           **AUDIT_LOG events**               |\n|----------------------------------------------|\n  <b>E_DIRECTORY_ADDED,\n  E_DIRECTORY_MODIFIED,\n  E_DIRECTORY_REMOVED,\n  E_DIRECTORY_BROKER_ENABLED,\n  E_DIRECTORY_BROKER_DISABLED,\n  E_DIRECTORY_BROKER_DELETED,\n  E_DIRECTORY_BROKER_MODIFIED,\n  E_DIRECTORY_ATTRIBUTE_ADDED,\n  E_DIRECTORY_ATTRIBUTE_MODIFIED,\n  E_DIRECTORY_ATTRIBUTE_DELETED,\n  E_DIRECTORY_ADVANCED_CONFIGURATION_MODIFIED,\n  E_IDP_CONFIGURATION_MODIFIED</b>\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n### pSize (optional)\nThe maximum number of hits to return\ndefault = 25,\nmin = 1,\nmax = 100\n\n<br />\n### pIndex (optional)\nNumber of hits to skip\ndefault = 0\n\n<br />\n### from (optional)\ntimestamp,\ndefault = now - 24 hours,\nmax = current date - 90 days\n\n<br />\n### to (optional)\ntimestamp,\ndefault = now\n\n<br />\n### user_id (optional)\nUser id, string, optional filter\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with page info and data\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter raws.\nThis report is downloadable. To request download, please add to request body below full object |\n```\n     \"download\": {\n        \"requestBy\": \"string, email (required)\",\n        \"notificationList\": [ \"string, email (required, 1-5 emails)\" ],\n        \"eventData\": {\n           \"tenant_dns\": \"string (required)\",\n           \"user_id\": \"string (required)\"\n        }\n     }\n```\nDownload works with pIndex and fetches up to 5000 records, generates CSV file and notifies provided emails that report is ready to download\n",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuditLogReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/ReportResponse"
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/passwordless_login_activity_report": {
      "post": {
        "summary": "Passwordless Login Activity Report",
        "description": "This report searches in DB all unique users (by user_id field) where eventName = E_SP_REDIRECT_SUCCEEDED and each record has latest_login and last_login (latest_login - 1, this can be null because there can be only 1 login attemp). Results are chronological, sorted by latest_login. Results are also in specified time range (from, to) and are paginated (pSize, pIndex).\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n### pSize (optional)\nThe maximum number of hits to return\ndefault = 25,\nmin = 1\nmax = 100\n\n<br />\n### pIndex (optional)\nNumber of hits to skip\ndefault = 0\n\n<br />\n### from (optional)\ntimestamp,\ndefault = current date - 30 days,\nmax = current date - 90 days\n\n<br />\n### to (optional)\ntimestamp,\ndefault = current\n\n<br />\n### user_id (optional)\nUser id, string, optional filter\n\n<br />\n### person_id (optional)\nPerson id, string, optional filter\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with page info and data\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter",
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/ReportResponse"
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/service_usage_report": {
      "post": {
        "summary": "Service Usage report",
        "description": "This report searches in DB and collects all unique users (by user_id field) with number of eventName = E_LOGIN_SUCCEEDED. Each record has last_login. Results are chronological, sorted by last_login. Results are also in specified time range (from, to) and are paginated (pSize, pIndex).\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n### pSize (optional)\nThe maximum number of hits to return\ndefault = 25,\nmin = 1,\nmax = 100\n\n<br />\n### pIndex (optional)\nNumber of hits to skip\ndefault = 0\n\n<br />\n### from (optional)\ntimestamp,\ndefault = current date - 30 days,\nmax = current date - 90 days\n\n<br />\n### to (optional)\ntimestamp,\ndefault = current\n\n<br />\n### user_id (optional)\nUser id, string, optional filter\n\n<br />\n### person_id (optional)\nPerson id, string, optional filter\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with page info and data\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter",
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/ReportResponse"
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/service_onboarding_report": {
      "post": {
        "summary": "Service onbording report",
        "description": "This report searches in DB and is collecting every record with eventName = E_USER_ONBOARDED. Results are also in specified time range (from, to) and are paginated (pSize, pIndex).\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n### pSize (optional)\nThe maximum number of hits to return\ndefault = 25,\nmin = 1,\nmax = 100\n\n<br />\n### pIndex (optional)\nNumber of hits to skip\ndefault = 0\n\n<br />\n### from (optional)\ntimestamp,\ndefault = current date - 30 days,\nmax = current date - 90 days\n\n<br />\n### to (optional)\ntimestamp,\ndefault = current\n\n<br />\n### user_id (optional)\nUser id, string, optional filter\n\n<br />\n### person_id (optional)\nPerson id, string, optional filter\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with page info and data\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter.\nThis report is downloadable. To request download, please add to request body below full object |\n```\n     \"download\": {\n        \"requestBy\": \"string, email (required)\",\n        \"notificationList\": [ \"string, email (required, 1-5 emails)\" ],\n        \"eventData\": {\n           \"tenant_dns\": \"string (required)\",\n           \"user_id\": \"string (required)\"\n        }\n     }\n```\nDownload works with pIndex and fetches up to 5000 records, generates CSV file and notifies provided emails that report is ready to download\n",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/ReportResponse"
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/application_usage_report": {
      "post": {
        "summary": "Application Usage report",
        "description": "This report searches in DB index formed from tenantId and communityId (index: tenantId.communityId) and collects all unique users with serviceProvider (unique tuples) where eventName = E_LOGIN_ATTEMPT and each record has latest_login and last_login (latest_login - 1, this can be null because there can be only 1 login attemp). Each tuple serviceProvider | user_id should get 1 row with number of person_id in it - person_id_count. Results are chronological, sorted by latest_login. Results are also in specified time range (from, to) and are paginated (pSize, pIndex).\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n### pSize (optional)\nThe maximum number of hits to return\ndefault = 25,\nmin = 1,\nmax = 100\n\n<br />\n### pIndex (optional)\nNumber of hits to skip\ndefault = 0\n\n<br />\n### from (optional)\ntimestamp,\ndefault = current date - 30 days,\nmax = current date - 90 days\n\n<br />\n### to (optional)\ntimestamp,\ndefault = current\n\n<br />\n### serviceProvider (optional)\nstring, optional filter\n\n<br />\n### user_id (optional)\nUser id, string , optional filter\n\n<br />\n### person_id (optional)\nPerson id, string, optional filter\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with page info and data\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter elastic raws",
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplicationReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/ReportResponse"
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/login_activity_report": {
      "post": {
        "summary": "Login Activity Report",
        "description": "This report searches in DB and collects all events with eventName = E_SP_REDIRECT_SUCCEEDED. Results are also in specified time range (from, to) and are paginated (pSize, pIndex).\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n### pSize (optional)\nThe maximum number of hits to return\ndefault = 25,\nmin = 1,\nmax = 100\n\n<br />\n### pIndex (optional)\nNumber of hits to skip\ndefault = 0\n\n<br />\n### from (optional)\ntimestamp,\ndefault = current date - 30 days,\nmax = current date - 90 days\n\n<br />\n### to (optional)\ntimestamp,\ndefault = current\n\n<br />\n### auth_method (optional)\nstring, optional filter\n\n<br />\n### user_id (optional)\nUser id, string , optional filter\n\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with page info and data\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter",
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginActivityReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/ReportResponse"
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/events": {
      "post": {
        "summary": "Get Events",
        "description": "This report searches in DB and returns all events 'as they are', not processed. Results are chronological and they are also in specified time range (from, to) and are paginated (pSize, pIndex). <br />\n**This report is downloadable, please check request body for more information.**\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n### pSize (optional)\nThe maximum number of hits to return\ndefault = 25,\nmin = 1,\nmax = 100\n\n<br />\n### pIndex (optional)\nNumber of hits to skip\ndefault = 0\n\n<br />\n### from (optional)\ntimestamp,\ndefault = current date - 30 days,\nmax = current date - 90 days\n\n<br />\n### to (optional)\ntimestamp,\ndefault = current\n\n<br />\n### query (optional)\na formatted query object to allow caller to run custom pre-formatted-queries and will run the query AS-IS to the DB.\n\n<br />\n### IMPORTANT: All other fields are optional filters, you can search by any field you want\n\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with page info and data\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter raws.\nThis report is downloadable. To request download, please add to request body below full object |\n```\n     \"download\": {\n        \"requestBy\": \"string, email (required)\",\n        \"notificationList\": [ \"string, email (required, 1-5 emails)\" ],\n        \"eventData\": {\n           \"tenant_dns\": \"string (required)\",\n           \"user_id\": \"string (required)\"\n        }\n     }\n```\nDownload works with pIndex and fetches up to 5000 records, generates CSV file and notifies provided emails that report is ready to download\n",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetEventsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/ReportResponse"
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/role_assignment": {
      "post": {
        "summary": "Get a role assignment report",
        "description": "This report is only available as a download. It collects all of the authorizations for the roles specified,\nthen aggregates it with user data and a latest login time for the user.\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with page info and data\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter raws.\nThis report is only available as a download. Please add to request body below full object |\n```\n    {\n     \"roles\": [\"role-1\", \"role-2\"] (optional),\n     \"roleIds\": [\"id-1\", \"id-2\"] (optional),\n     \"download\": {\n     \"requestBy\": \"string, email (required)\",\n     \"notificationList\": [ \"string, email (required, 1-5 emails)\" ],\n     \"eventData\": {\n         \"tenant_dns\": \"string (required)\",\n         \"user_id\": \"string (required)\"\n        }\n     },\n    \"data_now\": \"boolean, default false (optional)\"\n   }\n```\nDownload generates CSV file and notifies provided emails that report is ready to download\n",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoleAssignmentReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/DonwloadJobResponse"
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/event/{eventName}": {
      "put": {
        "summary": "Create Event",
        "description": "Creates an event in DB. You can send any number of fields in request body\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### eventName (required)\nThe name of the event to log. Suggested values: E_USER_ONBOARDED, E_USER_INVITED, E_LOGIN_ATTEMPT, E_LOG_OTP_REQUESTED or different.\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n### type (required)\nEvent type\n\n### timestamp (optional)\nTime of event in string that is able to be parsed as date <br />\ndefault = current time\n\n### epoch_time (optional)\nTime of event in number <br />\ndefault = current time\n\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns status code OK if everything is ok\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "eventName",
            "in": "path",
            "description": "Name of event",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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 'data' field with encrypted object below:\n\nIMPORTANT - you can send unencrypted data in this request, it is only available in Swagger\n\n```\n{\n    \"data\": {\n        \"type\": \"string - required\",\n        \"epoch_time\": \"number in seconds - optional\",\n        \"timestamp\": \"string in date format 'YYYY-MM-DD HH:mm:ss.SSS' or other readable - optional\",\n        ...restOfEventData\n    }\n}\n```\n",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEventRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/OK"
          },
          "400": {
            "$ref": "#/components/schemas/BadRequestError"
          },
          "403": {
            "$ref": "#/components/schemas/ForbiddenError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/last_seen_report": {
      "post": {
        "summary": "Get last seen",
        "description": "This report searches in DB and returns always array with one event for given user_id, device_id, person_id or even eventName.\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n! IMPORTANT - If eventName is specified, then at least device_id and user_id is required and person_id optional. If eventName is not specified, then at least one of these fields is required: user_id, device_id or person_id.\n\n-----\n\n### user_id (optional)\nThe id of user.\nNo default value\n\n<br />\n### device_id (optional)\nThe id of device.\nNo default value\n\n<br />\n### person_id (optional)\nThe id of person.\nNo default value\n\n<br />\n### eventName (optional)\nThe name of event.\nNo default value\n\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with data field containing array of only one event\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter",
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LastSeenRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/LastSeenResponse"
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/download/jobs": {
      "post": {
        "summary": "Get Download Jobs",
        "description": "Get Download Jobs with sort and pagination\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with page info and data\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to sort and paginate download jobs\n\nAll fields are optional\n\nBy default: sort is undefined, pSize is 10, pIndex is 0\n",
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetDownloadJobsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDownloadJobsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/schemas/BadRequestError"
          },
          "403": {
            "$ref": "#/components/schemas/ForbiddenError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/download/job/{jobId}": {
      "patch": {
        "summary": "Cancel download job",
        "description": "Cancel download job\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\n\n### jobId (required)\nThe id of job\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with page info and data\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "Id of job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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/CancelDownloadJobResponse"
                }
              }
            }
          },
          "403": {
            "$ref": "#/components/schemas/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/job": {
      "post": {
        "summary": "Create job",
        "description": "Creates a job in DB. You can send any job data in request body\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns status code OK if everything is ok\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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 'data' field with encrypted object below:\n\nIMPORTANT - you can send unencrypted data in this request, it is only available in Swagger\n\n```\n{\n\n        \"jobId\": \"string - required\",\n        \"tenantId\": \"string - required\",\n        \"communityId\": \"string - required\",\n        \"totalParts\": \"number - required\",\n        \"totalCount\": \"number - required\",\n        \"status\": \"string - required\",\n        \"query\": \"array - required\",\n        \"requestedBy\": \"string - required\",\n        \"sendNotificationTo\": \"array - required\",\n        \"tenantDns\": \"string - required\",\n        \"user_id\": \"string - required\",\n        \"requestUuid\": \"string - required\",\n        \"createdAt\": \"number - required\",\n        \"completedAt\": \"number - required\",\n        \"downloadLink\": \"string - required\",\n        \"size\": \"number - required\",\n\n}\n```\n",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateJobRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/OK"
          },
          "400": {
            "$ref": "#/components/schemas/BadRequestError"
          },
          "403": {
            "$ref": "#/components/schemas/ForbiddenError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/job/{jobId}": {
      "patch": {
        "summary": "Update job",
        "description": "Update a job in DB.\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\n\n### jobId (require)\nId of Job to update\n\n|              **Headers**                     |\n|----------------------------------------------|\n\n### apikey (required)\nAPI key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n### status (require)\nStatus of Job to update\n\n### downloadLink (require)\nDownload link of report data\n\n### size (require)\nSize of report data file\n\n### completedAt (require)\ncompleted time of report data file\n\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns status code OK if everything is ok\n",
        "tags": [
          "Tenant"
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string",
              "example": "5f3d8d0cd866fa61019cf968"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string",
              "example": "5f3d8d0cd866fa61019cf969"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "Id of job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "apikey",
            "in": "header",
            "description": "API key",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Request body contains 'data' field with encrypted object below:\n\nIMPORTANT - you can send unencrypted data in this request, it is only available in Swagger\n\n```\n{\n        \"status\": \"string - required\",\n        \"downloadLink\": \"string - optinal\",\n        \"size\": \"number - optinal\",\n        \"completedAt\": \"number - optinal\",\n\n}\n```\n",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateJobRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/OK"
          },
          "400": {
            "$ref": "#/components/schemas/BadRequestError"
          },
          "403": {
            "$ref": "#/components/schemas/ForbiddenError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/transactions": {
      "post": {
        "summary": "Fetch transactions",
        "description": "This transactions searches in DB and returns all transactions 'as they are', not processed. Results are chronological and they are also in specified time range (from, to) and are paginated (pSize, pIndex). <br />\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n### pSize (optional)\nThe maximum number of hits to return\ndefault = 25,\nmin = 1,\nmax = 100\n\n<br />\n### pIndex (optional)\nNumber of hits to skip\ndefault = 0\n\n<br />\n### from (optional)\ntimestamp,\ndefault = current date - 30 days,\nmax = current date - 90 days\n\n<br />\n### to (optional)\ntimestamp,\ndefault = current\n\n<br />\n### query (optional)\na formatted query object to allow caller to run custom pre-formatted-queries and will run the query AS-IS to the DB.\n\n<br />\n### IMPORTANT: All other fields are optional filters, you can search by any field you want\n\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with page info and data\n",
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter raws.\n",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FetchTransactionsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/FetchTransactionsResponse"
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/verification_sessions_report": {
      "post": {
        "summary": "Get verification sessions report",
        "description": "This report fetches verification sessions from IDProofing. <br />\n**This report is downloadable, please check request body for more information.**\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n<br />\n### query (optional)\na formatted query object to allow caller to run custom pre-formatted-queries.\n\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns jobId\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter raws.\nThis report is downloadable. To request download, please add to request body below full object |\n```\n{\n   \"query\": {\n         \"id\": \"session id : non-mandatory\",\n         \"status\": \"COMPLETED_PASS | COMPLETED_FAILED | COMPLETED_NOT_PERFORMED | PENDING | EXPIRED | INPROGRESS | DECLINED | COMPLETED | ABANDONED | CANCELLED : non-mandatory\",\n         \"documentType\": \"dl_object | ppt_object | idcard_object : non-mandatory\",\n         \"name\": \"test : non-mandatory\",\n         \"startDate\": \"2024-12-13 00:00:00.000 : non-mandatory\",\n         \"endDate\": \"2024-12-19 23:59:59.000 : non-mandatory\"\n      },\n      \"download\": {\n         \"notificationList\": [\n             \"email@1kosmos.com\"\n         ],\n         \"requestBy\": \"email@1kosmos.com\",\n         \"eventData\": {\n             \"tenant\": \"xxxxxxxxxxxx\",\n             \"community\": \"xxxxxxxxxxxx\",\n             \"user_id\": \"user\",\n             \"tenant_dns\": \"1k-dev.1kosmos.net\"\n         }\n     }\n}\n```\n",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FetchVerificationSessionsReportRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "$ref": "#/components/schemas/FetchVerificationSessionsReportResponse"
          },
          "400": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/hardwaretokens_export": {
      "post": {
        "summary": "Get Hardware tokens or user assignment tokens export report",
        "description": "This report fetches hardware tokens or user assignment tokens from adminconsole . <br />\n**This report is downloadable, please check request body for more information.**\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n### reports_type\ntype of reports to be exported\n<br />\n### query (optional)\na formatted query object to allow caller to run custom pre-formatted-queries.\n<br />\n### download\nan object with details - notification list array, requestedBy email string and eventData object\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns jobId\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter raws.\nThis report is downloadable. To request download, please add to request body below full object |\n```\n{\n   \"reports_type\": \"xxxxxx\",\n   \"query\": {\n         \"searchStr\" : \"xxxxx\"\n      },\n      \"download\": {\n         \"notificationList\": [\n             \"email@1kosmos.com\"\n         ],\n         \"requestBy\": \"email@1kosmos.com\",\n         \"eventData\": {\n             \"user_id\": \"xxxxxxxxxxxx\",\n             \"tenant_dns\": \"1k-dev.1kosmos.net\",\n             \"community_name\":\"\",\n             \"caller_ip\":\"\"\n         }\n     }\n}\n```\n",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FetchHardwareTokensExportReportRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "$ref": "#/components/schemas/FetchHardwareTokensExportReportResponse"
          },
          "400": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    },
    "/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 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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns array with service keys\n",
        "tags": [
          "Service Key"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "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 60 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": {
            "$ref": "#/components/schemas/ServiceKeysResponse"
          }
        }
      }
    },
    "/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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with page info and data\n",
        "tags": [
          "Service Key"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "keyId",
            "in": "path",
            "description": "keyId of service key to reset",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": {
          "204": {
            "$ref": "#/components/schemas/NoContent"
          }
        }
      }
    },
    "/sd": {
      "get": {
        "summary": "Get all service directories.",
        "description": "Get all service directories.\n\n|            **Returns**                    |\n|-------------------------------------------|\n\nReturns all service directories.\n",
        "tags": [
          "Service Directory"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceDirectoryResponse"
                }
              }
            }
          }
        }
      }
    },
    "/publickeys": {
      "get": {
        "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": "\n|            **Returns**                    |\n|-------------------------------------------|\n\n|            **Headers**                     |\n|----------------------------------------------|\n\n  ### licensekey\n  License key\n",
        "tags": [
          "Environment"
        ],
        "parameters": [
          {
            "name": "licensekey",
            "in": "header",
            "description": "License key;",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/html": {
                "schema": {
                  "type": "string",
                  "example": "Not supported"
                }
              }
            }
          }
        }
      }
    },
    "/ecdsa_helper/{method}": {
      "post": {
        "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\n|            **Request Body**                  |\n|----------------------------------------------|\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": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EcdsaEncryptDecryptRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "method",
            "schema": {
              "type": "string",
              "enum": [
                "encrypt",
                "decrypt"
              ],
              "default": "encrypt"
            }
          }
        ],
        "responses": {
          "200": {
            "422": {
              "$ref": "#/components/schemas/UnsupportedStateError"
            },
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EcdsaEncryptDecryptResponse"
                }
              }
            }
          }
        }
      }
    },
    "/download/cleanup": {
      "delete": {
        "summary": "Cleanup download jobs",
        "description": "Cleanup download jobs. Can only be accessed using infra key\n\n|              **Headers**                     |\n|----------------------------------------------|\n\n### licensekey (required)\nUnencrypted infra key\n\n|              **Returns**                     |\n|----------------------------------------------|\n\n204 No Content\n",
        "tags": [
          "Download"
        ],
        "parameters": [
          {
            "name": "licensekey",
            "in": "header",
            "description": "Infra key",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/schemas/NoContent"
          },
          "403": {
            "$ref": "#/components/schemas/ForbiddenError"
          }
        }
      }
    },
    "/tenant/{tenantId}/community/{communityId}/v2/login_activity_report": {
      "post": {
        "summary": "Login Activity Report",
        "description": "This report searches in DB and collects all events where eventName = E_SP_REDIRECT_SUCCEEDED ||eventName = E_SP_REDIRECT_SUCCEEDED and application is adminx. Results are also in specified time range (from, to) and are paginated (pSize, pIndex).\n\n|              **Parameters**                  |\n|----------------------------------------------|\n\n### tenantId (required)\nThe id of tenant\n\n### communityId (required)\nThe id of community\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 60 seconds from now\n\n### publickey (required)\nPublic key\n\n|              **Request Body**                |\n|----------------------------------------------|\n\n### pSize (optional)\nThe maximum number of hits to return\ndefault = 25,\nmin = 1,\nmax = 100\n\n<br />\n### pIndex (optional)\nNumber of hits to skip\ndefault = 0\n\n<br />\n### from (optional)\ntimestamp,\ndefault = current date - 30 days,\nmax = current date - 90 days\n\n<br />\n### to (optional)\ntimestamp,\ndefault = current\n\n<br />\n### auth_method (optional)\nstring, optional filter\n\n<br />\n### user_id (optional)\nUser id, string , optional filter\n\n<br />\n### application (optional)\napplication, string , optional filter\n\n\n|              **Returns**                     |\n|----------------------------------------------|\n\nReturns object with page info and data\n",
        "tags": [
          "Tenant"
        ],
        "security": [
          {
            "authMyPublicKey": []
          },
          {
            "authMyPrivateKey": []
          },
          {
            "authLicense": []
          }
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "Id of tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "communityId",
            "in": "path",
            "description": "Id of community",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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 60 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": "Data to filter the E_LOGIN_SUCCEEDED and E_SP_REDIRECT_SUCCEEDED events.\nThis report is downloadable. To request download, please add to request body below full object |\n```\n     \"download\": {\n        \"requestBy\": \"string, email (required)\",\n        \"notificationList\": [ \"string, email (required, 1-5 emails)\" ],\n        \"eventData\": {\n           \"tenant_dns\": \"string (required)\",\n           \"user_id\": \"string (required)\"\n        }\n     }\n```\nDownload works with pIndex and fetches up to 5000 records, generates CSV file and notifies provided emails that report is ready to download\n",
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginActivityReportV2Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/schemas/ReportResponse"
          },
          "404": {
            "$ref": "#/components/schemas/NotFoundRowsError"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "DefaultResponse": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "API is working"
          }
        }
      },
      "EcdsaEncryptDecryptRequest": {
        "type": "object",
        "required": [
          "dataStr",
          "publicKey",
          "privateKey"
        ],
        "properties": {
          "dataStr": {
            "required": true,
            "type": "string",
            "description": "Message to encrypt or decrypt",
            "example": "Hey, This is example data string."
          },
          "publicKey": {
            "required": true,
            "type": "string",
            "example": "xxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
          },
          "privateKey": {
            "required": true,
            "type": "string",
            "example": "xxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
          }
        }
      },
      "EcdsaEncryptDecryptResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "string"
          }
        },
        "example": {
          "data": "xxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxx"
        }
      },
      "ServiceKey": {
        "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"
        }
      },
      "ValidationError": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "Error content"
          },
          "param": {
            "type": "string",
            "description": "Field name"
          }
        },
        "xml": {
          "name": "ValidationError"
        }
      },
      "PublicKeyResponse": {
        "type": "object",
        "properties": {
          "publicKey": {
            "type": "string"
          }
        },
        "example": {
          "publicKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        }
      },
      "NoContent": {
        "description": "This API returns no content"
      },
      "OK": {
        "description": "API successfully processed"
      },
      "ForbiddenError": {
        "description": "Caller doesn't have right permissions to call this API"
      },
      "BadRequestError": {
        "description": "Bad request",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "errors": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/ValidationError"
                      }
                    ]
                  }
                }
              }
            }
          }
        }
      },
      "UnauthorizedError": {
        "description": "API is not authorized to call this API"
      },
      "NotFoundError": {
        "description": "No service Key found"
      },
      "NotFoundRowsError": {
        "description": "No rows found"
      },
      "UnsupportedStateError": {
        "description": "Unsupported state or unable to authenticate data",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "error": {
                  "type": "string",
                  "example": "Unsupported state or unable to authenticate data"
                }
              }
            }
          }
        }
      },
      "ReportRequest": {
        "type": "object",
        "properties": {
          "pSize": {
            "required": false,
            "type": "Number",
            "description": "A limit on the number of objects to be returned. Default is 25",
            "example": 10
          },
          "pIndex": {
            "required": false,
            "type": "Number",
            "description": "The pIndex key is a cursor for the pagination.",
            "example": 0
          },
          "from": {
            "required": false,
            "type": "string",
            "description": "Date from which to start the search",
            "example": "2021-02-01 00:00:00.000"
          },
          "to": {
            "required": false,
            "type": "string",
            "description": "date to end the search",
            "example": "2021-04-01 00:00:00.000"
          }
        }
      },
      "MetricsRequest": {
        "type": "object",
        "properties": {
          "metricsName": {
            "required": true,
            "type": "string",
            "description": "Name of the metrics to retrieve",
            "example": "M_C_LOGINS"
          },
          "from": {
            "required": false,
            "type": "string",
            "description": "Date from which to start the search",
            "example": "2023-02-01 00:00:00.000"
          },
          "to": {
            "required": false,
            "type": "string",
            "description": "Date to end the search",
            "example": "2023-02-10 00:00:00.000"
          },
          "responseTimezone": {
            "required": false,
            "type": "string",
            "description": "Timezone for correctly formatting time in response",
            "example": "UTC - string optional"
          },
          "authModuleId": {
            "required": false,
            "type": "string",
            "description": "AuthModuleId - only applicable on M_C_ACTIVE_USER metrics",
            "example": "xxxxxxxx"
          }
        }
      },
      "GetEventsRequest": {
        "type": "object",
        "properties": {
          "pSize": {
            "required": false,
            "type": "Number",
            "description": "A limit on the number of objects to be returned. Default is 25",
            "example": 10
          },
          "pIndex": {
            "required": false,
            "type": "Number",
            "description": "The pIndex key is a cursor for the pagination.",
            "example": 0
          },
          "from": {
            "required": false,
            "type": "string",
            "description": "Date from which to start the search",
            "example": "2021-02-01 00:00:00.000"
          },
          "to": {
            "required": false,
            "type": "string",
            "description": "date to end the search",
            "example": "2021-02-01 00:00:00.000"
          },
          "query": {
            "required": false,
            "type": "object",
            "example": {
              "event_name": "E_LOGIN_SUCCEEDED",
              "eventData.user_firstname": "xxx"
            }
          }
        }
      },
      "RoleAssignmentReportRequest": {
        "type": "object",
        "properties": {
          "roles": {
            "required": false,
            "type": "array",
            "description": "roles, each of which we need to retrieve all users with that role name",
            "example": [
              "role-1",
              "role-2"
            ]
          },
          "roleIds": {
            "required": false,
            "type": "array",
            "description": "roleIds, each of which we need to retrieve all users with that role authorization",
            "example": [
              "id-1",
              "id-2"
            ]
          },
          "data_now": {
            "required": false,
            "type": "boolean",
            "example": false
          }
        }
      },
      "ApplicationReportRequest": {
        "type": "object",
        "properties": {
          "pSize": {
            "required": false,
            "type": "Number",
            "description": "A limit on the number of objects to be returned. Default is 25",
            "example": 10
          },
          "pIndex": {
            "required": false,
            "type": "Number",
            "description": "The pIndex key is a cursor for the pagination.",
            "example": 0
          },
          "from": {
            "required": false,
            "type": "string",
            "description": "Date from which to start the search",
            "example": "2021-02-01 00:00:00.000"
          },
          "to": {
            "required": false,
            "type": "string",
            "description": "date to end the search",
            "example": "2021-04-01 00:00:00.000"
          },
          "serviceProvider": {
            "required": false,
            "type": "string",
            "description": "optional filter"
          }
        }
      },
      "FetchVerificationSessionsReportRequest": {
        "type": "object",
        "properties": {
          "query": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "xxxxxxxxxx"
              },
              "status": {
                "type": "string",
                "example": "COMPLETED_PASS | COMPLETED_FAILED | COMPLETED_NOT_PERFORMED | PENDING | EXPIRED | INPROGRESS | DECLINED | COMPLETED | ABANDONED | CANCELLED"
              },
              "documentType": {
                "type": "string",
                "example": "dl_object | ppt_object | idcard_object"
              },
              "name": {
                "type": "string",
                "example": "xxxxxxxxxx"
              },
              "startDate": {
                "type": "string",
                "example": "2024-12-19 23:59:59.000"
              },
              "endDate": {
                "type": "string",
                "example": "2024-12-19 23:59:59.000"
              }
            }
          },
          "download": {
            "type": "object",
            "properties": {
              "notificationList": {
                "type": "array",
                "example": [
                  "email@1kosmos.com"
                ]
              },
              "requestBy": {
                "type": "string",
                "example": "email@1kosmos.com"
              },
              "eventData": {
                "type": "object",
                "properties": {
                  "tenant": {
                    "type": "string",
                    "example": "xxxxxxxxxxxx"
                  },
                  "community": {
                    "type": "string",
                    "example": "xxxxxxxxxxxx"
                  },
                  "user_id": {
                    "type": "string",
                    "example": "xxxxxxxxxxxx"
                  },
                  "tenant_dns": {
                    "type": "string",
                    "example": "1k-dev.1kosmos.net"
                  }
                }
              }
            }
          }
        }
      },
      "FetchHardwareTokensExportReportRequest": {
        "type": "object",
        "properties": {
          "reports_type": {
            "type": "string",
            "example": "hardware_tokens or user_hardwaretokens"
          },
          "query": {
            "type": "object"
          },
          "download": {
            "type": "object",
            "properties": {
              "notificationList": {
                "type": "array",
                "example": [
                  "email@1kosmos.com"
                ]
              },
              "requestBy": {
                "type": "string",
                "example": "email@1kosmos.com"
              },
              "eventData": {
                "type": "object",
                "properties": {
                  "user_id": {
                    "type": "string",
                    "example": "xxxxxxxxxxxx"
                  },
                  "community_name": {
                    "type": "string",
                    "example": "xxxxxxxxxxxx"
                  },
                  "caller_ip": {
                    "type": "string",
                    "example": "xxxxxxxxxxxx"
                  },
                  "tenant_dns": {
                    "type": "string",
                    "example": "1k-dev.1kosmos.net"
                  }
                }
              }
            }
          }
        }
      },
      "AuditLogReportRequest": {
        "type": "object",
        "properties": {
          "pSize": {
            "required": false,
            "type": "Number",
            "description": "A limit on the number of objects to be returned. Default is 25",
            "example": 25
          },
          "pIndex": {
            "required": false,
            "type": "Number",
            "description": "The pIndex key is a cursor for the pagination.",
            "example": 0
          },
          "user_id": {
            "required": false,
            "type": "string",
            "description": "optional filter"
          },
          "from": {
            "required": false,
            "type": "string",
            "description": "Date from which to start the search",
            "example": "2022-12-19 00:00:00.000"
          },
          "to": {
            "required": false,
            "type": "string",
            "description": "date to end the search",
            "example": "2022-12-31 00:00:00.000"
          }
        }
      },
      "LoginActivityReportRequest": {
        "type": "object",
        "properties": {
          "pSize": {
            "required": false,
            "type": "Number",
            "description": "A limit on the number of objects to be returned. Default is 25",
            "example": 10
          },
          "pIndex": {
            "required": false,
            "type": "Number",
            "description": "The pIndex key is a cursor for the pagination.",
            "example": 0
          },
          "from": {
            "required": false,
            "type": "string",
            "description": "Date from which to start the search",
            "example": "2021-02-01 00:00:00.000"
          },
          "to": {
            "required": false,
            "type": "string",
            "description": "date to end the search",
            "example": "2021-04-01 00:00:00.000"
          },
          "auth_method": {
            "required": false,
            "type": "string",
            "description": "optional filter"
          },
          "user_id": {
            "required": false,
            "type": "string",
            "description": "optional filter"
          }
        }
      },
      "LoginActivityReportV2Request": {
        "type": "object",
        "properties": {
          "pSize": {
            "required": false,
            "type": "Number",
            "description": "A limit on the number of objects to be returned. Default is 25",
            "example": 10
          },
          "pIndex": {
            "required": false,
            "type": "Number",
            "description": "The pIndex key is a cursor for the pagination.",
            "example": 0
          },
          "from": {
            "required": false,
            "type": "string",
            "description": "Date from which to start the search",
            "example": "2021-02-01 00:00:00.000"
          },
          "to": {
            "required": false,
            "type": "string",
            "description": "date to end the search",
            "example": "2021-04-01 00:00:00.000"
          },
          "auth_method": {
            "required": false,
            "type": "string",
            "description": "optional filter"
          },
          "user_id": {
            "required": false,
            "type": "string",
            "description": "optional filter"
          },
          "application": {
            "required": false,
            "type": "string",
            "description": "optional filter"
          }
        }
      },
      "MetricsResponse": {
        "type": "object",
        "description": "Metrics Responses",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "properties": {
                "TBD": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "ReportResponse": {
        "type": "object",
        "description": "See record strucuture in jira",
        "properties": {
          "page": {
            "type": "object",
            "description": "Current page info",
            "properties": {
              "pIndex": {
                "type": "number",
                "description": "The pIndex key is a cursor for the pagination."
              },
              "total": {
                "type": "number",
                "description": "Total number of hits in database"
              },
              "pSize": {
                "type": "number",
                "description": "Number of records responded"
              }
            }
          },
          "data": {
            "type": "array",
            "items": {
              "properties": {
                "TBD": {
                  "type": "object"
                }
              }
            }
          }
        },
        "example": {
          "page": {
            "pIndex": 0,
            "total": 50,
            "pSize": 10
          },
          "data": [
            {
              "TBD": "TBD"
            }
          ]
        }
      },
      "DonwloadJobResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "example": "6557-78678-3422-23534"
          }
        }
      },
      "ServiceKeysResponse": {
        "type": "array",
        "description": "Service keys array",
        "items": {
          "$ref": "#/components/schemas/ServiceKey"
        }
      },
      "HealthzResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "example": "all services operational"
          },
          "publicKey": {
            "type": "string",
            "example": "//same as <service>/publickeys endpoint"
          },
          "code": {
            "type": "string",
            "example": "200"
          },
          "version": {
            "type": "string",
            "example": "xxxx.xxxx.xxxx"
          }
        }
      },
      "CreateEventRequest": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "example": "event"
              },
              "timestamp": {
                "type": "string",
                "example": "2023-02-14 15:00:00.000"
              },
              "epoch_time": {
                "type": "number",
                "example": 1318781876
              }
            }
          }
        }
      },
      "CreateJobRequest": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "example": "string"
          },
          "tenantId": {
            "type": "string",
            "example": "string"
          },
          "communityId": {
            "type": "string",
            "example": "string"
          },
          "totalParts": {
            "type": "number",
            "example": 3
          },
          "totalCount": {
            "type": "number",
            "example": 3
          },
          "status": {
            "type": "string",
            "example": "string"
          },
          "query": {
            "type": "array",
            "example": []
          },
          "requestedBy": {
            "type": "string",
            "example": "string"
          },
          "sendNotificationTo": {
            "type": "array",
            "example": []
          },
          "tenantDns": {
            "type": "string",
            "example": "string"
          },
          "user_id": {
            "type": "string",
            "example": "string"
          },
          "requestUuid": {
            "type": "string",
            "example": "string"
          },
          "createdAt": {
            "type": "number",
            "example": 1318781876
          },
          "completedAt": {
            "type": "number",
            "example": 1318781876
          },
          "downloadLink": {
            "type": "string",
            "example": ""
          },
          "size": {
            "type": "number",
            "example": 123
          }
        }
      },
      "UpdateJobRequest": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "example": "string"
          },
          "completedAt": {
            "type": "number",
            "example": 1318781876
          },
          "downloadLink": {
            "type": "string",
            "example": ""
          },
          "size": {
            "type": "number",
            "example": 123
          }
        }
      },
      "LastSeenRequest": {
        "type": "object",
        "properties": {
          "device_id": {
            "type": "string",
            "example": "xxxxxxxx"
          },
          "user_id": {
            "type": "string",
            "example": "xxxxxxxx"
          },
          "person_id": {
            "type": "string",
            "example": "xxxxxxxx"
          },
          "eventName": {
            "type": "string",
            "example": "xxxxxxxx"
          }
        }
      },
      "LastSeenResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "GetServiceDirectoryResponse": {
        "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"
        }
      },
      "GetDownloadJobsRequest": {
        "type": "object",
        "properties": {
          "sort": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "field": {
                  "type": "string",
                  "example": "field"
                },
                "order": {
                  "type": "string",
                  "example": "desc/asc"
                }
              }
            }
          },
          "pSize": {
            "type": "number",
            "example": 10
          },
          "pIndex": {
            "type": "number",
            "example": 0
          }
        }
      },
      "GetDownloadJobsResponse": {
        "type": "object",
        "properties": {
          "page": {
            "type": "object",
            "properties": {
              "pSize": {
                "type": "number",
                "example": 10
              },
              "pIndex": {
                "type": "number",
                "example": 0
              },
              "total": {
                "type": "number",
                "example": 120
              }
            }
          },
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "jobId": {
                  "type": "string",
                  "example": "jobId"
                },
                "createdAt": {
                  "type": "number",
                  "example": 1231242412421
                },
                "completedAt": {
                  "type": "number",
                  "example": 1231242412421
                },
                "status": {
                  "type": "string",
                  "example": "status"
                },
                "requestedBy": {
                  "type": "string",
                  "example": "string"
                },
                "sendNotificationTo": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "example": "string"
                  }
                },
                "size": {
                  "type": "number",
                  "example": 1234
                },
                "downloadLink": {
                  "type": "string",
                  "example": "https://dns..."
                }
              }
            }
          }
        }
      },
      "CancelDownloadJobResponse": {
        "type": "object",
        "properties": {
          "createdAt": {
            "type": "number",
            "example": 1231242412421
          },
          "status": {
            "type": "string",
            "example": "Cancelled"
          },
          "sendNotificationTo": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "string"
            }
          }
        }
      },
      "FetchTransactionsRequest": {
        "type": "object",
        "properties": {
          "pSize": {
            "required": false,
            "type": "Number",
            "description": "A limit on the number of objects to be returned. Default is 25",
            "example": 10
          },
          "pIndex": {
            "required": false,
            "type": "Number",
            "description": "The pIndex key is a cursor for the pagination.",
            "example": 0
          },
          "from": {
            "required": false,
            "type": "string",
            "description": "Date from which to start the search",
            "example": "2021-02-01 00:00:00.000"
          },
          "to": {
            "required": false,
            "type": "string",
            "description": "date to end the search",
            "example": "2021-02-01 00:00:00.000"
          },
          "query": {
            "required": false,
            "type": "object",
            "example": {
              "uid": "xxxxxx"
            }
          }
        }
      },
      "FetchTransactionsResponse": {
        "type": "object",
        "description": "See record structure in jira",
        "properties": {
          "page": {
            "type": "object",
            "description": "Current page info",
            "properties": {
              "pIndex": {
                "type": "number",
                "description": "The pIndex key is a cursor for the pagination."
              },
              "total": {
                "type": "number",
                "description": "Total number of hits in database"
              },
              "pSize": {
                "type": "number",
                "description": "Number of records responded"
              }
            }
          },
          "data": {
            "type": "array",
            "items": {
              "TBD": {
                "type": "object"
              }
            }
          }
        },
        "example": {
          "page": {
            "pIndex": 0,
            "total": 50,
            "pSize": 10
          },
          "data": [
            {
              "TBD": "TBD"
            }
          ]
        }
      },
      "FetchVerificationSessionsReportResponse": {
        "type": "object",
        "description": "Verification sessions job successfully created",
        "properties": {
          "jobId": {
            "type": "string",
            "example": "fb609d0f-5819-4b60-8fb8-991e0919036e - uuid"
          }
        }
      },
      "FetchHardwareTokensExportReportResponse": {
        "type": "object",
        "description": "Hardware tokens export job successfully created",
        "properties": {
          "jobId": {
            "type": "string",
            "example": "fb609d0f-5819-4b60-8fb8-991e0919036e - uuid"
          }
        }
      }
    },
    "securitySchemes": {
      "authMyPublicKey": {
        "type": "apiKey",
        "name": "authMyPublicKey",
        "in": "header",
        "description": "Caller's ECDSA publicKey"
      },
      "authMyPrivateKey": {
        "type": "apiKey",
        "name": "authMyPrivateKey",
        "in": "header",
        "description": "Caller's ECDSA privateKey"
      },
      "authLicense": {
        "type": "apiKey",
        "name": "authLicense",
        "in": "header",
        "description": "License key from License API"
      }
    }
  },
  "tags": [
    {
      "name": "Environment"
    }
  ]
}