{
  "openapi": "3.0.4",
  "info": {
    "title": "Keepnet Labs API",
    "description": "<div style=\"margin-bottom: 1rem;\">\r\n                                <p>Other API Documents</p>\r\n                                <div>\r\n                                    <div style=\"margin-bottom:5px;\">\r\n                                        <a class=\"link\" href=\"https://vishing-api.keepnetlabs.com/docs/index.html\" target=\"_blank\">Vishing API</a>\r\n                                    </div>\r\n                                    <div style=\"margin-bottom:5px;\">\r\n                                        <a class=\"link\" href=\"https://ets-api.keepnetlabs.com/docs/index.html\" target=\"_blank\">ETS API</a>\r\n                                    </div>\r\n                                    <div style=\"margin-bottom:5px;\">\r\n                                        <a class=\"link\" href=\"https://ti-api.keepnetlabs.com/docs/index.html\" target=\"_blank\">Threat\r\n                                            Intelligence API</a>\r\n                                    </div>\r\n                                </div>\r\n                            </div>",
    "contact": {
      "name": "with support team",
      "email": "support@keepnetlabs.com"
    },
    "license": {
      "name": "Keepnet Labs",
      "url": "http://www.keepnetlabs.com"
    },
    "version": "v1"
  },
  "paths": {
    "/api/account/logout": {
      "get": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Signs out the currently authenticated user by clearing the session and authentication cookies.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/account/login": {
      "post": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Authenticates a user with email and password credentials and returns an access token.",
        "requestBody": {
          "description": "Login credentials containing email and password.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Account.LoginRequest"
              },
              "example": {"username":"admin@example.com","bypassSaml":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Account.LoginRequest"
              },
              "example": {"username":"admin@example.com","bypassSaml":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Account.LoginRequest"
              },
              "example": {"username":"admin@example.com","bypassSaml":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Account.LoginRequest"
              },
              "example": {"username":"admin@example.com","bypassSaml":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/agent-auth/login-url": {
      "post": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Generates a one-time login URL for the Agentic AI chat interface.\r\nCreates a short-lived exchange token stored in Redis and returns a redirect URL\r\nthat the client can use to authenticate with the Agentic AI service.",
        "requestBody": {
          "description": "Contains the session ID for the Agentic AI chat session.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgentAuth.AgentAuthLoginRequest"
              },
              "example": {"sessionId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgentAuth.AgentAuthLoginRequest"
              },
              "example": {"sessionId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgentAuth.AgentAuthLoginRequest"
              },
              "example": {"sessionId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgentAuth.AgentAuthLoginRequest"
              },
              "example": {"sessionId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/agent-auth/token": {
      "post": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Exchanges a one-time authorization code for a bearer access token.\r\nThe auth code is consumed (deleted from Redis) after successful exchange\r\nto prevent replay attacks.",
        "requestBody": {
          "description": "Contains the one-time authorization code to exchange.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgentAuth.AgentAuthTokenRequest"
              },
              "example": {"authCode":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgentAuth.AgentAuthTokenRequest"
              },
              "example": {"authCode":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgentAuth.AgentAuthTokenRequest"
              },
              "example": {"authCode":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgentAuth.AgentAuthTokenRequest"
              },
              "example": {"authCode":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/googleoauth/authorize": {
      "get": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Initiates the Google OAuth 2.0 authorization flow by generating the consent URL.\r\nThe client should redirect the user to the returned URL to begin the Google authentication process.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/googleoauth/callback": {
      "get": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Handles the Google OAuth 2.0 callback after user consent.\r\nExchanges the authorization code for access and refresh tokens and stores the credentials.",
        "parameters": [
          {
            "name": "Code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "State",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/googleoauth/revoke": {
      "delete": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Revokes the stored Google OAuth credentials for the current company,\r\ndisconnecting the Google Workspace integration.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/companies/saml-settings": {
      "post": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Creates a new SAML 2.0 identity provider configuration for the current company.\r\nAccepts IdP metadata including entity ID, SSO URL, certificate, and attribute mappings.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "Domain",
                  "File",
                  "IdPEntityID",
                  "IdPSSOTargetUrl",
                  "Name",
                  "StatusId"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Display name for the SAML SSO configuration."
                  },
                  "IdPSSOTargetUrl": {
                    "type": "string",
                    "description": "Identity Provider SSO target URL where authentication requests are sent."
                  },
                  "IdPCertFingerprint": {
                    "type": "string",
                    "description": "Fingerprint of the Identity Provider's X.509 certificate used for signature validation."
                  },
                  "IdPCertFingerprintTypeId": {
                    "type": "integer",
                    "description": "Algorithm type identifier for the certificate fingerprint (e.g., SHA-1, SHA-256). Allowed values: 1 = SHA1 | 2 = SHA256",
                    "format": "int32"
                  },
                  "EntityID": {
                    "type": "string",
                    "description": "Service Provider entity identifier (audience URI)."
                  },
                  "StatusId": {
                    "type": "integer",
                    "description": "Status identifier for the SAML setting (e.g., active, inactive). Allowed values: 0 = Inactive | 1 = Active",
                    "format": "int32"
                  },
                  "Domain": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Email domains associated with this SAML configuration for domain-based routing."
                  },
                  "IdPEntityID": {
                    "type": "string",
                    "description": "Identity Provider entity identifier used to validate SAML assertions."
                  },
                  "File": {
                    "type": "string",
                    "description": "SAML metadata XML file uploaded for automatic IdP configuration.",
                    "format": "binary"
                  },
                  "IsDefaultRole": {
                    "type": "boolean",
                    "description": "Whether users authenticated via this SAML configuration receive a default role."
                  },
                  "DefaultRoleResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the default role assigned to SAML-authenticated users."
                  },
                  "IsWhiteLabelingAssertion": {
                    "type": "boolean",
                    "description": "Whether SAML assertion includes white-labeling context for branded login experience."
                  }
                }
              },
              "example": {
                "Name": "Azure AD SSO",
                "IdPSSOTargetUrl": "https://login.microsoftonline.com/tenant-id/saml2",
                "IdPCertFingerprint": "A1:B2:C3:D4:E5:F6:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB",
                "IdPCertFingerprintTypeId": 1,
                "EntityID": "https://keepnet.example.com/saml/metadata",
                "StatusId": 1,
                "Domain": [
                  "example.com"
                ],
                "IdPEntityID": "https://sts.windows.net/tenant-id/",
                "IsDefaultRole": true,
                "DefaultRoleResourceId": "Rl4Kp8mR7xLv",
                "IsWhiteLabelingAssertion": false
              },
              "encoding": {
                "Name": {
                  "style": "form"
                },
                "IdPSSOTargetUrl": {
                  "style": "form"
                },
                "IdPCertFingerprint": {
                  "style": "form"
                },
                "IdPCertFingerprintTypeId": {
                  "style": "form"
                },
                "EntityID": {
                  "style": "form"
                },
                "StatusId": {
                  "style": "form"
                },
                "Domain": {
                  "style": "form"
                },
                "IdPEntityID": {
                  "style": "form"
                },
                "File": {
                  "style": "form"
                },
                "IsDefaultRole": {
                  "style": "form"
                },
                "DefaultRoleResourceId": {
                  "style": "form"
                },
                "IsWhiteLabelingAssertion": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/saml-settings/default": {
      "get": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Retrieves the default SAML Service Provider (SP) settings including entity ID,\r\nACS URL, and metadata endpoint required for IdP configuration.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SAMLSetting.Dto.DefaultSamlSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/saml-settings/{resourceId}": {
      "get": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Retrieves the full configuration of an existing SAML identity provider setting.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Unique identifier of the SAML setting to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SAMLSetting.Dto.SamlSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Updates an existing SAML identity provider configuration with new metadata,\r\ncertificate, or attribute mapping values.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Unique identifier of the SAML setting to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "Domain",
                  "IdPEntityID",
                  "IdPSSOTargetUrl",
                  "Name",
                  "StatusId"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Display name for the SAML SSO configuration."
                  },
                  "IdPSSOTargetUrl": {
                    "type": "string",
                    "description": "Identity Provider SSO target URL where authentication requests are sent."
                  },
                  "IdPCertFingerprint": {
                    "type": "string",
                    "description": "Fingerprint of the Identity Provider's X.509 certificate used for signature validation."
                  },
                  "IdPCertFingerprintTypeId": {
                    "type": "integer",
                    "description": "Algorithm type identifier for the certificate fingerprint (e.g., SHA-1, SHA-256). Allowed values: 1 = SHA1 | 2 = SHA256",
                    "format": "int32"
                  },
                  "StatusId": {
                    "type": "integer",
                    "description": "Status identifier for the SAML setting (e.g., active, inactive). Allowed values: 0 = Inactive | 1 = Active",
                    "format": "int32"
                  },
                  "Domain": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Email domains associated with this SAML configuration for domain-based routing."
                  },
                  "IdPEntityID": {
                    "type": "string",
                    "description": "Identity Provider entity identifier used to validate SAML assertions."
                  },
                  "File": {
                    "type": "string",
                    "description": "Optional updated SAML metadata XML file for automatic IdP reconfiguration.",
                    "format": "binary"
                  },
                  "IsDefaultRole": {
                    "type": "boolean",
                    "description": "Whether users authenticated via this SAML configuration receive a default role."
                  },
                  "DefaultRoleResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the default role assigned to SAML-authenticated users."
                  },
                  "IsWhiteLabelingAssertion": {
                    "type": "boolean",
                    "description": "Whether SAML assertion includes white-labeling context for branded login experience."
                  }
                }
              },
              "example": {
                "Name": "Azure AD SSO",
                "IdPSSOTargetUrl": "https://login.microsoftonline.com/tenant-id/saml2",
                "IdPCertFingerprint": "A1:B2:C3:D4:E5:F6:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB",
                "IdPCertFingerprintTypeId": 1,
                "StatusId": 1,
                "Domain": [
                  "example.com"
                ],
                "IdPEntityID": "https://sts.windows.net/tenant-id/",
                "IsDefaultRole": true,
                "DefaultRoleResourceId": "Rl4Kp8mR7xLv",
                "IsWhiteLabelingAssertion": false
              },
              "encoding": {
                "Name": {
                  "style": "form"
                },
                "IdPSSOTargetUrl": {
                  "style": "form"
                },
                "IdPCertFingerprint": {
                  "style": "form"
                },
                "IdPCertFingerprintTypeId": {
                  "style": "form"
                },
                "StatusId": {
                  "style": "form"
                },
                "Domain": {
                  "style": "form"
                },
                "IdPEntityID": {
                  "style": "form"
                },
                "File": {
                  "style": "form"
                },
                "IsDefaultRole": {
                  "style": "form"
                },
                "DefaultRoleResourceId": {
                  "style": "form"
                },
                "IsWhiteLabelingAssertion": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Deletes a SAML identity provider configuration. Users who relied on this IdP\r\nfor SSO will no longer be able to authenticate via SAML until a new setting is created.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Unique identifier of the SAML setting to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/saml-settings/search": {
      "post": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Searches and returns a paginated list of SAML identity provider configurations\r\nfor the current company, with optional filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination, sorting, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SAMLSetting.SearchSamlSettingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SAMLSetting.SearchSamlSettingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SAMLSetting.SearchSamlSettingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SAMLSetting.SearchSamlSettingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SAMLSetting.Dto.SearchSamlSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/saml-settings/search/export": {
      "post": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Exports the list of SAML settings to a downloadable file (CSV, Excel, or PDF).",
        "requestBody": {
          "description": "Export configuration including format, pagination, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/companies/saml-settings/parse-metadata-file": {
      "post": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Parses a SAML IdP metadata XML file and extracts configuration values\r\nsuch as entity ID, SSO URL, and signing certificate for auto-populating the SAML settings form.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "File"
                ],
                "type": "object",
                "properties": {
                  "File": {
                    "type": "string",
                    "description": "SAML metadata XML file to parse.",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "File": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SAMLSetting.Dto.ParseMetadataDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/saml-settings/download-metadata": {
      "get": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Downloads the SAML Service Provider metadata XML file for a given entity ID.\r\nThis endpoint is publicly accessible so that Identity Providers can fetch the SP metadata.",
        "parameters": [
          {
            "name": "entityID",
            "in": "query",
            "description": "The SP entity ID whose metadata to download.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/securitygrowthauth/login": {
      "post": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Authenticates a target user (end-user) for the Security Growth portal.\r\nValidates the user's email against the target user database and checks for SAML SSO availability.\r\nIf the user's domain has a configured SAML IdP, returns a redirect URL for SSO authentication.",
        "requestBody": {
          "description": "Login request containing the target user's email address.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthLoginRequest"
              },
              "example": {"username":"admin@example.com"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthLoginRequest"
              },
              "example": {"username":"admin@example.com"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthLoginRequest"
              },
              "example": {"username":"admin@example.com"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthLoginRequest"
              },
              "example": {"username":"admin@example.com"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthLoginResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/securitygrowthauth/send-magic-link": {
      "post": {
        "tags": [
          "Authentication & SSO"
        ],
        "summary": "Sends a passwordless magic link email to the target user for Security Growth portal authentication.\r\nGenerates a one-time token, creates an email template with the magic link, and triggers the email event.\r\nIn non-production environments, the magic link URL is included in the response for testing.",
        "requestBody": {
          "description": "Request containing the target user's email address.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthMagicLinkSendRequest"
              },
              "example": {"email":"user@example.com"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthMagicLinkSendRequest"
              },
              "example": {"email":"user@example.com"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthMagicLinkSendRequest"
              },
              "example": {"email":"user@example.com"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthMagicLinkSendRequest"
              },
              "example": {"email":"user@example.com"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthMagicLinkSendResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/certificates/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches for certificate templates using the provided criteria, scoped to the current company and its parent hierarchy.",
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateSearchViewDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/certificates/{resourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the full details of a certificate template by its resource ID, including HTML template, styling, and availability settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the certificate template to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Updates an existing certificate template's HTML design, name, and availability settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the certificate template to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated certificate template payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailRestDTO"
              },
              "example": {"availableForRequests":[],"name":"Security Awareness Completion Certificate","description":"Awarded upon successful completion of the security awareness training program.","template":"<html><body><h1>Certificate of Completion</h1><p>{{user_name}} has completed {{training_name}}</p></body></html>"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailRestDTO"
              },
              "example": {"availableForRequests":[],"name":"Security Awareness Completion Certificate","description":"Awarded upon successful completion of the security awareness training program.","template":"<html><body><h1>Certificate of Completion</h1><p>{{user_name}} has completed {{training_name}}</p></body></html>"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailRestDTO"
              },
              "example": {"availableForRequests":[],"name":"Security Awareness Completion Certificate","description":"Awarded upon successful completion of the security awareness training program.","template":"<html><body><h1>Certificate of Completion</h1><p>{{user_name}} has completed {{training_name}}</p></body></html>"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailRestDTO"
              },
              "example": {"availableForRequests":[],"name":"Security Awareness Completion Certificate","description":"Awarded upon successful completion of the security awareness training program.","template":"<html><body><h1>Certificate of Completion</h1><p>{{user_name}} has completed {{training_name}}</p></body></html>"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Permanently deletes a certificate template by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the certificate template to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/certificates/search/export": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Exports the list of certificate templates matching the search criteria to a downloadable file (e.g., CSV, Excel).",
        "requestBody": {
          "description": "Export criteria including filters, sorting, and the desired export format.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/certificates": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Creates a new certificate template with custom HTML design and availability settings for use in training enrollments.",
        "requestBody": {
          "description": "The certificate template payload including HTML template, name, and availability settings.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailRestDTO"
              },
              "example": {"availableForRequests":[],"name":"Security Awareness Completion Certificate","description":"Awarded upon successful completion of the security awareness training program.","template":"<html><body><h1>Certificate of Completion</h1><p>{{user_name}} has completed {{training_name}}</p></body></html>"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailRestDTO"
              },
              "example": {"availableForRequests":[],"name":"Security Awareness Completion Certificate","description":"Awarded upon successful completion of the security awareness training program.","template":"<html><body><h1>Certificate of Completion</h1><p>{{user_name}} has completed {{training_name}}</p></body></html>"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailRestDTO"
              },
              "example": {"availableForRequests":[],"name":"Security Awareness Completion Certificate","description":"Awarded upon successful completion of the security awareness training program.","template":"<html><body><h1>Certificate of Completion</h1><p>{{user_name}} has completed {{training_name}}</p></body></html>"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailRestDTO"
              },
              "example": {"availableForRequests":[],"name":"Security Awareness Completion Certificate","description":"Awarded upon successful completion of the security awareness training program.","template":"<html><body><h1>Certificate of Completion</h1><p>{{user_name}} has completed {{training_name}}</p></body></html>"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/certificates/{resourceId}/default": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Sets the specified certificate template as the default for the current company, used when no specific certificate is assigned to an enrollment.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the certificate template to set as default.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/certificates/default-template": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the system default certificate template used when no custom certificate is assigned to an enrollment.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/certificates/test-email": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Sends a test certificate email using the specified template to a given email address, allowing administrators to preview the certificate before using it in enrollments.",
        "requestBody": {
          "description": "The test email request including the target email address and certificate template configuration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateTestEmailRequest"
              },
              "example": {"template":"<html><body><h1>Certificate</h1><p>{{user_name}} has completed {{training_name}}</p></body></html>","email":"test@example.com"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateTestEmailRequest"
              },
              "example": {"template":"<html><body><h1>Certificate</h1><p>{{user_name}} has completed {{training_name}}</p></body></html>","email":"test@example.com"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateTestEmailRequest"
              },
              "example": {"template":"<html><body><h1>Certificate</h1><p>{{user_name}} has completed {{training_name}}</p></body></html>","email":"test@example.com"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateTestEmailRequest"
              },
              "example": {"template":"<html><body><h1>Certificate</h1><p>{{user_name}} has completed {{training_name}}</p></body></html>","email":"test@example.com"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateTestEmailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Creates a new threat intelligence sharing community with the specified privacy level (1=Public, 2=Private, 3=Hidden).",
        "requestBody": {
          "description": "The community creation payload including name, description, and privacy status.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CreateCommunityRequest"
              },
              "example": {"name":"Financial Services Security Community","description":"A community for sharing phishing threat intelligence and best practices in the financial services industry.","industryResourceId":"In7Kp3mR5xLn","privacyStatusId":1,"isTermsAndConditionsAccepted":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CreateCommunityRequest"
              },
              "example": {"name":"Financial Services Security Community","description":"A community for sharing phishing threat intelligence and best practices in the financial services industry.","industryResourceId":"In7Kp3mR5xLn","privacyStatusId":1,"isTermsAndConditionsAccepted":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CreateCommunityRequest"
              },
              "example": {"name":"Financial Services Security Community","description":"A community for sharing phishing threat intelligence and best practices in the financial services industry.","industryResourceId":"In7Kp3mR5xLn","privacyStatusId":1,"isTermsAndConditionsAccepted":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CreateCommunityRequest"
              },
              "example": {"name":"Financial Services Security Community","description":"A community for sharing phishing threat intelligence and best practices in the financial services industry.","industryResourceId":"In7Kp3mR5xLn","privacyStatusId":1,"isTermsAndConditionsAccepted":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/{resourceId}": {
      "put": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Updates an existing community's name, description, and privacy level (1=Public, 2=Private, 3=Hidden).",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated community payload including name, description, and privacy status.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.UpdateCommunityRequest"
              },
              "example": {"name":"Financial Services Security Community","description":"A community for sharing phishing threat intelligence, incident response playbooks, and security awareness best practices.","industryResourceId":"In7Kp3mR5xLn","privacyStatusId":2}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.UpdateCommunityRequest"
              },
              "example": {"name":"Financial Services Security Community","description":"A community for sharing phishing threat intelligence, incident response playbooks, and security awareness best practices.","industryResourceId":"In7Kp3mR5xLn","privacyStatusId":2}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.UpdateCommunityRequest"
              },
              "example": {"name":"Financial Services Security Community","description":"A community for sharing phishing threat intelligence, incident response playbooks, and security awareness best practices.","industryResourceId":"In7Kp3mR5xLn","privacyStatusId":2}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.UpdateCommunityRequest"
              },
              "example": {"name":"Financial Services Security Community","description":"A community for sharing phishing threat intelligence, incident response playbooks, and security awareness best practices.","industryResourceId":"In7Kp3mR5xLn","privacyStatusId":2}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Permanently deletes a community along with all its associated posts/incidents and membership records.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the full details of an existing community by its resource ID, including membership status and privacy settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Community.Dto.CommunityDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/search/all": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and retrieves a paginated list of all communities, including public, private, and hidden ones visible to the current user.",
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunitySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CommunityName","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunitySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CommunityName","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunitySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CommunityName","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunitySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CommunityName","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/search/my": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and retrieves a paginated list of communities that the current user's company owns or is a member of.",
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunitySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CommunityName","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunitySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CommunityName","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunitySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CommunityName","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunitySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CommunityName","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/{resourceId}/join": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Sends a request to join a community. Public communities grant immediate membership; private communities require approval from the owner company.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community to join.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/{resourceId}/membershiprequest": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and retrieves a paginated list of pending membership requests for a specific community.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunityMembershipSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunityMembershipSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunityMembershipSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunityMembershipSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityMembershipResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/{resourceId}/member": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and retrieves a paginated list of current members of a specific community.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunityMembershipSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunityMembershipSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunityMembershipSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.CommunityMembershipSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityMembershipResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/membershiprequest/{resourceId}/accept": {
      "put": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Accepts a pending membership join request, granting the requesting company access to the community.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the membership request to accept.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/membershiprequest/{resourceId}/refuse": {
      "put": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Refuses a pending membership join request, denying the requesting company access to the community.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the membership request to refuse.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/membershiprequest/{resourceId}/cancel": {
      "put": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Cancels a previously submitted membership join request to a community.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the membership request to cancel.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/{resourceId}/invite": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Invites companies by email addresses to join a community. A maximum of 5 email addresses can be provided per request.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community to invite users to.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The invitation request containing an array of email addresses to invite.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.InviteToCommunityRequest"
              },
              "example": {"emailArray":["john.doe@example.com","jane.smith@example.com"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.InviteToCommunityRequest"
              },
              "example": {"emailArray":["john.doe@example.com","jane.smith@example.com"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.InviteToCommunityRequest"
              },
              "example": {"emailArray":["john.doe@example.com","jane.smith@example.com"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.InviteToCommunityRequest"
              },
              "example": {"emailArray":["john.doe@example.com","jane.smith@example.com"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Community.Dto.InviteToCommunityDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/my-invitations": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves all pending community invitations received by the current user's company.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Community.Dto.CommunityInvitationDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/{resourceId}/membershiprequest-count": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the count of active (pending) membership requests for a specific community.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Community.Dto.MembershipRequestCountDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/my-invitations-count": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the total count of pending community invitations received by the current user's company.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Community.Dto.InvitationCountDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/suggested": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves a list of suggested communities that the current user's company may be interested in joining.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Community.Dto.SuggestedCommunityDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/{resourceId}/appoint-owner": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Appoints a member company as co-owner of the specified community, granting them administrative privileges.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The appointment request including the company to be made owner.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.AppointCommunityOwnerRequest"
              },
              "example": {"appointedCompanyResourceId":"65BVv1136Vnp"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.AppointCommunityOwnerRequest"
              },
              "example": {"appointedCompanyResourceId":"65BVv1136Vnp"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.AppointCommunityOwnerRequest"
              },
              "example": {"appointedCompanyResourceId":"65BVv1136Vnp"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.AppointCommunityOwnerRequest"
              },
              "example": {"appointedCompanyResourceId":"65BVv1136Vnp"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/{resourceId}/remove-member": {
      "delete": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Removes a member company from the specified community, revoking their access to community posts and data.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The removal request identifying the company to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.RemoveCommunityMemberRequest"
              },
              "example": {"removedCompanyResourceId":"65BVv1136Vnp"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.RemoveCommunityMemberRequest"
              },
              "example": {"removedCompanyResourceId":"65BVv1136Vnp"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.RemoveCommunityMemberRequest"
              },
              "example": {"removedCompanyResourceId":"65BVv1136Vnp"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Community.RemoveCommunityMemberRequest"
              },
              "example": {"removedCompanyResourceId":"65BVv1136Vnp"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/{resourceId}/leave": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Removes the current user's company from a community. If the company is the community owner, another owner must be appointed before leaving.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community to leave.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/invitations/{resourceId}/accept": {
      "put": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Accepts a pending community invitation, granting the current user's company membership in the community.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the invitation to accept.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/communities/invitations/{resourceId}/decline": {
      "put": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Declines a pending community invitation, rejecting the membership offer for the current user's company.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the invitation to decline.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/{resourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the full details of a community post by its resource ID, including threat indicators and analysis results.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community post to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.GetCommunityPostDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Updates an existing community post's content, threat indicators, or metadata.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community post to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated post payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostRequest"
              },
              "example": {"communityPostEmail":{"resourceId":"65BVv1136Vnp","editableBody":"<html><body>Please review the attached invoice.</body></html>","visibleBody":"<html><body>Please review the attached invoice.</body></html>","isFromHidden":false,"isFromFlagged":true,"isSubjectHidden":false,"isSubjectFlagged":true,"isToHidden":true,"isToFlagged":false,"isCcHidden":false,"isCcFlagged":false,"isBccHidden":false,"isBccFlagged":false,"urls":[{"name":"View Invoice","url":"https://fake-vendor.com/invoice","isHidden":false,"isFlagged":true}],"attachments":[{"resourceId":"Qw4Rt6yU8iOp","isHidden":false,"isFlagged":true}],"emailTexts":[{"text":"Please review the attached invoice.","isHidden":false,"isFlagged":false}]},"title":"Updated: Suspicious Invoice Email","description":"Updated description with additional IOC details from threat analysis.","categoryResourceIdArray":["Kp3mR5xLn7Wq"],"discoveryAndDetection":"Reported via Keepnet Phishing Reporter add-in","affectArea":["Finance","Procurement"],"scope":"Organization-wide","isAnonymous":false,"securityLabelResourceIdArray":["Xn8Jp2qR4mLv"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostRequest"
              },
              "example": {"communityPostEmail":{"resourceId":"65BVv1136Vnp","editableBody":"<html><body>Please review the attached invoice.</body></html>","visibleBody":"<html><body>Please review the attached invoice.</body></html>","isFromHidden":false,"isFromFlagged":true,"isSubjectHidden":false,"isSubjectFlagged":true,"isToHidden":true,"isToFlagged":false,"isCcHidden":false,"isCcFlagged":false,"isBccHidden":false,"isBccFlagged":false,"urls":[{"name":"View Invoice","url":"https://fake-vendor.com/invoice","isHidden":false,"isFlagged":true}],"attachments":[{"resourceId":"Qw4Rt6yU8iOp","isHidden":false,"isFlagged":true}],"emailTexts":[{"text":"Please review the attached invoice.","isHidden":false,"isFlagged":false}]},"title":"Updated: Suspicious Invoice Email","description":"Updated description with additional IOC details from threat analysis.","categoryResourceIdArray":["Kp3mR5xLn7Wq"],"discoveryAndDetection":"Reported via Keepnet Phishing Reporter add-in","affectArea":["Finance","Procurement"],"scope":"Organization-wide","isAnonymous":false,"securityLabelResourceIdArray":["Xn8Jp2qR4mLv"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostRequest"
              },
              "example": {"communityPostEmail":{"resourceId":"65BVv1136Vnp","editableBody":"<html><body>Please review the attached invoice.</body></html>","visibleBody":"<html><body>Please review the attached invoice.</body></html>","isFromHidden":false,"isFromFlagged":true,"isSubjectHidden":false,"isSubjectFlagged":true,"isToHidden":true,"isToFlagged":false,"isCcHidden":false,"isCcFlagged":false,"isBccHidden":false,"isBccFlagged":false,"urls":[{"name":"View Invoice","url":"https://fake-vendor.com/invoice","isHidden":false,"isFlagged":true}],"attachments":[{"resourceId":"Qw4Rt6yU8iOp","isHidden":false,"isFlagged":true}],"emailTexts":[{"text":"Please review the attached invoice.","isHidden":false,"isFlagged":false}]},"title":"Updated: Suspicious Invoice Email","description":"Updated description with additional IOC details from threat analysis.","categoryResourceIdArray":["Kp3mR5xLn7Wq"],"discoveryAndDetection":"Reported via Keepnet Phishing Reporter add-in","affectArea":["Finance","Procurement"],"scope":"Organization-wide","isAnonymous":false,"securityLabelResourceIdArray":["Xn8Jp2qR4mLv"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostRequest"
              },
              "example": {"communityPostEmail":{"resourceId":"65BVv1136Vnp","editableBody":"<html><body>Please review the attached invoice.</body></html>","visibleBody":"<html><body>Please review the attached invoice.</body></html>","isFromHidden":false,"isFromFlagged":true,"isSubjectHidden":false,"isSubjectFlagged":true,"isToHidden":true,"isToFlagged":false,"isCcHidden":false,"isCcFlagged":false,"isBccHidden":false,"isBccFlagged":false,"urls":[{"name":"View Invoice","url":"https://fake-vendor.com/invoice","isHidden":false,"isFlagged":true}],"attachments":[{"resourceId":"Qw4Rt6yU8iOp","isHidden":false,"isFlagged":true}],"emailTexts":[{"text":"Please review the attached invoice.","isHidden":false,"isFlagged":false}]},"title":"Updated: Suspicious Invoice Email","description":"Updated description with additional IOC details from threat analysis.","categoryResourceIdArray":["Kp3mR5xLn7Wq"],"discoveryAndDetection":"Reported via Keepnet Phishing Reporter add-in","affectArea":["Finance","Procurement"],"scope":"Organization-wide","isAnonymous":false,"securityLabelResourceIdArray":["Xn8Jp2qR4mLv"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Permanently deletes a community post and all its associated comments and likes.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community post to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/{resourceId}/edit": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the full details of a community post in edit mode, returning editable fields and raw content for modification.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community post to edit.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.GetCommunityPostDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/{resourceId}/preview": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves a read-only preview of a community post, suitable for displaying to users before publishing or sharing.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community post to preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.GetCommunityPostDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Creates a new threat incident post in a community, sharing email-based threat intelligence with community members.",
        "requestBody": {
          "description": "The post creation payload including community ID, threat details, and email content.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.CreateCommunityPostRequest"
              },
              "example": {"communityResourceId":"65BVv1136Vnp","emailPreview":{"initialBody":"<html><body>Please review the attached invoice.</body></html>","editableBody":"<html><body>Please review the attached invoice.</body></html>","visibleBody":"<html><body>Please review the attached invoice.</body></html>","from":"accounts@fake-vendor.com","isFromHidden":false,"isFromFlagged":true,"subject":"Urgent: Invoice #INV-2026-0042","isSubjectHidden":false,"isSubjectFlagged":true,"to":["finance@example.com"],"isToHidden":true,"isToFlagged":false,"cc":["manager@example.com"],"isCcHidden":false,"isCcFlagged":false,"bcc":[],"isBccHidden":false,"isBccFlagged":false,"sentTime":"2026-03-10 09:00:00","urls":[{"url":"https://fake-vendor.com/invoice","isHidden":false,"isFlagged":true,"name":"View Invoice"}],"attachments":[{"resourceId":"Qw4Rt6yU8iOp","name":"invoice.pdf","sha512":"abc123def456","md5":"d41d8cd98f00b204e9800998ecf8427e","contentType":"application/pdf","isHidden":false,"isFlagged":true}],"emailTexts":[{"text":"Please review the attached invoice.","isHidden":false,"isFlagged":false}]},"title":"Suspicious Invoice Email","description":"A phishing email impersonating a vendor was reported by multiple employees requesting wire transfer.","categoryResourceIdArray":["Kp3mR5xLn7Wq"],"discoveryAndDetection":"Reported via Keepnet Phishing Reporter add-in","affectArea":["Finance","Procurement"],"scope":"Organization-wide","isAnonymous":false,"isTermsAndConditionsAccepted":true,"securityLabelResourceIdArray":["Xn8Jp2qR4mLv"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.CreateCommunityPostRequest"
              },
              "example": {"communityResourceId":"65BVv1136Vnp","emailPreview":{"initialBody":"<html><body>Please review the attached invoice.</body></html>","editableBody":"<html><body>Please review the attached invoice.</body></html>","visibleBody":"<html><body>Please review the attached invoice.</body></html>","from":"accounts@fake-vendor.com","isFromHidden":false,"isFromFlagged":true,"subject":"Urgent: Invoice #INV-2026-0042","isSubjectHidden":false,"isSubjectFlagged":true,"to":["finance@example.com"],"isToHidden":true,"isToFlagged":false,"cc":["manager@example.com"],"isCcHidden":false,"isCcFlagged":false,"bcc":[],"isBccHidden":false,"isBccFlagged":false,"sentTime":"2026-03-10 09:00:00","urls":[{"url":"https://fake-vendor.com/invoice","isHidden":false,"isFlagged":true,"name":"View Invoice"}],"attachments":[{"resourceId":"Qw4Rt6yU8iOp","name":"invoice.pdf","sha512":"abc123def456","md5":"d41d8cd98f00b204e9800998ecf8427e","contentType":"application/pdf","isHidden":false,"isFlagged":true}],"emailTexts":[{"text":"Please review the attached invoice.","isHidden":false,"isFlagged":false}]},"title":"Suspicious Invoice Email","description":"A phishing email impersonating a vendor was reported by multiple employees requesting wire transfer.","categoryResourceIdArray":["Kp3mR5xLn7Wq"],"discoveryAndDetection":"Reported via Keepnet Phishing Reporter add-in","affectArea":["Finance","Procurement"],"scope":"Organization-wide","isAnonymous":false,"isTermsAndConditionsAccepted":true,"securityLabelResourceIdArray":["Xn8Jp2qR4mLv"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.CreateCommunityPostRequest"
              },
              "example": {"communityResourceId":"65BVv1136Vnp","emailPreview":{"initialBody":"<html><body>Please review the attached invoice.</body></html>","editableBody":"<html><body>Please review the attached invoice.</body></html>","visibleBody":"<html><body>Please review the attached invoice.</body></html>","from":"accounts@fake-vendor.com","isFromHidden":false,"isFromFlagged":true,"subject":"Urgent: Invoice #INV-2026-0042","isSubjectHidden":false,"isSubjectFlagged":true,"to":["finance@example.com"],"isToHidden":true,"isToFlagged":false,"cc":["manager@example.com"],"isCcHidden":false,"isCcFlagged":false,"bcc":[],"isBccHidden":false,"isBccFlagged":false,"sentTime":"2026-03-10 09:00:00","urls":[{"url":"https://fake-vendor.com/invoice","isHidden":false,"isFlagged":true,"name":"View Invoice"}],"attachments":[{"resourceId":"Qw4Rt6yU8iOp","name":"invoice.pdf","sha512":"abc123def456","md5":"d41d8cd98f00b204e9800998ecf8427e","contentType":"application/pdf","isHidden":false,"isFlagged":true}],"emailTexts":[{"text":"Please review the attached invoice.","isHidden":false,"isFlagged":false}]},"title":"Suspicious Invoice Email","description":"A phishing email impersonating a vendor was reported by multiple employees requesting wire transfer.","categoryResourceIdArray":["Kp3mR5xLn7Wq"],"discoveryAndDetection":"Reported via Keepnet Phishing Reporter add-in","affectArea":["Finance","Procurement"],"scope":"Organization-wide","isAnonymous":false,"isTermsAndConditionsAccepted":true,"securityLabelResourceIdArray":["Xn8Jp2qR4mLv"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.CreateCommunityPostRequest"
              },
              "example": {"communityResourceId":"65BVv1136Vnp","emailPreview":{"initialBody":"<html><body>Please review the attached invoice.</body></html>","editableBody":"<html><body>Please review the attached invoice.</body></html>","visibleBody":"<html><body>Please review the attached invoice.</body></html>","from":"accounts@fake-vendor.com","isFromHidden":false,"isFromFlagged":true,"subject":"Urgent: Invoice #INV-2026-0042","isSubjectHidden":false,"isSubjectFlagged":true,"to":["finance@example.com"],"isToHidden":true,"isToFlagged":false,"cc":["manager@example.com"],"isCcHidden":false,"isCcFlagged":false,"bcc":[],"isBccHidden":false,"isBccFlagged":false,"sentTime":"2026-03-10 09:00:00","urls":[{"url":"https://fake-vendor.com/invoice","isHidden":false,"isFlagged":true,"name":"View Invoice"}],"attachments":[{"resourceId":"Qw4Rt6yU8iOp","name":"invoice.pdf","sha512":"abc123def456","md5":"d41d8cd98f00b204e9800998ecf8427e","contentType":"application/pdf","isHidden":false,"isFlagged":true}],"emailTexts":[{"text":"Please review the attached invoice.","isHidden":false,"isFlagged":false}]},"title":"Suspicious Invoice Email","description":"A phishing email impersonating a vendor was reported by multiple employees requesting wire transfer.","categoryResourceIdArray":["Kp3mR5xLn7Wq"],"discoveryAndDetection":"Reported via Keepnet Phishing Reporter add-in","affectArea":["Finance","Procurement"],"scope":"Organization-wide","isAnonymous":false,"isTermsAndConditionsAccepted":true,"securityLabelResourceIdArray":["Xn8Jp2qR4mLv"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/notified-email-preview/{resourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves a preview of a previously notified/reported email, including its parsed headers, body, and metadata.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the notified email to preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.CreateCommunityPostEmailDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/message-file-preview": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Parses and previews an uploaded email message file (.eml/.msg), extracting headers, body, and attachment information.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "File": {
                    "type": "string",
                    "description": "Uploaded message file (e.g., .eml or .msg) to be parsed for preview.",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "File": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.CreateCommunityPostEmailDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and returns a paginated list of community posts across all communities the user's company is a member of or owns.",
        "requestBody": {
          "description": "Search criteria including filters, pagination, sorting, and optional company filter.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SearchCommunityPostRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"PostedTime","ascending":false,"postedCompanyResourceId":"65BVv1136Vnp"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SearchCommunityPostRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"PostedTime","ascending":false,"postedCompanyResourceId":"65BVv1136Vnp"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SearchCommunityPostRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"PostedTime","ascending":false,"postedCompanyResourceId":"65BVv1136Vnp"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SearchCommunityPostRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"PostedTime","ascending":false,"postedCompanyResourceId":"65BVv1136Vnp"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.SearchCommunityPostDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/search/{communityResourceId}": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and returns a paginated list of posts within a specific community that the user's company has access to.",
        "parameters": [
          {
            "name": "communityResourceId",
            "in": "path",
            "description": "The unique resource identifier of the community to search posts in.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, sorting, and optional company filter.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SearchCommunityPostRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"PostedTime","ascending":false,"postedCompanyResourceId":"65BVv1136Vnp"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SearchCommunityPostRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"PostedTime","ascending":false,"postedCompanyResourceId":"65BVv1136Vnp"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SearchCommunityPostRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"PostedTime","ascending":false,"postedCompanyResourceId":"65BVv1136Vnp"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SearchCommunityPostRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"PostedTime","ascending":false,"postedCompanyResourceId":"65BVv1136Vnp"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.SearchCommunityPostDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/{resourceId}/like": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Toggles a like on a community post. If the post is already liked by the current user, the like is removed; otherwise, a like is added.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community post to like/unlike.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/{communityPostResourceId}/comments": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Creates a new comment on a community post that the user's company has access to.",
        "parameters": [
          {
            "name": "communityPostResourceId",
            "in": "path",
            "description": "The unique resource identifier of the community post to comment on.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The comment creation payload including the comment text.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.CreateCommunityPostCommentRequest"
              },
              "example": {"comment":"We observed a similar campaign targeting our organization last week."}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.CreateCommunityPostCommentRequest"
              },
              "example": {"comment":"We observed a similar campaign targeting our organization last week."}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.CreateCommunityPostCommentRequest"
              },
              "example": {"comment":"We observed a similar campaign targeting our organization last week."}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.CreateCommunityPostCommentRequest"
              },
              "example": {"comment":"We observed a similar campaign targeting our organization last week."}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves all comments on a specific community post, ordered by creation date.",
        "parameters": [
          {
            "name": "communityPostResourceId",
            "in": "path",
            "description": "The unique resource identifier of the community post.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.CommunityPostCommentDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/comments/{resourceId}": {
      "put": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Updates an existing comment's text. Only the comment author or the community owner company's users can update a comment.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the comment to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated comment payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostCommentRequest"
              },
              "example": {"comment":"Updated: We confirmed this is part of the BEC campaign tracked as TA-2026-0315."}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostCommentRequest"
              },
              "example": {"comment":"Updated: We confirmed this is part of the BEC campaign tracked as TA-2026-0315."}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostCommentRequest"
              },
              "example": {"comment":"Updated: We confirmed this is part of the BEC campaign tracked as TA-2026-0315."}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostCommentRequest"
              },
              "example": {"comment":"Updated: We confirmed this is part of the BEC campaign tracked as TA-2026-0315."}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Deletes a comment from a community post. Only the comment author or the community owner company's users can delete a comment.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the comment to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/my-last-posts": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the current user's last 10 community posts, useful for displaying recent activity on the user's profile.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.GetUsersLastPostDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/top-posts": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the top 10 most popular community posts from communities the user's company is a member of or owns, ranked by engagement.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.GetTopPostsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/{resourceId}/share": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Shares a community post via email with specified recipients. A maximum of 5 email addresses can be provided per request.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the community post to share.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The share request containing an array of recipient email addresses.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SharePostRequest"
              },
              "example": {"emailArray":["john.doe@example.com","jane.smith@example.com"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SharePostRequest"
              },
              "example": {"emailArray":["john.doe@example.com","jane.smith@example.com"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SharePostRequest"
              },
              "example": {"emailArray":["john.doe@example.com","jane.smith@example.com"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SharePostRequest"
              },
              "example": {"emailArray":["john.doe@example.com","jane.smith@example.com"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/community-posts/parse-email-url": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Parses an HTML email body and extracts all URLs contained within it, useful for threat analysis and indicator extraction.",
        "requestBody": {
          "description": "The parse request containing the HTML body to extract URLs from.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.ParseEmailUrlRequest"
              },
              "example": {"htmlBody":"<html><body><a href=\"https://example.com/login\">Click here</a></body></html>"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.ParseEmailUrlRequest"
              },
              "example": {"htmlBody":"<html><body><a href=\"https://example.com/login\">Click here</a></body></html>"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.ParseEmailUrlRequest"
              },
              "example": {"htmlBody":"<html><body><a href=\"https://example.com/login\">Click here</a></body></html>"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.ParseEmailUrlRequest"
              },
              "example": {"htmlBody":"<html><body><a href=\"https://example.com/login\">Click here</a></body></html>"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.EmailParser.EmlParser+Uri, KeepnetLabs.EmailParser, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/phone-number": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves available SMS provider phone numbers that can be used for sending enrollment SMS notifications to target users.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmsPhoneNumberDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Creates a new training enrollment, assigning trainings to target user groups with scheduling, reminder, and auto-enroll settings.",
        "requestBody": {
          "description": "The enrollment configuration including training ID, target groups, scheduling, and notification settings.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentStartDTO"
              },
              "example": {"companyId":0,"trainingId":"Tr5Kp2mR7xLv","name":"Security Awareness Q1 2026","targetGroupResourceIds":["Tg8Wp3nQ5vXm"],"languageIds":["0"],"awardCertificate":true,"certificateConfigSendType":"SendOnFirstAttempt","markedAsTest":false,"sendTeamsNotification":false,"sendTemplatesInPreferredLanguage":false,"distributionDelayEvery":0,"distributionDelayTimeTypeId":0,"sendingLimit":0,"isScormProxy":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentStartDTO"
              },
              "example": {"companyId":0,"trainingId":"Tr5Kp2mR7xLv","name":"Security Awareness Q1 2026","targetGroupResourceIds":["Tg8Wp3nQ5vXm"],"languageIds":["0"],"awardCertificate":true,"certificateConfigSendType":"SendOnFirstAttempt","markedAsTest":false,"sendTeamsNotification":false,"sendTemplatesInPreferredLanguage":false,"distributionDelayEvery":0,"distributionDelayTimeTypeId":0,"sendingLimit":0,"isScormProxy":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentStartDTO"
              },
              "example": {"companyId":0,"trainingId":"Tr5Kp2mR7xLv","name":"Security Awareness Q1 2026","targetGroupResourceIds":["Tg8Wp3nQ5vXm"],"languageIds":["0"],"awardCertificate":true,"certificateConfigSendType":"SendOnFirstAttempt","markedAsTest":false,"sendTeamsNotification":false,"sendTemplatesInPreferredLanguage":false,"distributionDelayEvery":0,"distributionDelayTimeTypeId":0,"sendingLimit":0,"isScormProxy":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentStartDTO"
              },
              "example": {"companyId":0,"trainingId":"Tr5Kp2mR7xLv","name":"Security Awareness Q1 2026","targetGroupResourceIds":["Tg8Wp3nQ5vXm"],"languageIds":["0"],"awardCertificate":true,"certificateConfigSendType":"SendOnFirstAttempt","markedAsTest":false,"sendTeamsNotification":false,"sendTemplatesInPreferredLanguage":false,"distributionDelayEvery":0,"distributionDelayTimeTypeId":0,"sendingLimit":0,"isScormProxy":false}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/scorm-proxy": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Creates a SCORM proxy enrollment and returns the SCORM package as a downloadable ZIP file for use in external LMS platforms.",
        "requestBody": {
          "description": "The SCORM proxy enrollment request including training ID, name, and optional language.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.CreateScormProxyServiceRequest"
              },
              "example": {"trainingId":"Tr5Kp2mR7xLv","languageId":"0","name":"SCORM Proxy Enrollment"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.CreateScormProxyServiceRequest"
              },
              "example": {"trainingId":"Tr5Kp2mR7xLv","languageId":"0","name":"SCORM Proxy Enrollment"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.CreateScormProxyServiceRequest"
              },
              "example": {"trainingId":"Tr5Kp2mR7xLv","languageId":"0","name":"SCORM Proxy Enrollment"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.CreateScormProxyServiceRequest"
              },
              "example": {"trainingId":"Tr5Kp2mR7xLv","languageId":"0","name":"SCORM Proxy Enrollment"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/downloadscormproxy/{enrollmentId}": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Downloads the SCORM proxy package for an existing enrollment as a ZIP file for use in external LMS platforms.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment to download the SCORM proxy for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches for active enrollments using the provided criteria and returns a paginated result list.",
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchEnrollmentRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"StartDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchEnrollmentRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"StartDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchEnrollmentRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"StartDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchEnrollmentRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"StartDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentSearchRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/{resourceId}": {
      "delete": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Archives an active enrollment by setting its status to Archived. Archived enrollments can later be restored or permanently deleted.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment to archive.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the full details of an enrollment by its resource ID, including scheduling, reminder, and auto-enroll configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetEnrollmentByIdResponse, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Updates an existing enrollment's configuration, including scheduling, reminder, and auto-enroll settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated enrollment configuration payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EditEnrollmentServiceRequest"
              },
              "example": {"name":"Updated Enrollment Name","markedAsTest":false,"distributionDays":30}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EditEnrollmentServiceRequest"
              },
              "example": {"name":"Updated Enrollment Name","markedAsTest":false,"distributionDays":30}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EditEnrollmentServiceRequest"
              },
              "example": {"name":"Updated Enrollment Name","markedAsTest":false,"distributionDays":30}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EditEnrollmentServiceRequest"
              },
              "example": {"name":"Updated Enrollment Name","markedAsTest":false,"distributionDays":30}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/archive/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches for archived enrollments using the provided criteria and returns a paginated result list.",
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchEnrollmentRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"StartDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchEnrollmentRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"StartDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchEnrollmentRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"StartDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchEnrollmentRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"StartDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentSearchRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/{enrollmentId}/certificates/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches for certificates issued within a specific enrollment, returning a paginated list of certificate records.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment to search certificates for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentCertificateSearchRequest"
              },
              "example": {"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true,"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentCertificateSearchRequest"
              },
              "example": {"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true,"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentCertificateSearchRequest"
              },
              "example": {"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true,"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentCertificateSearchRequest"
              },
              "example": {"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true,"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentCertificateSearchResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/resend-certificate": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Resends training completion certificates via email to the specified target users for their respective enrollments.",
        "requestBody": {
          "description": "A list of target user and enrollment pairs identifying which certificates to resend.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendCertificateRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendCertificateRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendCertificateRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendCertificateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendCertificateData, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendCertificateData, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendCertificateData, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/enrollments/archive/{resourceId}": {
      "delete": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Permanently deletes an enrollment that has been previously archived. Only enrollments with Archived status can be deleted.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the archived enrollment to permanently delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/archive/{resourceId}/restore": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Restores a previously archived enrollment back to active status, allowing it to resume sending notifications and tracking progress.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the archived enrollment to restore.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/search/export": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Exports the list of enrollments matching the search criteria to a downloadable file (e.g., CSV, Excel).",
        "requestBody": {
          "description": "Export criteria including filters, sorting, and the desired export format.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportEnrollmentRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"StartDate","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportEnrollmentRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"StartDate","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportEnrollmentRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"StartDate","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportEnrollmentRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"StartDate","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/enrollments/{resourceId}/languages": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the list of languages available for training content within a specific enrollment.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Language.LanguageDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/{resourceId}/stop": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Stops an active enrollment, halting all pending notifications and further training delivery to target users.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment to stop.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/{enrollmentId}/stop-reminder": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Stops the reminder notifications for an enrollment, preventing any further reminder emails from being sent to target users.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment whose reminders should be stopped.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/{enrollmentId}/stop-autoenroll": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Stops the auto-enroll feature for an enrollment, preventing new users added to target groups from being automatically enrolled.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment whose auto-enroll should be stopped.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/{resourceId}/send": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Triggers immediate sending of enrollment notifications to all target users, bypassing any scheduled delivery time.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment to send immediately.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/{resourceId}/content": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the training content details for an enrollment, including white-labeling and phishing campaign customization. This anonymous endpoint is used by the training player.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment whose content to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.EnrollmentContent.EnrollmentContentResultDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/form-details": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves all enum types and their values used in enrollment forms, including notification types, scheduling options, and delivery methods.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentEnumTypesDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/send-sms": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Sends enrollment notification to target users via SMS using the configured SMS provider.",
        "requestBody": {
          "description": "The SMS request including enrollment details and target user information.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentSmsRequest"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","mobilePhoneNumber":"+15551234567","textTemplate":"You have been enrolled in a security training. Please complete it at {{training_url}}","smsProviderNumberResourceId":"Sp3Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentSmsRequest"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","mobilePhoneNumber":"+15551234567","textTemplate":"You have been enrolled in a security training. Please complete it at {{training_url}}","smsProviderNumberResourceId":"Sp3Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentSmsRequest"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","mobilePhoneNumber":"+15551234567","textTemplate":"You have been enrolled in a security training. Please complete it at {{training_url}}","smsProviderNumberResourceId":"Sp3Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentSmsRequest"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","mobilePhoneNumber":"+15551234567","textTemplate":"You have been enrolled in a security training. Please complete it at {{training_url}}","smsProviderNumberResourceId":"Sp3Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentSmsResponse, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/send-teams": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Sends enrollment notification to target users via Microsoft Teams. This anonymous endpoint supports Teams bot integration.",
        "requestBody": {
          "description": "The Teams notification request including enrollment details and target user information.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentTeamsRequest"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","companyId":0,"enrollmentId":"En8Wp3nQ5vXm","fullname":"John Doe","trainingUrl":"https://training.example.com/start","trainingTitle":"Security Awareness Training","trainingName":"Phishing Awareness 2026"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentTeamsRequest"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","companyId":0,"enrollmentId":"En8Wp3nQ5vXm","fullname":"John Doe","trainingUrl":"https://training.example.com/start","trainingTitle":"Security Awareness Training","trainingName":"Phishing Awareness 2026"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentTeamsRequest"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","companyId":0,"enrollmentId":"En8Wp3nQ5vXm","fullname":"John Doe","trainingUrl":"https://training.example.com/start","trainingTitle":"Security Awareness Training","trainingName":"Phishing Awareness 2026"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentTeamsRequest"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","companyId":0,"enrollmentId":"En8Wp3nQ5vXm","fullname":"John Doe","trainingUrl":"https://training.example.com/start","trainingTitle":"Security Awareness Training","trainingName":"Phishing Awareness 2026"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentTeamsResponse, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/enrollments/resend-teams": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Resends a previously failed Microsoft Teams enrollment notification to target users.",
        "requestBody": {
          "description": "The resend request identifying which Teams notifications to retry.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendEnrollmentTeamsRequest"
              },
              "example": {"notificationActivityLogId":12345}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendEnrollmentTeamsRequest"
              },
              "example": {"notificationActivityLogId":12345}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendEnrollmentTeamsRequest"
              },
              "example": {"notificationActivityLogId":12345}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendEnrollmentTeamsRequest"
              },
              "example": {"notificationActivityLogId":12345}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentTeamsResponse, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/gamificationreport/top-performance/{targetUserResourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the top gamification performance data for a specific target user over the last month.",
        "parameters": [
          {
            "name": "targetUserResourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user to retrieve performance for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationViewResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/gamificationreport/phishing-result/{targetUserResourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the phishing simulation test results summary for a specific target user, including pass/fail rates across campaigns.",
        "parameters": [
          {
            "name": "targetUserResourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.PhishingTestResultSummaryDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/gamificationreport/learning/{targetUserResourceId}": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the learning progress for a specific target user, including completed trainings, scores, and engagement metrics.",
        "parameters": [
          {
            "name": "targetUserResourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Learning request parameters including filters and pagination options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningRequestParameter"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningRequestParameter"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningRequestParameter"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningRequestParameter"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/gamificationreport/user-info/{targetUserResourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves basic profile information for a specific target user, including email, department, phone, and preferred language.",
        "parameters": [
          {
            "name": "targetUserResourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Object, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/gamificationreport/badges/{targetUserResourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves all earned gamification badges for a specific target user based on their training and phishing simulation performance.",
        "parameters": [
          {
            "name": "targetUserResourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.BadgeInfoDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/gamificationreport/calculate-badges": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Triggers background badge calculation for multiple target users. Returns immediately while calculation continues asynchronously.",
        "requestBody": {
          "description": "Request containing target user resource IDs to calculate badges for (maximum 100 users per request).",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.CalculateBadgesRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp2mR7xLv","Tu8Wp3nQ5vXm"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.CalculateBadgesRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp2mR7xLv","Tu8Wp3nQ5vXm"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.CalculateBadgesRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp2mR7xLv","Tu8Wp3nQ5vXm"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.CalculateBadgesRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp2mR7xLv","Tu8Wp3nQ5vXm"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Object, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/gamificationreport/badges-cached/{targetUserResourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves pre-calculated badges from cache for a specific user. Returns completed=false if the background calculation has not finished yet.",
        "parameters": [
          {
            "name": "targetUserResourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GetBadgesResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/leaderboard/form-details": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the gamification form details including available date periods, point scales, and configuration options for the leaderboard UI.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/leaderboard/get-top-performers": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the top-performing users on the gamification leaderboard for the specified date period.",
        "requestBody": {
          "description": "Search parameters including date period, optional custom date range, and filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchRequestParameter"
              },
              "example": {"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchRequestParameter"
              },
              "example": {"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchRequestParameter"
              },
              "example": {"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchRequestParameter"
              },
              "example": {"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationViewResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/leaderboard/get-user-timeline": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the gamification performance timeline for a specific user, showing score progression over time.",
        "requestBody": {
          "description": "Timeline request parameters including target user, date range, and grouping options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineRequestParameter"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth","pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false},"showOnlyFailedEvents":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineRequestParameter"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth","pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false},"showOnlyFailedEvents":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineRequestParameter"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth","pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false},"showOnlyFailedEvents":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineRequestParameter"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth","pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false},"showOnlyFailedEvents":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationUserTimeLineViewResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/leaderboard/get-all": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and returns the full paginated leaderboard performance list with ranking, scores, and user details.",
        "requestBody": {
          "description": "Search parameters including date period, filters, and pagination options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchRequestParameter"
              },
              "example": {"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchRequestParameter"
              },
              "example": {"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchRequestParameter"
              },
              "example": {"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchRequestParameter"
              },
              "example": {"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationViewResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/leaderboard/get-all/export": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Exports the leaderboard performance data to a downloadable file (e.g., CSV, Excel).",
        "requestBody": {
          "description": "Export parameters including date period, filters, and the desired export format.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchExportRequestParameter"
              },
              "example": {"exportType":"Excel","reportAllPages":false,"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchExportRequestParameter"
              },
              "example": {"exportType":"Excel","reportAllPages":false,"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchExportRequestParameter"
              },
              "example": {"exportType":"Excel","reportAllPages":false,"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchExportRequestParameter"
              },
              "example": {"exportType":"Excel","reportAllPages":false,"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/leaderboard/get-user-timeline/export": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Exports the user performance timeline data to a downloadable file (e.g., CSV, Excel).",
        "requestBody": {
          "description": "Export parameters including user, date range, and the desired export format.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineExportRequestParameter"
              },
              "example": {"exportType":"Excel","reportAllPages":false,"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth","pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false},"showOnlyFailedEvents":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineExportRequestParameter"
              },
              "example": {"exportType":"Excel","reportAllPages":false,"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth","pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false},"showOnlyFailedEvents":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineExportRequestParameter"
              },
              "example": {"exportType":"Excel","reportAllPages":false,"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth","pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false},"showOnlyFailedEvents":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineExportRequestParameter"
              },
              "example": {"exportType":"Excel","reportAllPages":false,"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth","pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false},"showOnlyFailedEvents":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/leaderboard/user-performance": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves detailed gamification performance breakdown for a specific user, including per-activity scores and point sources.",
        "requestBody": {
          "description": "Request parameters including the target user and date period.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserRequestParameter"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserRequestParameter"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserRequestParameter"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserRequestParameter"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationUserPerformanceViewResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/leaderboard/search-with-timeline": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches users with gamification data and timeline in a single request, combining user search and timeline retrieval for efficiency.",
        "requestBody": {
          "description": "Search parameters including user filters (FirstName, LastName, Email, Department, ResourceId) and timeline options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserSearchWithTimelineRequestParameter"
              },
              "example": {"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"showOnlyFailedEvents":false,"userPagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true},"timelinePagination":{"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":false},"includeTimeline":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserSearchWithTimelineRequestParameter"
              },
              "example": {"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"showOnlyFailedEvents":false,"userPagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true},"timelinePagination":{"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":false},"includeTimeline":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserSearchWithTimelineRequestParameter"
              },
              "example": {"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"showOnlyFailedEvents":false,"userPagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true},"timelinePagination":{"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":false},"includeTimeline":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserSearchWithTimelineRequestParameter"
              },
              "example": {"datePeriod":"LastMonth","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"showOnlyFailedEvents":false,"userPagination":{"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":true},"timelinePagination":{"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":false},"includeTimeline":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchWithTimelineResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/scorm/lmsinitialize": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Initializes a new SCORM learning session for a target user, establishing the session context and returning initial LMS data.",
        "requestBody": {
          "description": "The SCORM initialization request including enrollment content ID and target user information.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeServiceRequest"
              },
              "example": {"enrollmentContentResourceId":"Ec5Kp2mR7xLn","lmsLearnerId":"Lr3Wp8nQ4vXm"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeServiceRequest"
              },
              "example": {"enrollmentContentResourceId":"Ec5Kp2mR7xLn","lmsLearnerId":"Lr3Wp8nQ4vXm"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeServiceRequest"
              },
              "example": {"enrollmentContentResourceId":"Ec5Kp2mR7xLn","lmsLearnerId":"Lr3Wp8nQ4vXm"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeServiceRequest"
              },
              "example": {"enrollmentContentResourceId":"Ec5Kp2mR7xLn","lmsLearnerId":"Lr3Wp8nQ4vXm"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/scorm/lmsgetvalue": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves a specific SCORM data model element value from the current LMS session (e.g., cmi.core.lesson_status, cmi.core.score.raw).",
        "requestBody": {
          "description": "The get-value request including session ID and the SCORM data model element name.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSGetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSGetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSGetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSGetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/scorm/lmssetvalue": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Sets a single SCORM data model element value in the current LMS session by queuing the update for asynchronous processing.",
        "requestBody": {
          "description": "The set-value request including session ID, element name, and the value to set.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","value":"completed","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","value":"completed","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","value":"completed","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","value":"completed","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/scorm/lmscommit": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Commits multiple SCORM data model element values in a single batch operation, queuing all updates for asynchronous processing.",
        "requestBody": {
          "description": "The commit request including session ID and a collection of element name-value pairs to set.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValuesRequest"
              },
              "example": {"namesAndValues":[{"name":"cmi.core.lesson_status","value":"completed","timestamp":1710000000000},{"name":"cmi.core.score.raw","value":"85","timestamp":1710000001000}],"enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValuesRequest"
              },
              "example": {"namesAndValues":[{"name":"cmi.core.lesson_status","value":"completed","timestamp":1710000000000},{"name":"cmi.core.score.raw","value":"85","timestamp":1710000001000}],"enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValuesRequest"
              },
              "example": {"namesAndValues":[{"name":"cmi.core.lesson_status","value":"completed","timestamp":1710000000000},{"name":"cmi.core.score.raw","value":"85","timestamp":1710000001000}],"enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValuesRequest"
              },
              "example": {"namesAndValues":[{"name":"cmi.core.lesson_status","value":"completed","timestamp":1710000000000},{"name":"cmi.core.score.raw","value":"85","timestamp":1710000001000}],"enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/scorm/lmsfinish": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Terminates the current SCORM learning session, persisting all tracked progress and marking the session as complete.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "TargetUserResourceId": {
                    "type": "string"
                  },
                  "EnrollmentSessionId": {
                    "type": "string"
                  },
                  "ScormSessionId": {
                    "type": "string"
                  }
                }
              },
              "example": {
                "TargetUserResourceId": "Tu5Kp2mR7xLv",
                "EnrollmentSessionId": "Es7Kp2mR9xLn",
                "ScormSessionId": "Ss4Wp8nQ3vXm"
              },
              "encoding": {
                "TargetUserResourceId": {
                  "style": "form"
                },
                "EnrollmentSessionId": {
                  "style": "form"
                },
                "ScormSessionId": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/scorm/lmslog": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Records a diagnostic log entry from the SCORM player for troubleshooting and auditing LMS interactions.",
        "requestBody": {
          "description": "The log request including session ID, log level, and log message content.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSLogServiceRequest"
              },
              "example": {"level":"info","message":"SCORM content loaded successfully","scormSessionId":"Ss4Wp8nQ3vXm","targetUserResourceId":"Tu5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSLogServiceRequest"
              },
              "example": {"level":"info","message":"SCORM content loaded successfully","scormSessionId":"Ss4Wp8nQ3vXm","targetUserResourceId":"Tu5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSLogServiceRequest"
              },
              "example": {"level":"info","message":"SCORM content loaded successfully","scormSessionId":"Ss4Wp8nQ3vXm","targetUserResourceId":"Tu5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSLogServiceRequest"
              },
              "example": {"level":"info","message":"SCORM content loaded successfully","scormSessionId":"Ss4Wp8nQ3vXm","targetUserResourceId":"Tu5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/scormproxy/lmsinitialize": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Initializes a new SCORM proxy session for external LMS integrations, establishing session context and returning initial LMS data.",
        "requestBody": {
          "description": "The SCORM initialization request including enrollment content ID and target user information.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeServiceRequest"
              },
              "example": {"enrollmentContentResourceId":"Ec5Kp2mR7xLn","lmsLearnerId":"Lr3Wp8nQ4vXm"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeServiceRequest"
              },
              "example": {"enrollmentContentResourceId":"Ec5Kp2mR7xLn","lmsLearnerId":"Lr3Wp8nQ4vXm"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeServiceRequest"
              },
              "example": {"enrollmentContentResourceId":"Ec5Kp2mR7xLn","lmsLearnerId":"Lr3Wp8nQ4vXm"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeServiceRequest"
              },
              "example": {"enrollmentContentResourceId":"Ec5Kp2mR7xLn","lmsLearnerId":"Lr3Wp8nQ4vXm"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/scormproxy/lmsgetvalue": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves a specific SCORM data model element value from the current proxy LMS session.",
        "requestBody": {
          "description": "The get-value request including session ID and the SCORM data model element name.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSGetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSGetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSGetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSGetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/scormproxy/lmssetvalue": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Sets a single SCORM data model element value in the current proxy LMS session by queuing the update for asynchronous processing.",
        "requestBody": {
          "description": "The set-value request including session ID, element name, and the value to set.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","value":"completed","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","value":"completed","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","value":"completed","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValueServiceRequest"
              },
              "example": {"name":"cmi.core.lesson_status","value":"completed","enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/scormproxy/lmscommit": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Commits multiple SCORM data model element values in a single batch operation for the proxy LMS session.",
        "requestBody": {
          "description": "The commit request including session ID and a collection of element name-value pairs to set.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValuesRequest"
              },
              "example": {"namesAndValues":[{"name":"cmi.core.lesson_status","value":"completed","timestamp":1710000000000},{"name":"cmi.core.score.raw","value":"85","timestamp":1710000001000}],"enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValuesRequest"
              },
              "example": {"namesAndValues":[{"name":"cmi.core.lesson_status","value":"completed","timestamp":1710000000000},{"name":"cmi.core.score.raw","value":"85","timestamp":1710000001000}],"enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValuesRequest"
              },
              "example": {"namesAndValues":[{"name":"cmi.core.lesson_status","value":"completed","timestamp":1710000000000},{"name":"cmi.core.score.raw","value":"85","timestamp":1710000001000}],"enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValuesRequest"
              },
              "example": {"namesAndValues":[{"name":"cmi.core.lesson_status","value":"completed","timestamp":1710000000000},{"name":"cmi.core.score.raw","value":"85","timestamp":1710000001000}],"enrollmentSessionId":"Es7Kp2mR9xLn","scormSessionId":"Ss4Wp8nQ3vXm"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/scormproxy/lmsfinish": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Terminates the current SCORM proxy session, persisting all tracked progress and marking the session as complete.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "TargetUserResourceId": {
                    "type": "string"
                  },
                  "EnrollmentSessionId": {
                    "type": "string"
                  },
                  "ScormSessionId": {
                    "type": "string"
                  }
                }
              },
              "example": {
                "TargetUserResourceId": "Tu5Kp2mR7xLv",
                "EnrollmentSessionId": "Es7Kp2mR9xLn",
                "ScormSessionId": "Ss4Wp8nQ3vXm"
              },
              "encoding": {
                "TargetUserResourceId": {
                  "style": "form"
                },
                "EnrollmentSessionId": {
                  "style": "form"
                },
                "ScormSessionId": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/scormproxy/lmslog": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Records a diagnostic log entry from the SCORM proxy player for troubleshooting and auditing LMS proxy interactions.",
        "requestBody": {
          "description": "The log request including session ID, log level, and log message content.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSLogServiceRequest"
              },
              "example": {"level":"info","message":"SCORM content loaded successfully","scormSessionId":"Ss4Wp8nQ3vXm","targetUserResourceId":"Tu5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSLogServiceRequest"
              },
              "example": {"level":"info","message":"SCORM content loaded successfully","scormSessionId":"Ss4Wp8nQ3vXm","targetUserResourceId":"Tu5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSLogServiceRequest"
              },
              "example": {"level":"info","message":"SCORM content loaded successfully","scormSessionId":"Ss4Wp8nQ3vXm","targetUserResourceId":"Tu5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSLogServiceRequest"
              },
              "example": {"level":"info","message":"SCORM content loaded successfully","scormSessionId":"Ss4Wp8nQ3vXm","targetUserResourceId":"Tu5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{resourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the full details of an existing training by its unique resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the training to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Permanently deletes a training and all its associated content by resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the training to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Updates an existing training's details and content, submitted as multipart form data.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the training to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "CoverImage": {
                    "type": "string",
                    "format": "binary"
                  },
                  "TrainingDetail.CoverImageUrl": {
                    "maxLength": 2000,
                    "minLength": 0,
                    "type": "string"
                  },
                  "TrainingDetail.Type": {
                    "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeEnum"
                  },
                  "TrainingDetail.Status": {
                    "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingStatusEnum"
                  },
                  "TrainingDetail.TrainingContents": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingContentDTO"
                    }
                  },
                  "TrainingDetail.AvailableForRequests": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.EntityAvailableFor.EntityAvailableForRequest"
                    }
                  },
                  "TrainingDetail.VendorId": {
                    "type": "string"
                  },
                  "TrainingDetail.TrainingGroups": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingGroupDTO"
                    }
                  },
                  "TrainingDetail.RoleIds": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTargetAudienceEnum"
                    }
                  },
                  "TrainingDetail.CategoryIds": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingCategoryEnum"
                    }
                  },
                  "TrainingDetail.Name": {
                    "maxLength": 256,
                    "minLength": 0,
                    "type": "string"
                  },
                  "TrainingDetail.Description": {
                    "maxLength": 300,
                    "minLength": 0,
                    "type": "string"
                  },
                  "TrainingDetail.Category": {
                    "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingCategoryEnum"
                  },
                  "TrainingDetail.TargetAudience": {
                    "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTargetAudienceEnum"
                  },
                  "TrainingDetail.Behaviours": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingBehaviourDTO"
                    }
                  },
                  "TrainingDetail.Compliances": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingComplianceDTO"
                    }
                  },
                  "TrainingDetail.TagNames": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "TrainingDetail.HasQuiz": {
                    "type": "boolean"
                  },
                  "TrainingDetail.Duration": {
                    "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingDurationEnum"
                  },
                  "TrainingDetail.Level": {
                    "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingLevelEnum"
                  },
                  "TrainingDetail.DurationDisplayName": {
                    "type": "string"
                  },
                  "TrainingDetail.LevelDisplayName": {
                    "type": "string"
                  }
                }
              },
              "encoding": {
                "CoverImage": {
                  "style": "form"
                },
                "TrainingDetail.CoverImageUrl": {
                  "style": "form"
                },
                "TrainingDetail.Type": {
                  "style": "form"
                },
                "TrainingDetail.Status": {
                  "style": "form"
                },
                "TrainingDetail.TrainingContents": {
                  "style": "form"
                },
                "TrainingDetail.AvailableForRequests": {
                  "style": "form"
                },
                "TrainingDetail.VendorId": {
                  "style": "form"
                },
                "TrainingDetail.TrainingGroups": {
                  "style": "form"
                },
                "TrainingDetail.RoleIds": {
                  "style": "form"
                },
                "TrainingDetail.CategoryIds": {
                  "style": "form"
                },
                "TrainingDetail.Name": {
                  "style": "form"
                },
                "TrainingDetail.Description": {
                  "style": "form"
                },
                "TrainingDetail.Category": {
                  "style": "form"
                },
                "TrainingDetail.TargetAudience": {
                  "style": "form"
                },
                "TrainingDetail.Behaviours": {
                  "style": "form"
                },
                "TrainingDetail.Compliances": {
                  "style": "form"
                },
                "TrainingDetail.TagNames": {
                  "style": "form"
                },
                "TrainingDetail.HasQuiz": {
                  "style": "form"
                },
                "TrainingDetail.Duration": {
                  "style": "form"
                },
                "TrainingDetail.Level": {
                  "style": "form"
                },
                "TrainingDetail.DurationDisplayName": {
                  "style": "form"
                },
                "TrainingDetail.LevelDisplayName": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/get-training-type-count": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns a count summary of trainings grouped by type, filtered by the provided search criteria.",
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchTrainingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchTrainingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchTrainingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchTrainingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingNumberSummaryRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches for trainings using the provided criteria and returns a paginated list of results.",
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchTrainingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchTrainingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchTrainingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchTrainingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingSearchRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/search-summary": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns a lightweight paginated list of training IDs and names matching the search criteria, suitable for dropdowns and selection lists.",
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingSearchSummaryRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/search/export": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Exports the list of trainings matching the search criteria to a downloadable file (e.g., CSV, Excel).",
        "requestBody": {
          "description": "Export criteria including filters, sorting, and the desired export format.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportTrainingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportTrainingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportTrainingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportTrainingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/trainings/draft": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Creates a new training in draft status, allowing further editing before publishing.",
        "requestBody": {
          "description": "The training detail payload including name, content, and availability settings.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingDetailDraftRequest"
              },
              "example": {"availableForRequests":[{"type":"Company"}],"name":"Security Awareness Training","description":"Comprehensive security awareness training for employees","category":"None","targetAudience":"None","tagNames":["security","awareness"],"hasQuiz":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingDetailDraftRequest"
              },
              "example": {"availableForRequests":[{"type":"Company"}],"name":"Security Awareness Training","description":"Comprehensive security awareness training for employees","category":"None","targetAudience":"None","tagNames":["security","awareness"],"hasQuiz":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingDetailDraftRequest"
              },
              "example": {"availableForRequests":[{"type":"Company"}],"name":"Security Awareness Training","description":"Comprehensive security awareness training for employees","category":"None","targetAudience":"None","tagNames":["security","awareness"],"hasQuiz":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingDetailDraftRequest"
              },
              "example": {"availableForRequests":[{"type":"Company"}],"name":"Security Awareness Training","description":"Comprehensive security awareness training for employees","category":"None","targetAudience":"None","tagNames":["security","awareness"],"hasQuiz":true}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Creates a new training with full content uploaded as multipart form data and publishes it.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "CoverImage": {
                    "type": "string",
                    "format": "binary"
                  },
                  "TrainingGroups": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingGroupDTO"
                    }
                  },
                  "AvailableForRequests": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.EntityAvailableFor.EntityAvailableForRequest"
                    }
                  },
                  "Type": {
                    "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeEnum"
                  },
                  "RoleIds": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTargetAudienceEnum"
                    }
                  },
                  "CategoryIds": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingCategoryEnum"
                    }
                  },
                  "Name": {
                    "maxLength": 256,
                    "minLength": 0,
                    "type": "string"
                  },
                  "Description": {
                    "maxLength": 300,
                    "minLength": 0,
                    "type": "string"
                  },
                  "Category": {
                    "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingCategoryEnum"
                  },
                  "TargetAudience": {
                    "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTargetAudienceEnum"
                  },
                  "Behaviours": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingBehaviourDTO"
                    }
                  },
                  "Compliances": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingComplianceDTO"
                    }
                  },
                  "TagNames": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "HasQuiz": {
                    "type": "boolean"
                  },
                  "Duration": {
                    "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingDurationEnum"
                  },
                  "Level": {
                    "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingLevelEnum"
                  },
                  "DurationDisplayName": {
                    "type": "string"
                  },
                  "LevelDisplayName": {
                    "type": "string"
                  }
                }
              },
              "encoding": {
                "CoverImage": {
                  "style": "form"
                },
                "TrainingGroups": {
                  "style": "form"
                },
                "AvailableForRequests": {
                  "style": "form"
                },
                "Type": {
                  "style": "form"
                },
                "RoleIds": {
                  "style": "form"
                },
                "CategoryIds": {
                  "style": "form"
                },
                "Name": {
                  "style": "form"
                },
                "Description": {
                  "style": "form"
                },
                "Category": {
                  "style": "form"
                },
                "TargetAudience": {
                  "style": "form"
                },
                "Behaviours": {
                  "style": "form"
                },
                "Compliances": {
                  "style": "form"
                },
                "TagNames": {
                  "style": "form"
                },
                "HasQuiz": {
                  "style": "form"
                },
                "Duration": {
                  "style": "form"
                },
                "Level": {
                  "style": "form"
                },
                "DurationDisplayName": {
                  "style": "form"
                },
                "LevelDisplayName": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{resourceId}/upload-content": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Uploads a SCORM-compliant ZIP package as training content for a specific training.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the training to upload content for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "LanguageId",
                  "ZipFile"
                ],
                "type": "object",
                "properties": {
                  "ZipFile": {
                    "type": "string",
                    "format": "binary"
                  },
                  "LanguageId": {
                    "type": "string"
                  },
                  "VendorId": {
                    "type": "string"
                  },
                  "Type": {
                    "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeEnum"
                  }
                }
              },
              "encoding": {
                "ZipFile": {
                  "style": "form"
                },
                "LanguageId": {
                  "style": "form"
                },
                "VendorId": {
                  "style": "form"
                },
                "Type": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingContentUploadResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{resourceId}/upload-content/initiate": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Starts a chunked SCORM ZIP upload for packages that exceed the edge request size limit.\r\nThe existing single-request upload-content endpoint remains available for smaller files.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadInitiateRequest"
              },
              "example": {"fileName":"security-awareness-scorm12.zip","fileSize":314572800,"languageId":"f9288272-d0a1-4edc-93d3-534e56983e4f","vendorId":"Cp4Wn8mT2xRv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadInitiateRequest"
              },
              "example": {"fileName":"security-awareness-scorm12.zip","fileSize":314572800,"languageId":"f9288272-d0a1-4edc-93d3-534e56983e4f","vendorId":"Cp4Wn8mT2xRv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadInitiateRequest"
              },
              "example": {"fileName":"security-awareness-scorm12.zip","fileSize":314572800,"languageId":"f9288272-d0a1-4edc-93d3-534e56983e4f","vendorId":"Cp4Wn8mT2xRv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadInitiateRequest"
              },
              "example": {"fileName":"security-awareness-scorm12.zip","fileSize":314572800,"languageId":"f9288272-d0a1-4edc-93d3-534e56983e4f","vendorId":"Cp4Wn8mT2xRv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadInitiateResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{resourceId}/upload-content/part": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Uploads a single 75MB or smaller chunk of a SCORM ZIP package through the API.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "Chunk",
                  "PartNumber",
                  "UploadId"
                ],
                "type": "object",
                "properties": {
                  "UploadId": {
                    "type": "string"
                  },
                  "PartNumber": {
                    "type": "integer",
                    "format": "int32"
                  },
                  "Chunk": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "UploadId": {
                  "style": "form"
                },
                "PartNumber": {
                  "style": "form"
                },
                "Chunk": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadPartResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{resourceId}/upload-content/complete": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Completes a chunked SCORM ZIP upload, assembles the package, and runs the existing content processing flow.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadCompleteRequest"
              },
              "example": {"uploadId":"a1b2c3d4e5f64789a0b1c2d3e4f50617"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadCompleteRequest"
              },
              "example": {"uploadId":"a1b2c3d4e5f64789a0b1c2d3e4f50617"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadCompleteRequest"
              },
              "example": {"uploadId":"a1b2c3d4e5f64789a0b1c2d3e4f50617"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadCompleteRequest"
              },
              "example": {"uploadId":"a1b2c3d4e5f64789a0b1c2d3e4f50617"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingUpdateDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{resourceId}/upload-content/abort": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Aborts a chunked SCORM ZIP upload and deletes any staged parts so they are not billed.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadAbortRequest"
              },
              "example": {"uploadId":"a1b2c3d4e5f64789a0b1c2d3e4f50617"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadAbortRequest"
              },
              "example": {"uploadId":"a1b2c3d4e5f64789a0b1c2d3e4f50617"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadAbortRequest"
              },
              "example": {"uploadId":"a1b2c3d4e5f64789a0b1c2d3e4f50617"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadAbortRequest"
              },
              "example": {"uploadId":"a1b2c3d4e5f64789a0b1c2d3e4f50617"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{resourceId}/upload-file-content": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Uploads a non-SCORM file (e.g., video, PDF) as training content for a specific training.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the training to upload content for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "File",
                  "LanguageId"
                ],
                "type": "object",
                "properties": {
                  "File": {
                    "type": "string",
                    "format": "binary"
                  },
                  "LanguageId": {
                    "type": "string"
                  },
                  "VendorId": {
                    "type": "string"
                  },
                  "Type": {
                    "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeEnum"
                  }
                }
              },
              "encoding": {
                "File": {
                  "style": "form"
                },
                "LanguageId": {
                  "style": "form"
                },
                "VendorId": {
                  "style": "form"
                },
                "Type": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingContentUploadResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{resourceId}/content/{languageId}": {
      "delete": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Deletes a specific language version of training content from a training.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the training.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "languageId",
            "in": "path",
            "description": "The language identifier of the content version to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{resourceId}/duplicate": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Creates a duplicate copy of an existing training, including all its content and settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the training to duplicate.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{resourceId}/customization/images": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Lists the images found inside a SCORM training package so the user can pick which of them to replace with their own logo, and reports whether the package layout allows its button colours to be rewritten.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the SCORM training to inspect.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "languageId",
            "in": "query",
            "description": "Optional language version to inspect. Defaults to the first content version of the training.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationImagesDTO, KeepnetLabs.AwarenessEducator.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{resourceId}/customization/images/content": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns the bytes of one image inside a SCORM training package, so the client can draw a logo onto it and send back the result. Serving it here rather than letting the browser read the content CDN directly is what makes that possible: the CDN does not allow cross origin reads, and an image loaded from it cannot be exported from a canvas.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the SCORM training.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "relativePath",
            "in": "query",
            "description": "Path of the image inside the package, exactly as listed by the customization images endpoint.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "languageId",
            "in": "query",
            "description": "Optional language version. Defaults to the first content version of the training.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{resourceId}/customization": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Creates a branded copy of a SCORM training for the acting company: replaces the selected images inside the package with the supplied logo and optionally rewrites the quiz and player button colours. The source training is not modified.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the SCORM training to brand.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Images to replace and, optionally, the button colour to apply.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationRequest"
              },
              "example": {"languageId":"79276617-3e2b-409d-b2d1-52eb0f4a6ec6","buttonColor":"#3273F6","images":[{"relativePath":"res/data/img0.png","content":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="},{"relativePath":"res/data/img3.png","content":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationRequest"
              },
              "example": {"languageId":"79276617-3e2b-409d-b2d1-52eb0f4a6ec6","buttonColor":"#3273F6","images":[{"relativePath":"res/data/img0.png","content":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="},{"relativePath":"res/data/img3.png","content":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationRequest"
              },
              "example": {"languageId":"79276617-3e2b-409d-b2d1-52eb0f4a6ec6","buttonColor":"#3273F6","images":[{"relativePath":"res/data/img0.png","content":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="},{"relativePath":"res/data/img3.png","content":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationRequest"
              },
              "example": {"languageId":"79276617-3e2b-409d-b2d1-52eb0f4a6ec6","buttonColor":"#3273F6","images":[{"relativePath":"res/data/img0.png","content":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="},{"relativePath":"res/data/img3.png","content":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationResultDTO, KeepnetLabs.AwarenessEducator.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/categories": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves all available training categories used for classifying trainings (e.g., Compliance, Security). Response is cached for 1 hour.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Base.EnumResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/target-audiences": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves all available target audience types for trainings (e.g., All Employees, IT Staff). Response is cached for 1 hour.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Base.EnumResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/types": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves all available training types (e.g., SCORM, Video, Document). Response is cached for 1 hour.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Base.EnumResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/levels": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves all available training difficulty levels (e.g., Beginner, Intermediate, Advanced). Response is cached for 1 hour.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Base.EnumResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/durations": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves all available training duration ranges. Response is cached for 1 hour.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Base.EnumResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/vendors": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves all available training content vendors/providers. Response is cached for 1 hour.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.VendorDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/behaviours": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves all available security behaviour categories that trainings can address. Response is cached for 1 hour.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.BehaviourDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/compliances": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves all available compliance frameworks that trainings can satisfy (e.g., GDPR, HIPAA, PCI-DSS). Response is cached for 1 hour.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.ComplianceDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/languages": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves all supported languages for training content localization. Response is cached for 1 hour.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Language.LanguageDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/scorm": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the SCORM training launch URL for a specific enrollment content and target user. This anonymous endpoint is used by the SCORM player.",
        "parameters": [
          {
            "name": "enrollmentContentId",
            "in": "query",
            "description": "The unique identifier of the enrollment content to launch.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetUserResourceId",
            "in": "query",
            "description": "The unique resource identifier of the target user taking the training.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.SCORMTrainingURLDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/scorm/preview": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the SCORM training preview URL, allowing administrators to preview training content before enrolling users.",
        "requestBody": {
          "description": "The preview request including training and language identifiers.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.SCORMTrainingURLPreviewRequest"
              },
              "example": {"trainingId":"Tr5Kp2mR7xLv","languageId":"0"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.SCORMTrainingURLPreviewRequest"
              },
              "example": {"trainingId":"Tr5Kp2mR7xLv","languageId":"0"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.SCORMTrainingURLPreviewRequest"
              },
              "example": {"trainingId":"Tr5Kp2mR7xLv","languageId":"0"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.SCORMTrainingURLPreviewRequest"
              },
              "example": {"trainingId":"Tr5Kp2mR7xLv","languageId":"0"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.SCORMTrainingURLDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/download": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Downloads the training content file for a specified training and language, scoped to the current company group.",
        "requestBody": {
          "description": "The download request including training ID and language preference.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.DownloadTrainingContentRequest"
              },
              "example": {"trainingId":"Tr5Kp2mR7xLv","languageId":"0"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.DownloadTrainingContentRequest"
              },
              "example": {"trainingId":"Tr5Kp2mR7xLv","languageId":"0"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.DownloadTrainingContentRequest"
              },
              "example": {"trainingId":"Tr5Kp2mR7xLv","languageId":"0"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.DownloadTrainingContentRequest"
              },
              "example": {"trainingId":"Tr5Kp2mR7xLv","languageId":"0"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/download-content": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Downloads training content while tracking the target user's progress. This anonymous endpoint records that the user accessed the content.",
        "parameters": [
          {
            "name": "enrollmentContentId",
            "in": "query",
            "description": "The unique identifier of the enrollment content to download.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetUserResourceId",
            "in": "query",
            "description": "The unique resource identifier of the target user downloading the content.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/template-merge-tags": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the list of available merge tags that can be used in training email templates for dynamic content substitution.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{trainingId}/favourite": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Adds a training to the current user's favourites list for quick access.",
        "parameters": [
          {
            "name": "trainingId",
            "in": "path",
            "description": "The unique resource identifier of the training to add to favourites.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Removes a training from the current user's favourites list.",
        "parameters": [
          {
            "name": "trainingId",
            "in": "path",
            "description": "The unique resource identifier of the training to remove from favourites.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/trainings/{resourceId}/available-for-change-impact": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Checks the impact of changing availability settings for a training. Returns the list of companies with active enrollments that would lose access.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the training.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The proposed availability settings to evaluate.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.AvailableForChangeImpactRequest"
              },
              "example": {"availableForRequests":[{"type":"Company","resourceId":"Cp4Wn8mT2xRv"},{"type":"Group","resourceId":"Gp7Rm3nK5wLx"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.AvailableForChangeImpactRequest"
              },
              "example": {"availableForRequests":[{"type":"Company","resourceId":"Cp4Wn8mT2xRv"},{"type":"Group","resourceId":"Gp7Rm3nK5wLx"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.AvailableForChangeImpactRequest"
              },
              "example": {"availableForRequests":[{"type":"Company","resourceId":"Cp4Wn8mT2xRv"},{"type":"Group","resourceId":"Gp7Rm3nK5wLx"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.AvailableForChangeImpactRequest"
              },
              "example": {"availableForRequests":[{"type":"Company","resourceId":"Cp4Wn8mT2xRv"},{"type":"Group","resourceId":"Gp7Rm3nK5wLx"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.AvailableForChangeImpactResponse, KeepnetLabs.AwarenessEducator.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/summary": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns the summary report for an enrollment, including completion rates, delivery status, and training progress statistics.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment to summarize.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trainingType",
            "in": "query",
            "description": "Optional training type filter to narrow the summary by specific training type.",
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeRequestEnum"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.EnrollmentSummaryReportDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/users/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches target users within an enrollment and returns a paginated training report showing each user's status and progress.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment to report on.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchUsersRestRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastInteractionDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchUsersRestRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastInteractionDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchUsersRestRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastInteractionDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchUsersRestRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastInteractionDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportUsersSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/users/resend": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Resends the training notification email to selected target users within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The resend request identifying which target users should receive the training again.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/opened-emails/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and returns a paginated report of target users who opened the training email within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportOpenedEmailSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/opened-emails/resend": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Resends training emails to target users who previously opened the email but have not completed the training.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The resend request identifying which users should be re-notified.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/clicked-emails/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and returns a paginated report of target users who clicked the training link within an enrollment email.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportClickedLinkSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/clicked-emails/resend": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Resends training emails to target users who clicked the training link but have not completed the training.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The resend request identifying which users should be re-notified.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/progress/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and returns a paginated report of target user training progress (completion percentage) within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportProgressSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/progress/resend": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Resends training to target users filtered by their progress status within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The resend request identifying which users should be re-notified.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/exam-results/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and returns a paginated report of target user exam/quiz results within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, sorting, and exam status filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchExamResultsRestRequest"
              },
              "example": {"showByExamStatus":"FirstAttempt","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"ExamResultDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchExamResultsRestRequest"
              },
              "example": {"showByExamStatus":"FirstAttempt","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"ExamResultDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchExamResultsRestRequest"
              },
              "example": {"showByExamStatus":"FirstAttempt","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"ExamResultDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchExamResultsRestRequest"
              },
              "example": {"showByExamStatus":"FirstAttempt","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"ExamResultDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportExamResultsSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/exam-results/resend": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Resends training to target users filtered by their exam result status within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The resend request identifying which users should be re-notified.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/no-response/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and returns a paginated report of target users who have not responded to the training email within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportNoResponseSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/no-response/resend": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Resends training to target users who have not responded to the enrollment notification.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The resend request identifying which non-responsive users should be re-notified.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/sending-report/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and returns a paginated sending report showing email delivery status for each target user within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportSendingReportSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/sending-report/resend": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Resends training emails to target users based on the sending report filter within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The resend request identifying which users should be re-notified based on delivery status.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"selectAll":false,"selectedItems":["Xn8Jp2qR4mLv"],"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/users/search/export": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Exports the target user training report for an enrollment to a downloadable file (e.g., CSV, Excel).",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment to export.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Export criteria including filters, sorting, and the desired export format.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportUsersSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"LastInteractionDate","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportUsersSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"LastInteractionDate","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportUsersSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"LastInteractionDate","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportUsersSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"LastInteractionDate","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/export": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Exports the complete training report for an enrollment as an Excel file, including all report tabs.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment to export.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/opened-emails/search/export": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Exports the opened-email training report for an enrollment to a downloadable file.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Export criteria including filters, sorting, and the desired export format.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/clicked-emails/search/export": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Exports the clicked-link training report for an enrollment to a downloadable file.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Export criteria including filters, sorting, and the desired export format.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/progress/search/export": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Exports the training progress report for an enrollment to a downloadable file.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Export criteria including filters, sorting, and the desired export format.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/exam-results/search/export": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Exports the exam results training report for an enrollment to a downloadable file.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Export criteria including filters, sorting, and the desired export format.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/no-response/search/export": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Exports the no-response training report for an enrollment to a downloadable file.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Export criteria including filters, sorting, and the desired export format.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/sending-report/search/export": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Exports the sending report for an enrollment to a downloadable file, showing email delivery status.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Export criteria including filters, sorting, and the desired export format.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/interactions/{targetUserResourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns the list of interactions (email opens, link clicks, training starts, completions) for a specific user within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetUserResourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "emailEventType",
            "in": "query",
            "description": "Optional filter by email event type (e.g., delivered, opened, clicked).",
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.Mailer.Domain.Enums.EmailEventTypeEnum"
            }
          },
          {
            "name": "trainingType",
            "in": "query",
            "description": "Optional filter by training type.",
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeRequestEnum"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.InteractionDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/progress-details/{targetUserResourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns detailed training progress information for a specific user within an enrollment, broken down by content module.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetUserResourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ProgressDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/exam-result-details/{targetUserResourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns detailed exam/quiz result information for a specific user within an enrollment, including scores and pass/fail status.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetUserResourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ExamResultDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/form-details": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns all enum types and their values used in training report filters and forms. Response is cached for 1 hour.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Base.EnumResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/email-event/{targetUserResourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns SendGrid email delivery events (delivered, bounced, deferred, etc.) for a specific user within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetUserResourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.InteractionDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/email-event/{userMailId}/reminder": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns SendGrid email delivery events for a specific reminder mail identified by user mail ID within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userMailId",
            "in": "path",
            "description": "The unique identifier of the user's reminder mail to retrieve events for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.InteractionDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/certificate/{certificateId}": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Retrieves the HTML template of a company's certificate by its ID for rendering in training completion reports.",
        "parameters": [
          {
            "name": "certificateId",
            "in": "path",
            "description": "The unique identifier of the certificate template to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/resend": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Resends training notifications to selected target users within an enrollment, filtered by specific training report types.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The resend request specifying which report types and users to target.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ResendEnrollmentByTypesDTO"
              },
              "example": {"resendTypes":[1,2]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ResendEnrollmentByTypesDTO"
              },
              "example": {"resendTypes":[1,2]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ResendEnrollmentByTypesDTO"
              },
              "example": {"resendTypes":[1,2]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ResendEnrollmentByTypesDTO"
              },
              "example": {"resendTypes":[1,2]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/reminder-mails/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches and returns a paginated list of reminder mail records sent for an enrollment, including delivery status and timestamps.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRestServiceRequest"
              },
              "example": {"reportAllPages":false,"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRestServiceRequest"
              },
              "example": {"reportAllPages":false,"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRestServiceRequest"
              },
              "example": {"reportAllPages":false,"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRestServiceRequest"
              },
              "example": {"reportAllPages":false,"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportReminderMailSearchDTO, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/anonymous/{enrollmentId}/summary": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns the anonymous (non-target-user) training progress summary for an enrollment, showing aggregated completion statistics.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingProgresstReportDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/anonymous/{enrollmentId}": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns the anonymous user-level training report for an enrollment, listing individual anonymous participants and their status.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingUserReportDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/anonymous/{enrollmentId}/user-detail/{targetuserresultId}": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns detailed training report for a specific anonymous user result within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetuserresultId",
            "in": "path",
            "description": "The unique identifier of the anonymous target user result.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingUserReportDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/anonymous/{enrollmentId}/progress": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns the anonymous training progress report for an enrollment, showing completion status per anonymous participant.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingProgresstReportDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/anonymous/{enrollmentId}/progress-detail/{targetuserresultId}": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns detailed training progress information for a specific anonymous user result within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetuserresultId",
            "in": "path",
            "description": "The unique identifier of the anonymous target user result.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingProgressReportDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/anonymous/{enrollmentId}/result": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns the anonymous exam/quiz result report for an enrollment, showing scores and pass/fail status per participant.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingResultReportDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/anonymous/{enrollmentId}/result-detail/{targetuserresultId}": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns detailed exam/quiz result information for a specific anonymous user result within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetuserresultId",
            "in": "path",
            "description": "The unique identifier of the anonymous target user result.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingResultReportDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/{enrollmentId}/exam-result-sessions/{targetUserResourceId}": {
      "get": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Returns the question-answer interaction details from SCORM exam sessions for a specific user within an enrollment.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The unique resource identifier of the enrollment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetUserResourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user whose exam interactions to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSScormSessionInteractionDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/training-reports/activity-users/search": {
      "post": {
        "tags": [
          "Awareness Training"
        ],
        "summary": "Searches for training activity users within a specified date range, returning a paginated list of users with their training engagement data.",
        "requestBody": {
          "description": "The search request including date range, filters, pagination, and sorting options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TrainingReport.SearchTrainingUsersByDateRangeRequest"
              },
              "example": {"startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59","groupByUser":true,"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsCompleted","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TrainingReport.SearchTrainingUsersByDateRangeRequest"
              },
              "example": {"startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59","groupByUser":true,"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsCompleted","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TrainingReport.SearchTrainingUsersByDateRangeRequest"
              },
              "example": {"startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59","groupByUser":true,"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsCompleted","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TrainingReport.SearchTrainingUsersByDateRangeRequest"
              },
              "example": {"startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59","groupByUser":true,"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsCompleted","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingActivityUsersSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign/form-details": {
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Retrieves the form details needed to create or edit a callback phishing campaign, including available options and default values.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignFormDetailsModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Creates a new callback phishing campaign for the authenticated company, including target groups, scheduling, and email delivery settings.",
        "requestBody": {
          "description": "The callback campaign creation payload containing name, scenario, targets, schedule, and delivery configuration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignCreateRequest"
              },
              "example": {"name":"Q1 2026 Callback Campaign","description":"Callback phishing simulation for IT department","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"distributionStartTypeId":1,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","phishingScenarios":[{"phishingScenarioResourceId":"Cb4Kx7mN2wRt","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"smtpSettingResourceId":"Sm8pW3nR5vQx","distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"emailDeliverySettingType":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignCreateRequest"
              },
              "example": {"name":"Q1 2026 Callback Campaign","description":"Callback phishing simulation for IT department","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"distributionStartTypeId":1,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","phishingScenarios":[{"phishingScenarioResourceId":"Cb4Kx7mN2wRt","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"smtpSettingResourceId":"Sm8pW3nR5vQx","distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"emailDeliverySettingType":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignCreateRequest"
              },
              "example": {"name":"Q1 2026 Callback Campaign","description":"Callback phishing simulation for IT department","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"distributionStartTypeId":1,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","phishingScenarios":[{"phishingScenarioResourceId":"Cb4Kx7mN2wRt","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"smtpSettingResourceId":"Sm8pW3nR5vQx","distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"emailDeliverySettingType":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignCreateRequest"
              },
              "example": {"name":"Q1 2026 Callback Campaign","description":"Callback phishing simulation for IT department","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"distributionStartTypeId":1,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","phishingScenarios":[{"phishingScenarioResourceId":"Cb4Kx7mN2wRt","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"smtpSettingResourceId":"Sm8pW3nR5vQx","distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"emailDeliverySettingType":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign/{resourceId}": {
      "delete": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Deletes a callback phishing campaign identified by its unique resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback campaign to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Retrieves the full details of an existing callback phishing campaign by its unique resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback campaign to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign/search": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Searches and returns a paginated list of callback phishing campaigns with optional filtering and sorting.",
        "requestBody": {
          "description": "The search request containing pagination parameters, sort order, and optional filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign/search/export": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Exports the callback phishing campaign list as a downloadable file in the specified format (e.g., Excel, CSV).",
        "requestBody": {
          "description": "The export request containing pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Export.Dto.ExportServiceResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign/preview/{resourceId}": {
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Generates a preview of a callback phishing campaign, showing how the campaign email and scenario will appear to target users.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback campaign to preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignPreviewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign/bulk-delete": {
      "delete": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Deletes multiple callback phishing campaigns in a single bulk operation.",
        "requestBody": {
          "description": "The bulk delete request containing a list of campaign resource identifiers to delete.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignDeleteRequest"
              },
              "example": {"items":["Cb9Lm3vR7nKp","Cb5Tp8kW2xNv"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignDeleteRequest"
              },
              "example": {"items":["Cb9Lm3vR7nKp","Cb5Tp8kW2xNv"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignDeleteRequest"
              },
              "example": {"items":["Cb9Lm3vR7nKp","Cb5Tp8kW2xNv"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignDeleteRequest"
              },
              "example": {"items":["Cb9Lm3vR7nKp","Cb5Tp8kW2xNv"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign/calculate-sending-info": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Calculates the estimated sending information for a callback campaign, including total email count and delivery timeline.",
        "requestBody": {
          "description": "The sending info calculation request containing target group and delivery parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCalculateSendingInfoRequest"
              },
              "example": {"sendingLimit":50,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":250,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCalculateSendingInfoRequest"
              },
              "example": {"sendingLimit":50,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":250,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCalculateSendingInfoRequest"
              },
              "example": {"sendingLimit":50,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":250,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCalculateSendingInfoRequest"
              },
              "example": {"sendingLimit":50,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":250,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSendingInfoModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign/calculate-schedule-info": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Calculates the schedule information for a callback campaign, determining when emails will be sent based on the configured frequency and time windows.",
        "requestBody": {
          "description": "The schedule info calculation request containing frequency settings and time window parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"callbackScenarioResourceIds":["Cb4Kx7mN2wRt"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"callbackScenarioResourceIds":["Cb4Kx7mN2wRt"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"callbackScenarioResourceIds":["Cb4Kx7mN2wRt"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"callbackScenarioResourceIds":["Cb4Kx7mN2wRt"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallBackCampaignScheduleInfoModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign/email-delivery-settings": {
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Retrieves the available email delivery settings for callback campaigns, including configured SMTP servers and direct email creation settings.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.EmailDeliverySettingModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign/root-company-shared-smtp-resource-id": {
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Returns the resource identifier of the most recently created shared SMTP settings from the root (parent) company.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job/form-details": {
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Retrieves the form details needed to create or configure a callback campaign job, including available options and default values.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobFormDetailsModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/campaign-job/start/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Starts a new callback campaign job instance for an existing campaign, identified by its resource identifier and instance group number.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback campaign to start.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number indicating which campaign frequency group to execute.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job/start": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Creates a new callback campaign job instance with the provided configuration and immediately starts sending emails to targets.",
        "requestBody": {
          "description": "The campaign instance request containing target groups, schedule, and delivery configuration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignInstanceRequest"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","scheduleTypeId":3,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionStartTypeId":1,"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"campaignResourceId":"Cb9Lm3vR7nKp"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignInstanceRequest"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","scheduleTypeId":3,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionStartTypeId":1,"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"campaignResourceId":"Cb9Lm3vR7nKp"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignInstanceRequest"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","scheduleTypeId":3,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionStartTypeId":1,"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"campaignResourceId":"Cb9Lm3vR7nKp"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignInstanceRequest"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","scheduleTypeId":3,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionStartTypeId":1,"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"campaignResourceId":"Cb9Lm3vR7nKp"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job/stop/{resourceId}/{instanceGroup}": {
      "patch": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Stops an active callback campaign job, halting any pending email deliveries for the specified campaign and instance group.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback campaign whose job should be stopped.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job to stop.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job/{resourceId}/{instanceGroup}": {
      "delete": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Deletes a callback campaign job and its associated data for the specified campaign and instance group.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback campaign whose job should be deleted.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job to delete.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job/resend/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Resends the callback campaign job emails to users filtered by activity type (e.g., not opened, not clicked) for the specified campaign and instance group.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback campaign to resend.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job to resend.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The resend request containing the list of user activity types to target for resending.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobToUserResendRequest"
              },
              "example": {"types":["NoResponse"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobToUserResendRequest"
              },
              "example": {"types":["NoResponse"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobToUserResendRequest"
              },
              "example": {"types":["NoResponse"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobToUserResendRequest"
              },
              "example": {"types":["NoResponse"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job/resend/users/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Resends the callback campaign job emails to a specific set of users identified individually or by selection criteria.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback campaign to resend.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job to resend.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The resend request containing user selection criteria (individual items, select-all with exclusions, or filter-based).",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobToUsersResendRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobToUsersResendRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobToUsersResendRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobToUsersResendRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job/search/{resourceId}": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Searches and returns a paginated list of campaign job instances belonging to a specific callback campaign, with optional filtering and sorting.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the parent callback campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination parameters, frequency group filter, sort order, and optional filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"phishingCampaignFrequencyGroup":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"phishingCampaignFrequencyGroup":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"phishingCampaignFrequencyGroup":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"phishingCampaignFrequencyGroup":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job/export/{resourceId}": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Exports the list of campaign job instances for a specific callback campaign as a downloadable file in the specified format (e.g., Excel, CSV).",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the parent callback campaign to export jobs for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The export request containing pagination, filters, export type, frequency group, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobExportRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","phishingCampaignFrequencyGroup":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobExportRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","phishingCampaignFrequencyGroup":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobExportRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","phishingCampaignFrequencyGroup":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobExportRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","phishingCampaignFrequencyGroup":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Export.Dto.ExportServiceResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job-report/summary/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Retrieves the summary details for a callback campaign job, including statistics on email delivery, opens, clicks, and user responses.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job to retrieve the summary for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSummaryModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job-report/summary/target-groups/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Retrieves the target groups and a summary of their user counts for a specific callback campaign job instance.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignTargetGroupModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job-report/export/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Exports a detailed report of a callback campaign job as an Excel file, including per-user activity and response data.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job to export.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Export.Dto.ExportServiceResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job-report/{searchType}/search/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Searches and returns a paginated list of users in a callback campaign job, filtered by user search type (e.g., all users, opened, clicked, reported).",
        "parameters": [
          {
            "name": "searchType",
            "in": "path",
            "description": "The type of user activity to filter by (e.g., all, email opened, link clicked, reported).",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Enums.CallbackCampaignJobUserSearchType"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination parameters, sort order, activity type, and optional filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUsersSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastSendingTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUsersSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastSendingTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUsersSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastSendingTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUsersSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastSendingTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUsersSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job-report/{searchType}/search/export/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Exports the list of users in a callback campaign job as a downloadable file, filtered by user search type and activity.",
        "parameters": [
          {
            "name": "searchType",
            "in": "path",
            "description": "The type of user activity to filter by (e.g., all, email opened, link clicked, reported).",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Enums.CallbackCampaignJobUserSearchType"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The export request containing pagination, filters, export format, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Export.Dto.ExportServiceResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job-report/search-email-opened/{resourceId}": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Searches and returns detailed email open event records for a specific user in a callback campaign job.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination parameters, activity type, and optional filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastSendingTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastSendingTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastSendingTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastSendingTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUserEmailSearchOpenedModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job-report/search-email-reported/{resourceId}": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Searches and returns detailed email reported event records for a specific user in a callback campaign job.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination parameters and optional filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastSendingTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastSendingTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastSendingTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LastSendingTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUserSearchEmailReportedModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/campaign-job-report/search-email-activity/{resourceId}": {
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Retrieves the full email activity trail for a specific user in a callback campaign, showing delivery, open, click, and report events.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the campaign job user record to retrieve activity for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.EmailEventInfoModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/email-template": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Creates a new email template for the callback phishing simulator with click-only category and callback phishing type.",
        "requestBody": {
          "description": "The email template creation payload containing subject, body HTML, sender details, and optional attachment.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackEmailTemplateCreateRequest"
              },
              "example": {"name":"IT Support Callback Template","description":"Callback email template simulating IT helpdesk communication","difficultyResourceId":"Df3Kp8mR7xLv","languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["callback","helpdesk"],"subject":"Action Required: Verify Your Account","fromName":"IT Support","fromAddress":"it-support@example.com","template":"<html><body><p>Please call us to verify your account.</p></body></html>","isPhishingFileModified":false,"isDuplicated":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackEmailTemplateCreateRequest"
              },
              "example": {"name":"IT Support Callback Template","description":"Callback email template simulating IT helpdesk communication","difficultyResourceId":"Df3Kp8mR7xLv","languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["callback","helpdesk"],"subject":"Action Required: Verify Your Account","fromName":"IT Support","fromAddress":"it-support@example.com","template":"<html><body><p>Please call us to verify your account.</p></body></html>","isPhishingFileModified":false,"isDuplicated":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackEmailTemplateCreateRequest"
              },
              "example": {"name":"IT Support Callback Template","description":"Callback email template simulating IT helpdesk communication","difficultyResourceId":"Df3Kp8mR7xLv","languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["callback","helpdesk"],"subject":"Action Required: Verify Your Account","fromName":"IT Support","fromAddress":"it-support@example.com","template":"<html><body><p>Please call us to verify your account.</p></body></html>","isPhishingFileModified":false,"isDuplicated":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackEmailTemplateCreateRequest"
              },
              "example": {"name":"IT Support Callback Template","description":"Callback email template simulating IT helpdesk communication","difficultyResourceId":"Df3Kp8mR7xLv","languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["callback","helpdesk"],"subject":"Action Required: Verify Your Account","fromName":"IT Support","fromAddress":"it-support@example.com","template":"<html><body><p>Please call us to verify your account.</p></body></html>","isPhishingFileModified":false,"isDuplicated":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/email-template/{resourceId}": {
      "put": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Updates an existing email template for the callback phishing simulator, identified by its resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The email template update payload containing updated subject, body HTML, sender details, and optional attachment.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.UpdatePsEmailTemplateRequest"
              },
              "example": {"name":"Updated IT Password Reset Notice","description":"Updated phishing simulation for IT password reset notification","categoryResourceId":"Ct4Kp8mR7xLn","difficultyResourceId":"Df3Kp8mR7xLv","languageTypeResourceId":"Ln2Kp5mR7vWx","tags":["password-reset","credential-harvesting"],"subject":"Urgent: Your Password Will Expire Soon","fromName":"IT Service Desk","fromAddress":"it-support@example-corp.com","template":"<html><body><p>Your password will expire in 12 hours. <a href='{{phishing_url}}'>Click here</a> to reset it immediately.</p></body></html>","isPhishingFileModified":false,"phishingTypeId":1,"isAssistedByAI":false,"isPlainText":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.UpdatePsEmailTemplateRequest"
              },
              "example": {"name":"Updated IT Password Reset Notice","description":"Updated phishing simulation for IT password reset notification","categoryResourceId":"Ct4Kp8mR7xLn","difficultyResourceId":"Df3Kp8mR7xLv","languageTypeResourceId":"Ln2Kp5mR7vWx","tags":["password-reset","credential-harvesting"],"subject":"Urgent: Your Password Will Expire Soon","fromName":"IT Service Desk","fromAddress":"it-support@example-corp.com","template":"<html><body><p>Your password will expire in 12 hours. <a href='{{phishing_url}}'>Click here</a> to reset it immediately.</p></body></html>","isPhishingFileModified":false,"phishingTypeId":1,"isAssistedByAI":false,"isPlainText":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.UpdatePsEmailTemplateRequest"
              },
              "example": {"name":"Updated IT Password Reset Notice","description":"Updated phishing simulation for IT password reset notification","categoryResourceId":"Ct4Kp8mR7xLn","difficultyResourceId":"Df3Kp8mR7xLv","languageTypeResourceId":"Ln2Kp5mR7vWx","tags":["password-reset","credential-harvesting"],"subject":"Urgent: Your Password Will Expire Soon","fromName":"IT Service Desk","fromAddress":"it-support@example-corp.com","template":"<html><body><p>Your password will expire in 12 hours. <a href='{{phishing_url}}'>Click here</a> to reset it immediately.</p></body></html>","isPhishingFileModified":false,"phishingTypeId":1,"isAssistedByAI":false,"isPlainText":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.UpdatePsEmailTemplateRequest"
              },
              "example": {"name":"Updated IT Password Reset Notice","description":"Updated phishing simulation for IT password reset notification","categoryResourceId":"Ct4Kp8mR7xLn","difficultyResourceId":"Df3Kp8mR7xLv","languageTypeResourceId":"Ln2Kp5mR7vWx","tags":["password-reset","credential-harvesting"],"subject":"Urgent: Your Password Will Expire Soon","fromName":"IT Service Desk","fromAddress":"it-support@example-corp.com","template":"<html><body><p>Your password will expire in 12 hours. <a href='{{phishing_url}}'>Click here</a> to reset it immediately.</p></body></html>","isPhishingFileModified":false,"phishingTypeId":1,"isAssistedByAI":false,"isPlainText":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Retrieves the full details of an existing callback phishing email template by its unique resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.PsEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Deletes an existing callback phishing email template identified by its unique resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/email-template/bulk-delete": {
      "delete": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Deletes multiple callback phishing email templates in a single bulk operation.",
        "requestBody": {
          "description": "The bulk delete request containing a list of email template resource identifiers to delete.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/email-template/search": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Searches and returns a paginated list of callback phishing email templates for the authenticated company, with optional filtering and sorting.",
        "requestBody": {
          "description": "The search request containing pagination parameters, sort order, and optional filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.Search.PsEmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"IsPlainText","operator":"eq","value":"false"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"phishingTypeId":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.Search.PsEmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"IsPlainText","operator":"eq","value":"false"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"phishingTypeId":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.Search.PsEmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"IsPlainText","operator":"eq","value":"false"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"phishingTypeId":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.Search.PsEmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"IsPlainText","operator":"eq","value":"false"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"phishingTypeId":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CallbackTemplate.Dto.SearchCallbackTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/email-template/search/export": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Exports the list of callback phishing email templates as a downloadable file in the specified format (e.g., Excel, CSV).",
        "requestBody": {
          "description": "The export request containing pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Export.Dto.ExportServiceResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/email-template/merge-tags": {
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Retrieves the list of available merge tags that can be used in callback phishing email templates for dynamic content substitution.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/email-template/download-attachment/{resourceId}": {
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Downloads the attachment file associated with an existing callback phishing email template.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template whose attachment should be downloaded.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Export.Dto.ExportServiceResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/scenario": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Creates a new callback phishing scenario for the authenticated company, defining the landing page and response behavior for callback simulations.",
        "requestBody": {
          "description": "The scenario creation payload containing name, description, landing page configuration, and callback behavior settings.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackScenarioCreateRequest"
              },
              "example": {"name":"IT Helpdesk Callback Scenario","description":"Simulates a callback from IT helpdesk requesting password verification","languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["callback","social-engineering"],"callbackTemplateId":1,"emailTemplateId":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackScenarioCreateRequest"
              },
              "example": {"name":"IT Helpdesk Callback Scenario","description":"Simulates a callback from IT helpdesk requesting password verification","languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["callback","social-engineering"],"callbackTemplateId":1,"emailTemplateId":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackScenarioCreateRequest"
              },
              "example": {"name":"IT Helpdesk Callback Scenario","description":"Simulates a callback from IT helpdesk requesting password verification","languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["callback","social-engineering"],"callbackTemplateId":1,"emailTemplateId":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackScenarioCreateRequest"
              },
              "example": {"name":"IT Helpdesk Callback Scenario","description":"Simulates a callback from IT helpdesk requesting password verification","languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["callback","social-engineering"],"callbackTemplateId":1,"emailTemplateId":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/scenario/{resourceId}": {
      "put": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Updates an existing callback phishing scenario identified by its unique resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the scenario to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The scenario update payload containing updated name, description, landing page, and callback behavior settings.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackScenarioUpdateRequest"
              },
              "example": {"name":"Updated IT Helpdesk Callback Scenario","description":"Updated callback scenario for IT helpdesk simulation","languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["callback","social-engineering"],"callbackTemplateId":1,"emailTemplateId":2}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackScenarioUpdateRequest"
              },
              "example": {"name":"Updated IT Helpdesk Callback Scenario","description":"Updated callback scenario for IT helpdesk simulation","languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["callback","social-engineering"],"callbackTemplateId":1,"emailTemplateId":2}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackScenarioUpdateRequest"
              },
              "example": {"name":"Updated IT Helpdesk Callback Scenario","description":"Updated callback scenario for IT helpdesk simulation","languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["callback","social-engineering"],"callbackTemplateId":1,"emailTemplateId":2}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackScenarioUpdateRequest"
              },
              "example": {"name":"Updated IT Helpdesk Callback Scenario","description":"Updated callback scenario for IT helpdesk simulation","languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["callback","social-engineering"],"callbackTemplateId":1,"emailTemplateId":2}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Deletes a callback phishing scenario identified by its unique resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback scenario to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Retrieves the full details of an existing callback phishing scenario by its unique resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback scenario to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/scenario/bulk-delete": {
      "delete": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Deletes multiple callback phishing scenarios in a single bulk operation.",
        "requestBody": {
          "description": "The bulk delete request containing a list of scenario resource identifiers to delete.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/scenario/export": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Exports the callback phishing scenario list as a downloadable file in the specified format (e.g., Excel, CSV).",
        "requestBody": {
          "description": "The export request containing pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Export.Dto.ExportServiceResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/scenario/preview/{resourceId}": {
      "get": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Generates a preview of a callback phishing scenario, showing how the landing page and callback flow will appear to target users.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the callback scenario to preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioPreviewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/scenario/search": {
      "post": {
        "tags": [
          "Callback Phishing"
        ],
        "summary": "Searches and returns a paginated list of callback phishing scenarios with optional filtering, sorting, and campaign association.",
        "requestBody": {
          "description": "The search request containing pagination parameters, sort order, optional filter criteria, and optional campaign resource identifier.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/agentic-ai/activities": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Only runs when company ExecutionMode is ApprovalGated (1): saves to AgenticAIActivity (WaitingForApproval). Otherwise returns an error message.",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.CreateAgenticAIActivityRequest"
              },
              "example": {"batchResourceId":"65BVv1136Vnp","activityType":1,"scenarioResourceId":"Kp3mR5xLn7Wq","trainingResourceId":"","targetUserResourceId":"Xn8Jp2qR4mLv","targetGroupResourceId":"Qw4Rt6yU8iOp","contentCategory":"Credential Harvesting","campaignPayload":{"Name":"AI Generated Campaign","SendingType":1},"enrollmentPayload":}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.CreateAgenticAIActivityRequest"
              },
              "example": {"batchResourceId":"65BVv1136Vnp","activityType":1,"scenarioResourceId":"Kp3mR5xLn7Wq","trainingResourceId":"","targetUserResourceId":"Xn8Jp2qR4mLv","targetGroupResourceId":"Qw4Rt6yU8iOp","contentCategory":"Credential Harvesting","campaignPayload":{"Name":"AI Generated Campaign","SendingType":1},"enrollmentPayload":}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.CreateAgenticAIActivityRequest"
              },
              "example": {"batchResourceId":"65BVv1136Vnp","activityType":1,"scenarioResourceId":"Kp3mR5xLn7Wq","trainingResourceId":"","targetUserResourceId":"Xn8Jp2qR4mLv","targetGroupResourceId":"Qw4Rt6yU8iOp","contentCategory":"Credential Harvesting","campaignPayload":{"Name":"AI Generated Campaign","SendingType":1},"enrollmentPayload":}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.CreateAgenticAIActivityRequest"
              },
              "example": {"batchResourceId":"65BVv1136Vnp","activityType":1,"scenarioResourceId":"Kp3mR5xLn7Wq","trainingResourceId":"","targetUserResourceId":"Xn8Jp2qR4mLv","targetGroupResourceId":"Qw4Rt6yU8iOp","contentCategory":"Credential Harvesting","campaignPayload":{"Name":"AI Generated Campaign","SendingType":1},"enrollmentPayload":}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agentic-ai/activities/approve": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Approves multiple activities. Parses PayloadJson, creates campaigns/enrollments, and updates activity status.\r\nOnly WaitingForApproval activities are processed. Partial success is supported.",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.ApproveAgenticAIActivitiesRequest"
              },
              "example": {"resourceIds":["65BVv1136Vnp","Kp3mR5xLn7Wq"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.ApproveAgenticAIActivitiesRequest"
              },
              "example": {"resourceIds":["65BVv1136Vnp","Kp3mR5xLn7Wq"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.ApproveAgenticAIActivitiesRequest"
              },
              "example": {"resourceIds":["65BVv1136Vnp","Kp3mR5xLn7Wq"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.ApproveAgenticAIActivitiesRequest"
              },
              "example": {"resourceIds":["65BVv1136Vnp","Kp3mR5xLn7Wq"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agentic-ai/activities/reject": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Rejects multiple activities. Only WaitingForApproval activities belonging to the company are rejected.\r\nSkipped: not found, wrong company, or already not WaitingForApproval.",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.RejectAgenticAIActivitiesRequest"
              },
              "example": {"resourceIds":["65BVv1136Vnp","Kp3mR5xLn7Wq"],"declineForRetry":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.RejectAgenticAIActivitiesRequest"
              },
              "example": {"resourceIds":["65BVv1136Vnp","Kp3mR5xLn7Wq"],"declineForRetry":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.RejectAgenticAIActivitiesRequest"
              },
              "example": {"resourceIds":["65BVv1136Vnp","Kp3mR5xLn7Wq"],"declineForRetry":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.RejectAgenticAIActivitiesRequest"
              },
              "example": {"resourceIds":["65BVv1136Vnp","Kp3mR5xLn7Wq"],"declineForRetry":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agentic-ai/activities/{resourceId}": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Gets a single activity detail by ResourceId",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agentic-ai/batch/{batchResourceId}": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Gets all activities in a batch with their details",
        "parameters": [
          {
            "name": "batchResourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agentic-ai/batch/approve": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Approves all WaitingForApproval activities in a batch. Parses PayloadJson, creates campaigns/enrollments, and updates activity status.",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AgenticAI.Dto.ApproveBatchRequest"
              },
              "example": {"batchResourceId":"Bt7Kp2mR9xLn"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AgenticAI.Dto.ApproveBatchRequest"
              },
              "example": {"batchResourceId":"Bt7Kp2mR9xLn"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AgenticAI.Dto.ApproveBatchRequest"
              },
              "example": {"batchResourceId":"Bt7Kp2mR9xLn"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AgenticAI.Dto.ApproveBatchRequest"
              },
              "example": {"batchResourceId":"Bt7Kp2mR9xLn"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agentic-ai/batch/reject": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Rejects all WaitingForApproval activities in a batch.",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AgenticAI.Dto.RejectBatchRequest"
              },
              "example": {"batchResourceId":"Bt7Kp2mR9xLn","declineForRetry":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AgenticAI.Dto.RejectBatchRequest"
              },
              "example": {"batchResourceId":"Bt7Kp2mR9xLn","declineForRetry":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AgenticAI.Dto.RejectBatchRequest"
              },
              "example": {"batchResourceId":"Bt7Kp2mR9xLn","declineForRetry":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AgenticAI.Dto.RejectBatchRequest"
              },
              "example": {"batchResourceId":"Bt7Kp2mR9xLn","declineForRetry":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agentic-ai/activities/stats": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Returns activity status distribution (WaitingForApproval, Approved, Rejected, Executed, Error)\r\nfor the last 24 hours, last 7 days, and last 30 days.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agentic-ai/activities/search": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Search and filter Agentic AI activities with pagination.\r\nWhen IsGroupedByBatch is true, results are grouped by BatchResourceId sorted by the most recent activity's CreateTime descending.\r\nPagination is always at activity level (PageSize = 10 means 10 activities, which may span multiple batches).",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.AgenticAIActivitySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"isGroupedByBatch":false,"includeAutonomous":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.AgenticAIActivitySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"isGroupedByBatch":false,"includeAutonomous":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.AgenticAIActivitySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"isGroupedByBatch":false,"includeAutonomous":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.AgenticAIActivitySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"isGroupedByBatch":false,"includeAutonomous":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agentic-ai/tasks": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Creates a new scheduled AI task definition.",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.CreateAgenticAITaskRequest"
              },
              "example": {"name":"IT Department Weekly Phishing","activityType":1,"targetGroupResourceId":"Cp4Wn8mT2xRv","contentCategory":"Social Engineering","difficultyLevel":2,"languageCode":"en","frequencyType":2,"schedule":"2026-10-26 09:00:00","scheduledDateTimeZoneId":"Europe/Istanbul","isRegionAwareTimeZone":true,"maxOccurrences":52,"endDate":"2027-10-26 09:00:00"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.CreateAgenticAITaskRequest"
              },
              "example": {"name":"IT Department Weekly Phishing","activityType":1,"targetGroupResourceId":"Cp4Wn8mT2xRv","contentCategory":"Social Engineering","difficultyLevel":2,"languageCode":"en","frequencyType":2,"schedule":"2026-10-26 09:00:00","scheduledDateTimeZoneId":"Europe/Istanbul","isRegionAwareTimeZone":true,"maxOccurrences":52,"endDate":"2027-10-26 09:00:00"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.CreateAgenticAITaskRequest"
              },
              "example": {"name":"IT Department Weekly Phishing","activityType":1,"targetGroupResourceId":"Cp4Wn8mT2xRv","contentCategory":"Social Engineering","difficultyLevel":2,"languageCode":"en","frequencyType":2,"schedule":"2026-10-26 09:00:00","scheduledDateTimeZoneId":"Europe/Istanbul","isRegionAwareTimeZone":true,"maxOccurrences":52,"endDate":"2027-10-26 09:00:00"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.CreateAgenticAITaskRequest"
              },
              "example": {"name":"IT Department Weekly Phishing","activityType":1,"targetGroupResourceId":"Cp4Wn8mT2xRv","contentCategory":"Social Engineering","difficultyLevel":2,"languageCode":"en","frequencyType":2,"schedule":"2026-10-26 09:00:00","scheduledDateTimeZoneId":"Europe/Istanbul","isRegionAwareTimeZone":true,"maxOccurrences":52,"endDate":"2027-10-26 09:00:00"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.BaseResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.BaseResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/agentic-ai/tasks/{resourceId}": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Gets a single scheduled task detail by ResourceId.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.BaseResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.BaseResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Soft-deletes a scheduled task by ResourceId. Sets status to Cancelled.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.BaseResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.BaseResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.BaseResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.BaseResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/agentic-ai/tasks/search": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Searches scheduled AI tasks with pagination, filtering, and sorting.",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.AgenticAITaskSearchRequest"
              },
              "example": {"filter":{"condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Status","operator":"=","value":"Active"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.AgenticAITaskSearchRequest"
              },
              "example": {"filter":{"condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Status","operator":"=","value":"Active"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.AgenticAITaskSearchRequest"
              },
              "example": {"filter":{"condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Status","operator":"=","value":"Active"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AgenticAI.AgenticAITaskSearchRequest"
              },
              "example": {"filter":{"condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Status","operator":"=","value":"Active"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.BaseResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/agentic-ai/tasks/{resourceId}/runs": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Gets the run history for a specific scheduled task.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.BaseResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.BaseResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/settings/usage": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the callback phone number usage statistics for the current company, including allocated and consumed phone number quotas.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackUsageModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/settings/search/export": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Exports the company's callback phone number pool to a downloadable file in the requested format (CSV, Excel, etc.).",
        "requestBody": {
          "description": "Export criteria including pagination, filter, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Export.Dto.ExportServiceResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/settings/search": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Searches and retrieves a paginated list of callback phone numbers in the company's pool with optional filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination and optional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCompanyPoolSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"FreeOnDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCompanyPoolSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"FreeOnDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCompanyPoolSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"FreeOnDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCompanyPoolSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"FreeOnDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackSearchCompanyPoolModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/settings/map-numbers": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Maps (assigns) one or more provider phone numbers to the company's callback phone pool for use in callback phishing simulations.",
        "requestBody": {
          "description": "A list of provider phone number identifiers to map to the company.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/settings/exchange-number/{oldProviderNumberId}/{newProviderNumberId}": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Exchanges (swaps) one callback phone number for another in the company's pool, replacing the old number with a new one from the available pool.",
        "parameters": [
          {
            "name": "oldProviderNumberId",
            "in": "path",
            "description": "The provider number identifier of the phone number to replace.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "newProviderNumberId",
            "in": "path",
            "description": "The provider number identifier of the new phone number to assign.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/settings/available-numbers": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the list of available (unassigned) callback phone numbers that can be mapped to the company's pool.",
        "parameters": [
          {
            "name": "companyResourceId",
            "in": "query",
            "description": "Optional company resource identifier to filter available numbers for a specific company.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackNumberAvailableModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/callback-simulator/settings/number-delete/{numberId}": {
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Deletes a callback phone number from the company's pool, returning it to the available numbers for reassignment.",
        "parameters": [
          {
            "name": "numberId",
            "in": "path",
            "description": "The internal numeric identifier of the phone number to delete.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Creates a new company (tenant) in the platform with the specified name, license, and configuration details.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "CountryResourceId",
                  "DateFormat",
                  "IndustryResourceId",
                  "LicensePeriodTypeResourceId",
                  "LicenseTypeResourceId",
                  "Name",
                  "NumberOfUsers",
                  "TimeFormat",
                  "TimeZoneId"
                ],
                "type": "object",
                "properties": {
                  "File": {
                    "type": "string",
                    "description": "Company logo image file to upload.",
                    "format": "binary"
                  },
                  "Name": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Display name of the company. Required. Maximum 64 characters."
                  },
                  "Description": {
                    "maxLength": 300,
                    "type": "string",
                    "description": "Brief description of the company. Maximum 300 characters."
                  },
                  "IndustryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the company's industry. Required."
                  },
                  "CountryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the company's country. Required."
                  },
                  "Address": {
                    "maxLength": 200,
                    "type": "string",
                    "description": "Physical address of the company. Maximum 200 characters."
                  },
                  "WebsiteUrl": {
                    "maxLength": 2000,
                    "type": "string",
                    "description": "Company website URL. Maximum 2000 characters."
                  },
                  "LicenseTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the license type assigned to the company. Required."
                  },
                  "LicenseModuleResourceIdArray": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Array of resource identifiers for the licensed modules available to the company."
                  },
                  "LicensePeriodTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the license period type (e.g., monthly, yearly). Required."
                  },
                  "LicenseStartDate": {
                    "type": "string",
                    "description": "Start date of the license period.",
                    "format": "date-time"
                  },
                  "LicenseEndDate": {
                    "type": "string",
                    "description": "End date of the license period.",
                    "format": "date-time"
                  },
                  "IsNumberOfUsersLimited": {
                    "type": "boolean",
                    "description": "Whether the company has a limit on the number of users."
                  },
                  "NumberOfUsers": {
                    "type": "integer",
                    "description": "Maximum number of users allowed under the license. Required.",
                    "format": "int32"
                  },
                  "NotificationTemplateTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier for the notification template type preference."
                  },
                  "TrainingContentTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier for the training content type preference."
                  },
                  "SmtpConfigurationTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier for the SMTP configuration type preference."
                  },
                  "PreferredLanguageTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier for the company's preferred language."
                  },
                  "IsVersionVisible": {
                    "type": "boolean",
                    "description": "Whether the platform version number is visible to the company's users."
                  },
                  "IsReleaseNotesVisible": {
                    "type": "boolean",
                    "description": "Whether the release notes section is visible to the company's users."
                  },
                  "ReleaseNotesUrl": {
                    "maxLength": 2000,
                    "type": "string",
                    "description": "URL pointing to the release notes page. Maximum 2000 characters."
                  },
                  "CompanyGroupResourceIdArray": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Array of resource identifiers for the company groups this company belongs to."
                  },
                  "BaseManHourCost": {
                    "type": "integer",
                    "description": "Base cost per man-hour used in ROI calculations. Defaults to 20.",
                    "format": "int32"
                  },
                  "BaseManHour": {
                    "type": "integer",
                    "description": "Base number of man-hours used for ROI calculations. Defaults to 100.",
                    "format": "int32"
                  },
                  "StatusId": {
                    "type": "integer",
                    "description": "Status identifier for the company (e.g., active, inactive).",
                    "format": "int32"
                  },
                  "TimeZoneId": {
                    "type": "string",
                    "description": "IANA time zone identifier for the company (e.g., \"Europe/Istanbul\"). Required."
                  },
                  "DateFormat": {
                    "type": "string",
                    "description": "Date format preference for the company. Required. Defaults to \"DD/MM/YYYY\"."
                  },
                  "TimeFormat": {
                    "type": "string",
                    "description": "Time format preference for the company (e.g., \"24h\", \"12h\"). Required. Defaults to \"24h\"."
                  },
                  "CallBackNumberBookingCount": {
                    "type": "integer",
                    "description": "Number of callback phone numbers the company can book for vishing campaigns.",
                    "format": "int32"
                  },
                  "Tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of tags associated with the company for categorization."
                  },
                  "RegionCode": {
                    "maxLength": 40,
                    "type": "string",
                    "description": "Optional data-residency region code (Azure region slug, e.g., \"canadacentral\",\r\n\"germanywestcentral\"). When set, the company's TargetUser PII is dual-written\r\nto the regional database configured under RegionalDatabases:{RegionCode}.\r\nLeave null/empty for central-only storage. Maximum 40 characters.\r\nRoot-only: a non-root caller supplying a RegionCode is rejected (403);\r\nregion assignment is a Root-only act (same as POST .../sovereignty/migrate)."
                  }
                }
              },
              "example": {
                "Name": "Acme Corporation",
                "Description": "Global cybersecurity awareness training provider",
                "IndustryResourceId": "In4Dp7vR2mNx",
                "CountryResourceId": "Ct5Rp8nK3wLm",
                "Address": "123 Security Blvd, Suite 400, San Francisco, CA 94105",
                "WebsiteUrl": "https://www.acmecorp.com",
                "LicenseTypeResourceId": "Lt6Kn9mR4xWp",
                "LicenseModuleResourceIdArray": [
                  "Lm7Rp3nK5wVx",
                  "Lm8Wn4xK6pRv"
                ],
                "LicensePeriodTypeResourceId": "Lp9Rm5nT7vKx",
                "LicenseStartDate": "2026-01-01T00:00:00Z",
                "LicenseEndDate": "2027-01-01T00:00:00Z",
                "IsNumberOfUsersLimited": true,
                "NumberOfUsers": 500,
                "NotificationTemplateTypeResourceId": "Nt2Wm6xK8pRv",
                "TrainingContentTypeResourceId": "Tc3Rn7vL9mKw",
                "SmtpConfigurationTypeResourceId": "Sc4Wp8nR2xLm",
                "PreferredLanguageTypeResourceId": "Pl5Kn9mR3vWx",
                "IsVersionVisible": true,
                "IsReleaseNotesVisible": true,
                "ReleaseNotesUrl": "https://www.acmecorp.com/release-notes",
                "CompanyGroupResourceIdArray": [
                  "Cg6Rp2nK4wLm"
                ],
                "BaseManHourCost": 25,
                "BaseManHour": 120,
                "StatusId": 1,
                "TimeZoneId": "America/New_York",
                "DateFormat": "MM/DD/YYYY",
                "TimeFormat": "12h",
                "CallBackNumberBookingCount": 5,
                "Tags": [
                  "enterprise",
                  "north-america"
                ],
                "RegionCode": "canadacentral"
              },
              "encoding": {
                "File": {
                  "style": "form"
                },
                "Name": {
                  "style": "form"
                },
                "Description": {
                  "style": "form"
                },
                "IndustryResourceId": {
                  "style": "form"
                },
                "CountryResourceId": {
                  "style": "form"
                },
                "Address": {
                  "style": "form"
                },
                "WebsiteUrl": {
                  "style": "form"
                },
                "LicenseTypeResourceId": {
                  "style": "form"
                },
                "LicenseModuleResourceIdArray": {
                  "style": "form"
                },
                "LicensePeriodTypeResourceId": {
                  "style": "form"
                },
                "LicenseStartDate": {
                  "style": "form"
                },
                "LicenseEndDate": {
                  "style": "form"
                },
                "IsNumberOfUsersLimited": {
                  "style": "form"
                },
                "NumberOfUsers": {
                  "style": "form"
                },
                "NotificationTemplateTypeResourceId": {
                  "style": "form"
                },
                "TrainingContentTypeResourceId": {
                  "style": "form"
                },
                "SmtpConfigurationTypeResourceId": {
                  "style": "form"
                },
                "PreferredLanguageTypeResourceId": {
                  "style": "form"
                },
                "IsVersionVisible": {
                  "style": "form"
                },
                "IsReleaseNotesVisible": {
                  "style": "form"
                },
                "ReleaseNotesUrl": {
                  "style": "form"
                },
                "CompanyGroupResourceIdArray": {
                  "style": "form"
                },
                "BaseManHourCost": {
                  "style": "form"
                },
                "BaseManHour": {
                  "style": "form"
                },
                "StatusId": {
                  "style": "form"
                },
                "TimeZoneId": {
                  "style": "form"
                },
                "DateFormat": {
                  "style": "form"
                },
                "TimeFormat": {
                  "style": "form"
                },
                "CallBackNumberBookingCount": {
                  "style": "form"
                },
                "Tags": {
                  "style": "form"
                },
                "RegionCode": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/{resourceId}": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves a company's full details by its unique resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the company.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.CompanyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Updates an existing company's details such as name, license, contact information, and branding.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the company to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "CountryResourceId",
                  "DateFormat",
                  "IndustryResourceId",
                  "LicensePeriodTypeResourceId",
                  "LicenseTypeResourceId",
                  "Name",
                  "NumberOfUsers",
                  "TimeFormat",
                  "TimeZoneId"
                ],
                "type": "object",
                "properties": {
                  "File": {
                    "type": "string",
                    "description": "Company logo image file to upload.",
                    "format": "binary"
                  },
                  "LogoUrl": {
                    "type": "string",
                    "description": "URL of the existing company logo. Used when no new file is uploaded."
                  },
                  "Name": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Display name of the company. Required. Maximum 64 characters."
                  },
                  "Description": {
                    "maxLength": 300,
                    "type": "string",
                    "description": "Brief description of the company. Maximum 300 characters."
                  },
                  "IndustryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the company's industry. Required."
                  },
                  "CountryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the company's country. Required."
                  },
                  "Address": {
                    "maxLength": 200,
                    "type": "string",
                    "description": "Physical address of the company. Maximum 200 characters."
                  },
                  "WebsiteUrl": {
                    "maxLength": 2000,
                    "type": "string",
                    "description": "Company website URL. Maximum 2000 characters."
                  },
                  "LicenseTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the license type assigned to the company. Required."
                  },
                  "LicenseModuleResourceIdArray": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Array of resource identifiers for the licensed modules available to the company."
                  },
                  "LicensePeriodTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the license period type (e.g., monthly, yearly). Required."
                  },
                  "LicenseStartDate": {
                    "type": "string",
                    "description": "Start date of the license period.",
                    "format": "date-time"
                  },
                  "LicenseEndDate": {
                    "type": "string",
                    "description": "End date of the license period.",
                    "format": "date-time"
                  },
                  "IsNumberOfUsersLimited": {
                    "type": "boolean",
                    "description": "Whether the company has a limit on the number of users."
                  },
                  "NumberOfUsers": {
                    "type": "integer",
                    "description": "Maximum number of users allowed under the license. Required.",
                    "format": "int32"
                  },
                  "NotificationTemplateTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier for the notification template type preference."
                  },
                  "TrainingContentTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier for the training content type preference."
                  },
                  "SmtpConfigurationTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier for the SMTP configuration type preference."
                  },
                  "PreferredLanguageTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier for the company's preferred language."
                  },
                  "IsVersionVisible": {
                    "type": "boolean",
                    "description": "Whether the platform version number is visible to the company's users."
                  },
                  "IsReleaseNotesVisible": {
                    "type": "boolean",
                    "description": "Whether the release notes section is visible to the company's users."
                  },
                  "ReleaseNotesUrl": {
                    "maxLength": 2000,
                    "type": "string",
                    "description": "URL pointing to the release notes page. Maximum 2000 characters."
                  },
                  "CompanyGroupResourceIdArray": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Array of resource identifiers for the company groups this company belongs to."
                  },
                  "StatusId": {
                    "type": "integer",
                    "description": "Status identifier for the company (e.g., active, inactive).",
                    "format": "int32"
                  },
                  "TimeZoneId": {
                    "type": "string",
                    "description": "IANA time zone identifier for the company (e.g., \"Europe/Istanbul\"). Required."
                  },
                  "DateFormat": {
                    "type": "string",
                    "description": "Date format preference for the company (e.g., \"DD/MM/YYYY\"). Required."
                  },
                  "TimeFormat": {
                    "type": "string",
                    "description": "Time format preference for the company (e.g., \"24h\", \"12h\"). Required."
                  },
                  "CallBackNumberBookingCount": {
                    "type": "integer",
                    "description": "Number of callback phone numbers the company can book for vishing campaigns.",
                    "format": "int32"
                  },
                  "Tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of tags associated with the company for categorization."
                  }
                }
              },
              "example": {
                "LogoUrl": "https://cdn.acmecorp.com/logos/acme-logo.png",
                "Name": "Acme Corporation",
                "Description": "Leading cybersecurity awareness and training platform",
                "IndustryResourceId": "In4Dp7vR2mNx",
                "CountryResourceId": "Ct5Rp8nK3wLm",
                "Address": "456 Cyber Ave, Suite 800, New York, NY 10001",
                "WebsiteUrl": "https://www.acmecorp.com",
                "LicenseTypeResourceId": "Lt6Kn9mR4xWp",
                "LicenseModuleResourceIdArray": [
                  "Lm7Rp3nK5wVx",
                  "Lm8Wn4xK6pRv"
                ],
                "LicensePeriodTypeResourceId": "Lp9Rm5nT7vKx",
                "LicenseStartDate": "2026-01-01T00:00:00Z",
                "LicenseEndDate": "2027-01-01T00:00:00Z",
                "IsNumberOfUsersLimited": true,
                "NumberOfUsers": 750,
                "NotificationTemplateTypeResourceId": "Nt2Wm6xK8pRv",
                "TrainingContentTypeResourceId": "Tc3Rn7vL9mKw",
                "SmtpConfigurationTypeResourceId": "Sc4Wp8nR2xLm",
                "PreferredLanguageTypeResourceId": "Pl5Kn9mR3vWx",
                "IsVersionVisible": true,
                "IsReleaseNotesVisible": true,
                "ReleaseNotesUrl": "https://www.acmecorp.com/release-notes",
                "CompanyGroupResourceIdArray": [
                  "Cg6Rp2nK4wLm"
                ],
                "StatusId": 1,
                "TimeZoneId": "America/New_York",
                "DateFormat": "MM/DD/YYYY",
                "TimeFormat": "12h",
                "CallBackNumberBookingCount": 10,
                "Tags": [
                  "enterprise",
                  "north-america",
                  "premium"
                ]
              },
              "encoding": {
                "File": {
                  "style": "form"
                },
                "LogoUrl": {
                  "style": "form"
                },
                "Name": {
                  "style": "form"
                },
                "Description": {
                  "style": "form"
                },
                "IndustryResourceId": {
                  "style": "form"
                },
                "CountryResourceId": {
                  "style": "form"
                },
                "Address": {
                  "style": "form"
                },
                "WebsiteUrl": {
                  "style": "form"
                },
                "LicenseTypeResourceId": {
                  "style": "form"
                },
                "LicenseModuleResourceIdArray": {
                  "style": "form"
                },
                "LicensePeriodTypeResourceId": {
                  "style": "form"
                },
                "LicenseStartDate": {
                  "style": "form"
                },
                "LicenseEndDate": {
                  "style": "form"
                },
                "IsNumberOfUsersLimited": {
                  "style": "form"
                },
                "NumberOfUsers": {
                  "style": "form"
                },
                "NotificationTemplateTypeResourceId": {
                  "style": "form"
                },
                "TrainingContentTypeResourceId": {
                  "style": "form"
                },
                "SmtpConfigurationTypeResourceId": {
                  "style": "form"
                },
                "PreferredLanguageTypeResourceId": {
                  "style": "form"
                },
                "IsVersionVisible": {
                  "style": "form"
                },
                "IsReleaseNotesVisible": {
                  "style": "form"
                },
                "ReleaseNotesUrl": {
                  "style": "form"
                },
                "CompanyGroupResourceIdArray": {
                  "style": "form"
                },
                "StatusId": {
                  "style": "form"
                },
                "TimeZoneId": {
                  "style": "form"
                },
                "DateFormat": {
                  "style": "form"
                },
                "TimeFormat": {
                  "style": "form"
                },
                "CallBackNumberBookingCount": {
                  "style": "form"
                },
                "Tags": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Permanently deletes a company and all its associated data by resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the company to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/getcompany/{companyId}": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Returns the company's date and time format settings as a Tuple(DateFormat, TimeFormat).",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Tuple`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/{resourceId}/logo": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the company's logo image file by resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the company.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCompanyLogoServiceResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/limited": {
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Performs a limited update on company properties that non-admin users are allowed to modify, such as display name and contact info.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "CountryResourceId",
                  "IndustryResourceId",
                  "Name",
                  "ResourceId"
                ],
                "type": "object",
                "properties": {
                  "File": {
                    "type": "string",
                    "description": "Company logo image file to upload.",
                    "format": "binary"
                  },
                  "Name": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Display name of the company. Required. Maximum 64 characters."
                  },
                  "Description": {
                    "maxLength": 300,
                    "type": "string",
                    "description": "Brief description of the company. Maximum 300 characters."
                  },
                  "IndustryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the company's industry. Required."
                  },
                  "CountryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the company's country. Required."
                  },
                  "Address": {
                    "maxLength": 200,
                    "type": "string",
                    "description": "Physical address of the company. Maximum 200 characters."
                  },
                  "WebsiteUrl": {
                    "maxLength": 2000,
                    "type": "string",
                    "description": "Company website URL. Maximum 2000 characters."
                  },
                  "PreferredLanguageTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier for the company's preferred language."
                  },
                  "TimeZoneId": {
                    "type": "string",
                    "description": "IANA time zone identifier for the company (e.g., \"Europe/Istanbul\")."
                  },
                  "ResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the company being updated. Required."
                  }
                }
              },
              "example": {
                "Name": "Acme Corporation",
                "Description": "Global cybersecurity awareness training provider",
                "IndustryResourceId": "In4Dp7vR2mNx",
                "CountryResourceId": "Ct5Rp8nK3wLm",
                "Address": "123 Security Blvd, Suite 400, San Francisco, CA 94105",
                "WebsiteUrl": "https://www.acmecorp.com",
                "PreferredLanguageTypeResourceId": "Pl5Kn9mR3vWx",
                "TimeZoneId": "Europe/London",
                "ResourceId": "Hs7Kp2mR4xLn"
              },
              "encoding": {
                "File": {
                  "style": "form"
                },
                "Name": {
                  "style": "form"
                },
                "Description": {
                  "style": "form"
                },
                "IndustryResourceId": {
                  "style": "form"
                },
                "CountryResourceId": {
                  "style": "form"
                },
                "Address": {
                  "style": "form"
                },
                "WebsiteUrl": {
                  "style": "form"
                },
                "PreferredLanguageTypeResourceId": {
                  "style": "form"
                },
                "TimeZoneId": {
                  "style": "form"
                },
                "ResourceId": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/search": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Searches and retrieves a paginated list of companies with optional filtering, sorting, and clustering support.",
        "requestBody": {
          "description": "Search criteria including pagination, filter, clustering, and target user count limit flags.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.CompanySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"isClustered":false,"isTargetUserCountExceededLimit":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.CompanySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"isClustered":false,"isTargetUserCountExceededLimit":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.CompanySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"isClustered":false,"isTargetUserCountExceededLimit":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.CompanySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"isClustered":false,"isTargetUserCountExceededLimit":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.CustomCompanyPagedResults`1[[KeepnetLabs.ApplicationService.Company.Dto.SearchCompanyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/search/export": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Exports the filtered list of companies to a downloadable file in the requested format (CSV, Excel, etc.).",
        "requestBody": {
          "description": "Export criteria including pagination, filter, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.CompanyExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","isTargetUserCountExceededLimit":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.CompanyExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","isTargetUserCountExceededLimit":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.CompanyExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","isTargetUserCountExceededLimit":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.CompanyExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","isTargetUserCountExceededLimit":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/companies/roi-settings": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the ROI (Return on Investment) settings for the current user's company, including cost-per-incident and breach-probability values.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.RoiSettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Updates the ROI settings for the current user's company, allowing customization of cost-per-incident and breach-probability values used in risk calculations.",
        "requestBody": {
          "description": "The updated ROI settings payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.UpdateRoiSettingsRequest"
              },
              "example": {"baseManHourCost":20,"baseManHour":100}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.UpdateRoiSettingsRequest"
              },
              "example": {"baseManHourCost":20,"baseManHour":100}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.UpdateRoiSettingsRequest"
              },
              "example": {"baseManHourCost":20,"baseManHour":100}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.UpdateRoiSettingsRequest"
              },
              "example": {"baseManHourCost":20,"baseManHour":100}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/my": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the list of companies accessible to the current authenticated user, typically used for company-switching in multi-tenant scenarios.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Company.Dto.GetMyCompaniesDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/get-with-groups": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves a list of company resource identifiers that belong to the specified company groups.",
        "requestBody": {
          "description": "A request containing a list of company group resource identifiers to look up.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.GetCompaniesByGroupResourceIdsRequest"
              },
              "example": {"companyGroupResourceIds":["Cg5Wn3mR8vTp"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.GetCompaniesByGroupResourceIdsRequest"
              },
              "example": {"companyGroupResourceIds":["Cg5Wn3mR8vTp"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.GetCompaniesByGroupResourceIdsRequest"
              },
              "example": {"companyGroupResourceIds":["Cg5Wn3mR8vTp"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.GetCompaniesByGroupResourceIdsRequest"
              },
              "example": {"companyGroupResourceIds":["Cg5Wn3mR8vTp"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/community-companies": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves a list of companies from communities that the current user's company is a member of, enabling cross-community collaboration.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCommunityCompaniesDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/{resourceId}/license-check": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Checks the license status and validity for a specific company, including active module entitlements and expiration dates.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the company whose license to check.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.CheckCompanyLicenseDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/clients": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Creates a new REST API client (OAuth2 credentials) for the company, enabling programmatic access to the platform API.",
        "requestBody": {
          "description": "The client creation payload including name, description, and allowed scopes.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.CreateClientRequest"
              },
              "example": {"name":"API Integration Client","clientId":"api-client-01","clientSecret":"***","statusId":1,"hasIpAddressRestriction":false,"allowedIpAddresses":[],"roleResourceIdList":["Hs7Kp2mR4xLn"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.CreateClientRequest"
              },
              "example": {"name":"API Integration Client","clientId":"api-client-01","clientSecret":"***","statusId":1,"hasIpAddressRestriction":false,"allowedIpAddresses":[],"roleResourceIdList":["Hs7Kp2mR4xLn"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.CreateClientRequest"
              },
              "example": {"name":"API Integration Client","clientId":"api-client-01","clientSecret":"***","statusId":1,"hasIpAddressRestriction":false,"allowedIpAddresses":[],"roleResourceIdList":["Hs7Kp2mR4xLn"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.CreateClientRequest"
              },
              "example": {"name":"API Integration Client","clientId":"api-client-01","clientSecret":"***","statusId":1,"hasIpAddressRestriction":false,"allowedIpAddresses":[],"roleResourceIdList":["Hs7Kp2mR4xLn"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/clients/{resourceId}": {
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Updates an existing REST API client's configuration such as name, description, and allowed scopes.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the client to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated client details payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.UpdateClientRequest"
              },
              "example": {"name":"API Integration Client","clientId":"api-client-01","clientSecret":"***","statusId":1,"hasIpAddressRestriction":false,"allowedIpAddresses":[],"roleResourceIdList":["Hs7Kp2mR4xLn"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.UpdateClientRequest"
              },
              "example": {"name":"API Integration Client","clientId":"api-client-01","clientSecret":"***","statusId":1,"hasIpAddressRestriction":false,"allowedIpAddresses":[],"roleResourceIdList":["Hs7Kp2mR4xLn"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.UpdateClientRequest"
              },
              "example": {"name":"API Integration Client","clientId":"api-client-01","clientSecret":"***","statusId":1,"hasIpAddressRestriction":false,"allowedIpAddresses":[],"roleResourceIdList":["Hs7Kp2mR4xLn"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.UpdateClientRequest"
              },
              "example": {"name":"API Integration Client","clientId":"api-client-01","clientSecret":"***","statusId":1,"hasIpAddressRestriction":false,"allowedIpAddresses":[],"roleResourceIdList":["Hs7Kp2mR4xLn"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Deletes an existing REST API client, revoking its credentials and access to the platform API.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the client to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the details of an existing REST API client by its resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the client.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.ClientDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/get-current-time/{timeZoneId}": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the current date and time in the specified time zone, used for scheduling and display purposes.",
        "parameters": [
          {
            "name": "timeZoneId",
            "in": "path",
            "description": "The IANA or Windows time zone identifier (e.g., \"Europe/Istanbul\", \"Eastern Standard Time\").",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/clients/search": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Searches and retrieves a paginated list of REST API clients for the current company with optional filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination and optional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.SearchClientRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"ClientName","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.SearchClientRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"ClientName","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.SearchClientRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"ClientName","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.SearchClientRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"ClientName","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Company.Dto.SearchClientDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/clients/search/export": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Exports the filtered list of REST API clients to a downloadable file in the requested format (CSV, Excel, etc.).",
        "requestBody": {
          "description": "Export criteria including pagination, filter, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/companies/clients/generate-client-credentials": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Generates a new pair of client credentials (client ID and secret) for use in REST API client registrations.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.ClientCredentialDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/my/search": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Searches the list of companies accessible to the current user with pagination and filtering support.",
        "requestBody": {
          "description": "Search criteria including pagination and optional filters for company lookup.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SearchMyCompaniesRequest"
              },
              "example": {"text":"keepnet"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SearchMyCompaniesRequest"
              },
              "example": {"text":"keepnet"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SearchMyCompaniesRequest"
              },
              "example": {"text":"keepnet"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SearchMyCompaniesRequest"
              },
              "example": {"text":"keepnet"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.SearchMyCompaniesServiceRequest, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/bulk-delete": {
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Permanently deletes multiple companies in a single bulk operation.",
        "requestBody": {
          "description": "A list of company resource identifiers to delete.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.CompaniesBulkDeleteRequest"
              },
              "example": {"items":["Co3Rm8vT2nKp"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.CompaniesBulkDeleteRequest"
              },
              "example": {"items":["Co3Rm8vT2nKp"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.CompaniesBulkDeleteRequest"
              },
              "example": {"items":["Co3Rm8vT2nKp"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.CompaniesBulkDeleteRequest"
              },
              "example": {"items":["Co3Rm8vT2nKp"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/privacy": {
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Configures the privacy settings for the current company, controlling data visibility and anonymization rules for target users.",
        "requestBody": {
          "description": "The privacy settings payload including anonymization and masking preferences.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyPrivacyRequest"
              },
              "example": {"privacyDurationId":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyPrivacyRequest"
              },
              "example": {"privacyDurationId":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyPrivacyRequest"
              },
              "example": {"privacyDurationId":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyPrivacyRequest"
              },
              "example": {"privacyDurationId":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the current privacy settings for the company, including data anonymization and masking configurations.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCompanyPrivacyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/privacymask": {
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Configures the pentester mask privacy settings for the company, controlling how penetration tester data is displayed in reports.",
        "requestBody": {
          "description": "The pentester mask privacy settings payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.SetCompanyPrivacyPentesterMaskRequest"
              },
              "example": {"pentesterMasked":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.SetCompanyPrivacyPentesterMaskRequest"
              },
              "example": {"pentesterMasked":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.SetCompanyPrivacyPentesterMaskRequest"
              },
              "example": {"pentesterMasked":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.SetCompanyPrivacyPentesterMaskRequest"
              },
              "example": {"pentesterMasked":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the pentester mask privacy settings for the company, indicating how tester identities are masked in simulation reports.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCompanyPrivacyPentesterMaskDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/licenseexpirydate": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the license expiry date for a company, used for license renewal tracking and notifications.",
        "requestBody": {
          "description": "The request containing the company identifier or filter for the license check.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.GetCompanyLicenseExpiryDateRequest"
              },
              "example": {"licenseStartDate":"2026-01-01 00:00:00"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.GetCompanyLicenseExpiryDateRequest"
              },
              "example": {"licenseStartDate":"2026-01-01 00:00:00"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.GetCompanyLicenseExpiryDateRequest"
              },
              "example": {"licenseStartDate":"2026-01-01 00:00:00"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.GetCompanyLicenseExpiryDateRequest"
              },
              "example": {"licenseStartDate":"2026-01-01 00:00:00"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCompanyLicenseExpiryDateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/ai": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Configures the AI-assisted feature settings for the company, enabling or disabling AI capabilities across modules.",
        "requestBody": {
          "description": "The AI settings payload specifying which AI features are enabled.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyAISettingsRequest"
              },
              "example": {"psEmailTemplateGenerationAssistant":true,"landingPageTemplateGenerationAssistant":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyAISettingsRequest"
              },
              "example": {"psEmailTemplateGenerationAssistant":true,"landingPageTemplateGenerationAssistant":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyAISettingsRequest"
              },
              "example": {"psEmailTemplateGenerationAssistant":true,"landingPageTemplateGenerationAssistant":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyAISettingsRequest"
              },
              "example": {"psEmailTemplateGenerationAssistant":true,"landingPageTemplateGenerationAssistant":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the current AI-assisted feature settings for the company, showing which AI capabilities are enabled.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCompanyAISettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/agentic-ai": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Configures the Agentic AI settings for the company, controlling autonomous AI agent behavior and execution preferences.",
        "requestBody": {
          "description": "The Agentic AI settings payload including execution mode and behavioral policies.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyAgenticAISettingsRequest"
              },
              "example": {"agenticAIEnabled":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyAgenticAISettingsRequest"
              },
              "example": {"agenticAIEnabled":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyAgenticAISettingsRequest"
              },
              "example": {"agenticAIEnabled":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyAgenticAISettingsRequest"
              },
              "example": {"agenticAIEnabled":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the current Agentic AI settings for the company, including autonomous agent execution mode and behavioral constraints.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCompanyAgenticAISettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/agentic-ai-settings/metadata": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the static metadata for Agentic AI settings, including available execution modes and behavioral policy definitions with their descriptions and ordering.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.AgenticAIMetadataResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/agentic-ai-settings": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the company-specific Agentic AI settings, including the selected execution mode and configured behavioral policies.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.AgenticAISettingsResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Partially updates the company's Agentic AI settings. Supports selective updates to execution mode and/or behavioral policies without requiring all fields.",
        "requestBody": {
          "description": "The partial update payload containing optional execution mode and/or behavioral policy changes.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.UpdateAgenticAISettingsRequest"
              },
              "example": {"executionMode":"autonomous","behavioralPolicies":{"auto_generate_content":true,"auto_enroll_users":false,"send_notifications":true}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.UpdateAgenticAISettingsRequest"
              },
              "example": {"executionMode":"autonomous","behavioralPolicies":{"auto_generate_content":true,"auto_enroll_users":false,"send_notifications":true}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.UpdateAgenticAISettingsRequest"
              },
              "example": {"executionMode":"autonomous","behavioralPolicies":{"auto_generate_content":true,"auto_enroll_users":false,"send_notifications":true}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.UpdateAgenticAISettingsRequest"
              },
              "example": {"executionMode":"autonomous","behavioralPolicies":{"auto_generate_content":true,"auto_enroll_users":false,"send_notifications":true}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.AgenticAISettingsResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/agentic-ai-settings/reset": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Resets the company's Agentic AI settings back to platform defaults by deleting all custom configurations.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/teams-obo/authorize-link": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Generates a Microsoft Teams OBO (On-Behalf-Of) authorization URL and creates or updates the Teams integration setting for the company.",
        "requestBody": {
          "description": "The request containing the company resource identifier for Teams integration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsOboAuthorizeLinkRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsOboAuthorizeLinkRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsOboAuthorizeLinkRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsOboAuthorizeLinkRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Teams.Dto.TeamsOboAuthorizeLinkResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/companies/teams-obo/callback": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Processes the Microsoft Teams OBO callback after admin consent, exchanging the authorization code for an access token to complete the integration.\r\nReturns the standard API envelope (DataResponse).",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "description": "The authorization code returned by Microsoft identity platform.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "description": "Optional state parameter containing the company identifier for context.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/companies/teams-app/upload": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Uploads the Keepnet Teams app package to the company's Microsoft Teams tenant via the OBO flow, making it available for installation.",
        "requestBody": {
          "description": "The request containing the company resource identifier.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppUploadRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppUploadRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppUploadRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppUploadRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/teams-app/authorize-link": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Generates a Microsoft Teams app authorization URL for admin consent, required before the Teams app can be installed in the tenant.",
        "requestBody": {
          "description": "The request containing the company resource identifier.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppAuthorizeLinkRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppAuthorizeLinkRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppAuthorizeLinkRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppAuthorizeLinkRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppAuthorizeLinkResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/teams-app/check": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Checks whether the Keepnet Teams app is installed in the company's Microsoft Teams tenant and returns its current status, version, and distribution details.",
        "requestBody": {
          "description": "The request containing the company resource identifier.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppCheckRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppCheckRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppCheckRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppCheckRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppCheckResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/teams-app/callback": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Handles the Microsoft Teams app admin consent callback, processing the consent result and updating the integration status accordingly.",
        "parameters": [
          {
            "name": "admin_consent",
            "in": "query",
            "description": "Whether admin consent was granted (\"True\" or \"False\").",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "tenant",
            "in": "query",
            "description": "The Azure AD tenant identifier.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "scope",
            "in": "query",
            "description": "The granted permission scopes.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "state",
            "in": "query",
            "description": "The state parameter containing the company context.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "error",
            "in": "query",
            "description": "Error code if the consent was denied or failed.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "error_description",
            "in": "query",
            "description": "Detailed description of the consent error, if any.",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppCallbackResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/teams-app/remove": {
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Removes the Keepnet Teams app from the company's Microsoft Teams tenant and soft-deletes the integration record from the database.",
        "requestBody": {
          "description": "The request containing the company resource identifier.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppRemoveRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppRemoveRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppRemoveRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppRemoveRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/companies/teams-app/install-to-users": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Installs the Keepnet Teams app to all active target users of the specified company, enabling per-user Teams notifications and interactions.",
        "requestBody": {
          "description": "The request containing the company resource identifier.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppInstallToUsersRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppInstallToUsersRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppInstallToUsersRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppInstallToUsersRequest"
              },
              "example": {"companyResourceId":"Cm5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppInstallToUsersResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/teams-app/send-test-activity": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Sends a test Teams activity notification to a specific user to verify that the Teams integration is functioning correctly.",
        "requestBody": {
          "description": "The request containing the company resource identifier and the target user's email address.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SendTestTeamsActivityRequest"
              },
              "example": {"companyResourceId":"65BVv1136Vnp","userEmail":"admin@acmecorp.com"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SendTestTeamsActivityRequest"
              },
              "example": {"companyResourceId":"65BVv1136Vnp","userEmail":"admin@acmecorp.com"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SendTestTeamsActivityRequest"
              },
              "example": {"companyResourceId":"65BVv1136Vnp","userEmail":"admin@acmecorp.com"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.SendTestTeamsActivityRequest"
              },
              "example": {"companyResourceId":"65BVv1136Vnp","userEmail":"admin@acmecorp.com"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Teams.SendTestActivityResponseDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/company-groups": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Creates a new company group for organizing and managing multiple companies together under a shared logical grouping.",
        "requestBody": {
          "description": "The company group creation payload including group name and optional description.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.CreateCompanyGroupRequest"
              },
              "example": {"name":"EMEA Region","companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.CreateCompanyGroupRequest"
              },
              "example": {"name":"EMEA Region","companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.CreateCompanyGroupRequest"
              },
              "example": {"name":"EMEA Region","companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.CreateCompanyGroupRequest"
              },
              "example": {"name":"EMEA Region","companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the full list of all company groups available to the current user's organization.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.CompanyGroupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/company-groups/{resourceId}": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the details of a specific company group by its resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the company group.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.CompanyGroupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Updates an existing company group's details such as name and description.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the company group to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated company group details payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.UpdateCompanyGroupRequest"
              },
              "example": {"name":"EMEA Region","companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.UpdateCompanyGroupRequest"
              },
              "example": {"name":"EMEA Region","companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.UpdateCompanyGroupRequest"
              },
              "example": {"name":"EMEA Region","companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.UpdateCompanyGroupRequest"
              },
              "example": {"name":"EMEA Region","companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Permanently deletes a company group. Member companies are not deleted but lose their group association.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the company group to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/company-groups/{resourceId}/participants": {
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Adds one or more companies to a company group, establishing their membership in the group for shared operations.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the company group to add companies to.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The request containing the list of company resource identifiers to add.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.AddCompanyToCompanyGroupRequest"
              },
              "example": {"companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.AddCompanyToCompanyGroupRequest"
              },
              "example": {"companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.AddCompanyToCompanyGroupRequest"
              },
              "example": {"companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.AddCompanyToCompanyGroupRequest"
              },
              "example": {"companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Removes one or more companies from a company group, revoking their group membership.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the company group to remove companies from.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The request containing the list of company resource identifiers to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.RemoveCompanyFromCompanyGroupRequest"
              },
              "example": {"companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.RemoveCompanyFromCompanyGroupRequest"
              },
              "example": {"companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.RemoveCompanyFromCompanyGroupRequest"
              },
              "example": {"companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.RemoveCompanyFromCompanyGroupRequest"
              },
              "example": {"companyResourceIdArray":["Hs7Kp2mR4xLn","Tg8Rp4nK2wLm"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/company-groups/{resourceId}/companies/search": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Searches and retrieves a paginated list of companies that belong to a specific company group.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the company group.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination and optional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.GroupCompanySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.GroupCompanySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.GroupCompanySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.GroupCompanySearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchGroupCompanyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/company-groups/search": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Searches and retrieves a paginated list of company groups for the current company with optional filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination, filter, and report-all-pages flag.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.SearchCompanyGroupRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false,"reportAllPages":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.SearchCompanyGroupRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false,"reportAllPages":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.SearchCompanyGroupRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false,"reportAllPages":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.SearchCompanyGroupRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false,"reportAllPages":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchCompanyGroupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/company-groups/search/export": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Exports the filtered list of company groups to a downloadable file in the requested format (CSV, Excel, etc.).",
        "requestBody": {
          "description": "Export criteria including pagination, filter, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/company-groups/{resourceId}/companies/search/export": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Exports the list of companies belonging to a specific company group to a downloadable file.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the company group.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Export criteria including pagination, filter, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/company-groups/bulk-delete": {
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Permanently deletes multiple company groups in a single bulk operation. Member companies are not deleted.",
        "requestBody": {
          "description": "A list of company group resource identifiers to delete.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.CompanyGroupsBulkDeleteRequest"
              },
              "example": {"items":["Cg5Wn3mR8vTp"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.CompanyGroupsBulkDeleteRequest"
              },
              "example": {"items":["Cg5Wn3mR8vTp"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.CompanyGroupsBulkDeleteRequest"
              },
              "example": {"items":["Cg5Wn3mR8vTp"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.CompanyGroupsBulkDeleteRequest"
              },
              "example": {"items":["Cg5Wn3mR8vTp"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/company-groups/search-with-parent": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Searches company groups including those inherited from parent companies, enabling hierarchical group management across the tenant tree.",
        "requestBody": {
          "description": "Search criteria including pagination and filter.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.SearchCompanyGroupRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false,"reportAllPages":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.SearchCompanyGroupRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false,"reportAllPages":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.SearchCompanyGroupRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false,"reportAllPages":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.SearchCompanyGroupRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false,"reportAllPages":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchCompanyGroupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/ip-restrictions": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Returns the list of IP restriction rules for the current company.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.DistributedService.Rest.Models.CompanyIpRestriction.CompanyIpRestrictionResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Adds one or more IP restriction rules (single IP or CIDR range) to the current company.",
        "requestBody": {
          "description": "The IP restriction rules to add.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyIpRestriction.AddCompanyIpRestrictionRequest"
              },
              "example": {"ipRanges":["192.168.1.0/24","10.0.0.1"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyIpRestriction.AddCompanyIpRestrictionRequest"
              },
              "example": {"ipRanges":["192.168.1.0/24","10.0.0.1"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyIpRestriction.AddCompanyIpRestrictionRequest"
              },
              "example": {"ipRanges":["192.168.1.0/24","10.0.0.1"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyIpRestriction.AddCompanyIpRestrictionRequest"
              },
              "example": {"ipRanges":["192.168.1.0/24","10.0.0.1"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.DistributedService.Rest.Models.CompanyIpRestriction.CompanyIpRestrictionResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/ip-restrictions/{resourceId}": {
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Deletes an IP restriction rule from the current company.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier of the IP restriction rule to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/direct-email-settings": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Creates a new Direct Email Connector (DEC) setting for the company, enabling direct email delivery via Microsoft 365 or Google Workspace APIs instead of SMTP.",
        "requestBody": {
          "description": "The DEC creation payload including provider type (O365/Google), tenant ID, and API credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.CreateDirectEmailSettingRequest"
              },
              "example": {"name":"Office 365 Direct Email","tenantId":"b2c7e9a1-4f3d-4e8b-9c1a-5d6f7e8a9b0c","allowedDomains":["example.com","mail.example.com"],"type":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.CreateDirectEmailSettingRequest"
              },
              "example": {"name":"Office 365 Direct Email","tenantId":"b2c7e9a1-4f3d-4e8b-9c1a-5d6f7e8a9b0c","allowedDomains":["example.com","mail.example.com"],"type":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.CreateDirectEmailSettingRequest"
              },
              "example": {"name":"Office 365 Direct Email","tenantId":"b2c7e9a1-4f3d-4e8b-9c1a-5d6f7e8a9b0c","allowedDomains":["example.com","mail.example.com"],"type":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.CreateDirectEmailSettingRequest"
              },
              "example": {"name":"Office 365 Direct Email","tenantId":"b2c7e9a1-4f3d-4e8b-9c1a-5d6f7e8a9b0c","allowedDomains":["example.com","mail.example.com"],"type":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/direct-email-settings/{resourceId}": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the details of an existing Direct Email Connector setting by its resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DEC setting.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.DirectEmailSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Updates an existing Direct Email Connector setting's configuration such as API credentials, sender address, and tenant details.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DEC setting to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated DEC setting details payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.UpdateDirectEmailSettingRequest"
              },
              "example": {"name":"Office 365 Direct Email","tenantId":"b2c7e9a1-4f3d-4e8b-9c1a-5d6f7e8a9b0c","allowedDomains":["example.com","mail.example.com"],"type":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.UpdateDirectEmailSettingRequest"
              },
              "example": {"name":"Office 365 Direct Email","tenantId":"b2c7e9a1-4f3d-4e8b-9c1a-5d6f7e8a9b0c","allowedDomains":["example.com","mail.example.com"],"type":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.UpdateDirectEmailSettingRequest"
              },
              "example": {"name":"Office 365 Direct Email","tenantId":"b2c7e9a1-4f3d-4e8b-9c1a-5d6f7e8a9b0c","allowedDomains":["example.com","mail.example.com"],"type":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.UpdateDirectEmailSettingRequest"
              },
              "example": {"name":"Office 365 Direct Email","tenantId":"b2c7e9a1-4f3d-4e8b-9c1a-5d6f7e8a9b0c","allowedDomains":["example.com","mail.example.com"],"type":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Deletes an existing Direct Email Connector setting from the company's configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DEC setting to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/direct-email-settings/settings": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the default application settings for Direct Email Connectors, including supported provider types and configuration templates.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.Setting, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/direct-email-settings/search": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Searches and retrieves a paginated list of Direct Email Connector settings for the company with optional filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination and optional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.SearchDirectEmailSettingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.SearchDirectEmailSettingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.SearchDirectEmailSettingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.SearchDirectEmailSettingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/direct-email-settings/search/export": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Exports the filtered list of Direct Email Connector settings to a downloadable file in the requested format (CSV, Excel, etc.).",
        "requestBody": {
          "description": "Export criteria including pagination, filter, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/companies/direct-email-settings/test": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests connectivity and authentication of a Direct Email Connector by attempting to connect to the configured mail provider API.",
        "requestBody": {
          "description": "The DEC configuration to test including provider credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.TestDirectEmailSettingRequest"
              },
              "example": {"from":"noreply@example.com","fromName":"Keepnet Security","to":"admin@example.com","message":"This is a test email from Keepnet.","tenantId":"b2c7e9a1-4f3d-4e8b-9c1a-5d6f7e8a9b0c","type":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.TestDirectEmailSettingRequest"
              },
              "example": {"from":"noreply@example.com","fromName":"Keepnet Security","to":"admin@example.com","message":"This is a test email from Keepnet.","tenantId":"b2c7e9a1-4f3d-4e8b-9c1a-5d6f7e8a9b0c","type":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.TestDirectEmailSettingRequest"
              },
              "example": {"from":"noreply@example.com","fromName":"Keepnet Security","to":"admin@example.com","message":"This is a test email from Keepnet.","tenantId":"b2c7e9a1-4f3d-4e8b-9c1a-5d6f7e8a9b0c","type":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.TestDirectEmailSettingRequest"
              },
              "example": {"from":"noreply@example.com","fromName":"Keepnet Security","to":"admin@example.com","message":"This is a test email from Keepnet.","tenantId":"b2c7e9a1-4f3d-4e8b-9c1a-5d6f7e8a9b0c","type":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/direct-email-settings/domain-list": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the list of verified domains for a Microsoft 365 tenant, used to populate sender address options for the Direct Email Connector.",
        "requestBody": {
          "description": "The request containing tenant ID and API credentials for domain lookup.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.GetDomainListRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","tenantId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","type":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.GetDomainListRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","tenantId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","type":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.GetDomainListRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","tenantId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","type":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.GetDomainListRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","tenantId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","type":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/direct-email-settings/google-client": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the Google Workspace OAuth2 client ID used for configuring Google Workspace Direct Email Connectors.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.Setting, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/direct-email-settings/make-default/{resourceId}": {
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Sets a Direct Email Connector as the default sender for the company, used when no specific DEC is selected for a campaign.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DEC to set as default.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/direct-email-settings/remove-default/{resourceId}": {
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Removes the default status from a Direct Email Connector, so no DEC is pre-selected as the default sender.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DEC to remove from default.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/{providerName}/{resourceId}": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves an existing mail provider configuration by provider type and resource identifier. Supports O365, EWS, and Google Workspace providers.",
        "parameters": [
          {
            "name": "providerName",
            "in": "path",
            "description": "The mail provider type (e.g., O365, EWS, GoogleWorkspace).",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.ScanType"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the mail configuration.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.MailProvider.Dto.MailProviderDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/o365": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Creates a new Microsoft 365 (O365) mail provider configuration for incident response scanning, enabling mailbox access via Graph API.",
        "requestBody": {
          "description": "The O365 configuration payload including tenant ID, client ID, client secret, and scanning parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.CreateO365MailProviderRequest"
              },
              "example": {"name":"ACME O365 Mail Provider","applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","allowedDomains":["acme.com","acme.org"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.CreateO365MailProviderRequest"
              },
              "example": {"name":"ACME O365 Mail Provider","applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","allowedDomains":["acme.com","acme.org"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.CreateO365MailProviderRequest"
              },
              "example": {"name":"ACME O365 Mail Provider","applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","allowedDomains":["acme.com","acme.org"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.CreateO365MailProviderRequest"
              },
              "example": {"name":"ACME O365 Mail Provider","applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","allowedDomains":["acme.com","acme.org"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/ews": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Creates a new Exchange Web Services (EWS) mail provider configuration for incident response scanning, using on-premises or hybrid Exchange.",
        "requestBody": {
          "description": "The EWS configuration payload including server URL, authentication method, and credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.EwsMailProviderRequest"
              },
              "example": {"name":"ACME Exchange EWS Provider","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"exchangeVersionLookupResourceId":"Lk8Rn3mQ7wXp","userName":"svc-ews@acme.com","password":"ews_password_placeholder","email":"svc-ews@acme.com","xAnchorMailBoxHeader":true,"targetGroupResourceIdList":["Rn5Kp8mQ3wLx"],"isAllTargetGroupsSelected":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.EwsMailProviderRequest"
              },
              "example": {"name":"ACME Exchange EWS Provider","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"exchangeVersionLookupResourceId":"Lk8Rn3mQ7wXp","userName":"svc-ews@acme.com","password":"ews_password_placeholder","email":"svc-ews@acme.com","xAnchorMailBoxHeader":true,"targetGroupResourceIdList":["Rn5Kp8mQ3wLx"],"isAllTargetGroupsSelected":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.EwsMailProviderRequest"
              },
              "example": {"name":"ACME Exchange EWS Provider","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"exchangeVersionLookupResourceId":"Lk8Rn3mQ7wXp","userName":"svc-ews@acme.com","password":"ews_password_placeholder","email":"svc-ews@acme.com","xAnchorMailBoxHeader":true,"targetGroupResourceIdList":["Rn5Kp8mQ3wLx"],"isAllTargetGroupsSelected":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.EwsMailProviderRequest"
              },
              "example": {"name":"ACME Exchange EWS Provider","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"exchangeVersionLookupResourceId":"Lk8Rn3mQ7wXp","userName":"svc-ews@acme.com","password":"ews_password_placeholder","email":"svc-ews@acme.com","xAnchorMailBoxHeader":true,"targetGroupResourceIdList":["Rn5Kp8mQ3wLx"],"isAllTargetGroupsSelected":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/googleworkspace": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Creates a new Google Workspace mail provider configuration for incident response scanning, enabling Gmail API access via service account.",
        "requestBody": {
          "description": "The Google Workspace configuration payload including service account credentials and domain details.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.CreateGoogleWorkspaceMailProviderRequest"
              },
              "example": {"name":"ACME Google Workspace Provider","authJson":"{\"type\":\"service_account\",\"project_id\":\"acme-security\",\"private_key_id\":\"key_placeholder\"}","email":"admin@acme.com"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.CreateGoogleWorkspaceMailProviderRequest"
              },
              "example": {"name":"ACME Google Workspace Provider","authJson":"{\"type\":\"service_account\",\"project_id\":\"acme-security\",\"private_key_id\":\"key_placeholder\"}","email":"admin@acme.com"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.CreateGoogleWorkspaceMailProviderRequest"
              },
              "example": {"name":"ACME Google Workspace Provider","authJson":"{\"type\":\"service_account\",\"project_id\":\"acme-security\",\"private_key_id\":\"key_placeholder\"}","email":"admin@acme.com"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.CreateGoogleWorkspaceMailProviderRequest"
              },
              "example": {"name":"ACME Google Workspace Provider","authJson":"{\"type\":\"service_account\",\"project_id\":\"acme-security\",\"private_key_id\":\"key_placeholder\"}","email":"admin@acme.com"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves all mail provider configurations for the current company, listing all configured O365, EWS, and Google Workspace integrations.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.MailProvider.Dto.MailProviderDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/o365/{resourceId}": {
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Updates an existing Microsoft 365 (O365) mail provider configuration's settings such as tenant ID, credentials, and scanning parameters.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the O365 mail configuration to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated O365 configuration payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.UpdateO365MailProviderRequest"
              },
              "example": {"name":"ACME O365 Mail Provider (Updated)","applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_updated","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","allowedDomains":["acme.com","acme.org","acme.net"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.UpdateO365MailProviderRequest"
              },
              "example": {"name":"ACME O365 Mail Provider (Updated)","applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_updated","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","allowedDomains":["acme.com","acme.org","acme.net"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.UpdateO365MailProviderRequest"
              },
              "example": {"name":"ACME O365 Mail Provider (Updated)","applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_updated","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","allowedDomains":["acme.com","acme.org","acme.net"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.UpdateO365MailProviderRequest"
              },
              "example": {"name":"ACME O365 Mail Provider (Updated)","applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_updated","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","allowedDomains":["acme.com","acme.org","acme.net"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Deletes a Microsoft 365 (O365) mail provider configuration from the company.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the O365 mail configuration to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/ews/{resourceId}": {
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Updates an existing Exchange Web Services (EWS) mail provider configuration's settings such as server URL, authentication, and credentials.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the EWS mail configuration to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated EWS configuration payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.EwsMailProviderRequest"
              },
              "example": {"name":"ACME Exchange EWS Provider","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"exchangeVersionLookupResourceId":"Lk8Rn3mQ7wXp","userName":"svc-ews@acme.com","password":"ews_password_placeholder","email":"svc-ews@acme.com","xAnchorMailBoxHeader":true,"targetGroupResourceIdList":["Rn5Kp8mQ3wLx"],"isAllTargetGroupsSelected":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.EwsMailProviderRequest"
              },
              "example": {"name":"ACME Exchange EWS Provider","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"exchangeVersionLookupResourceId":"Lk8Rn3mQ7wXp","userName":"svc-ews@acme.com","password":"ews_password_placeholder","email":"svc-ews@acme.com","xAnchorMailBoxHeader":true,"targetGroupResourceIdList":["Rn5Kp8mQ3wLx"],"isAllTargetGroupsSelected":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.EwsMailProviderRequest"
              },
              "example": {"name":"ACME Exchange EWS Provider","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"exchangeVersionLookupResourceId":"Lk8Rn3mQ7wXp","userName":"svc-ews@acme.com","password":"ews_password_placeholder","email":"svc-ews@acme.com","xAnchorMailBoxHeader":true,"targetGroupResourceIdList":["Rn5Kp8mQ3wLx"],"isAllTargetGroupsSelected":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.EwsMailProviderRequest"
              },
              "example": {"name":"ACME Exchange EWS Provider","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"exchangeVersionLookupResourceId":"Lk8Rn3mQ7wXp","userName":"svc-ews@acme.com","password":"ews_password_placeholder","email":"svc-ews@acme.com","xAnchorMailBoxHeader":true,"targetGroupResourceIdList":["Rn5Kp8mQ3wLx"],"isAllTargetGroupsSelected":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Deletes an Exchange Web Services (EWS) mail provider configuration from the company.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the EWS mail configuration to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/googleworkspace/{resourceId}": {
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Updates an existing Google Workspace mail provider configuration's settings such as service account credentials and domain details.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the Google Workspace mail configuration to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated Google Workspace configuration payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.UpdateGoogleWorkspaceMailProviderRequest"
              },
              "example": {"name":"ACME Google Workspace Provider (Updated)","authJson":"{\"type\":\"service_account\",\"project_id\":\"acme-security\",\"private_key_id\":\"key_updated\"}","email":"admin@acme.com"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.UpdateGoogleWorkspaceMailProviderRequest"
              },
              "example": {"name":"ACME Google Workspace Provider (Updated)","authJson":"{\"type\":\"service_account\",\"project_id\":\"acme-security\",\"private_key_id\":\"key_updated\"}","email":"admin@acme.com"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.UpdateGoogleWorkspaceMailProviderRequest"
              },
              "example": {"name":"ACME Google Workspace Provider (Updated)","authJson":"{\"type\":\"service_account\",\"project_id\":\"acme-security\",\"private_key_id\":\"key_updated\"}","email":"admin@acme.com"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.UpdateGoogleWorkspaceMailProviderRequest"
              },
              "example": {"name":"ACME Google Workspace Provider (Updated)","authJson":"{\"type\":\"service_account\",\"project_id\":\"acme-security\",\"private_key_id\":\"key_updated\"}","email":"admin@acme.com"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Deletes a Google Workspace mail provider configuration from the company.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the Google Workspace mail configuration to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/search": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Searches and retrieves a paginated list of mail provider configurations for the company with optional filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination and optional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.MailProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.MailProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.MailProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.MailProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.MailProvider.Search.MailProviderSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/search/export": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Exports the filtered list of mail provider configurations to a downloadable file in the requested format (CSV, Excel, etc.).",
        "requestBody": {
          "description": "Export criteria including pagination, filter, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/mail-configurations/o365/check-api-connectivity": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests API connectivity for a Microsoft 365 mail configuration by verifying the Graph API token exchange and basic endpoint access.",
        "requestBody": {
          "description": "The O365 configuration to test including tenant ID, client ID, and client secret.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/o365/check-privileges-access": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests whether the O365 service account has sufficient application permissions (e.g., Mail.Read, Mail.ReadWrite) for incident response operations.",
        "requestBody": {
          "description": "The O365 configuration to test including tenant ID, client ID, and client secret.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/o365/check-inbox-access": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests inbox read access for an O365 mail configuration by attempting to list messages in the configured mailbox.",
        "requestBody": {
          "description": "The O365 configuration to test including tenant ID, client ID, and client secret.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/o365/check-all-users-access": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests whether the O365 mail configuration can enumerate all users in the tenant directory, required for organization-wide scanning.",
        "requestBody": {
          "description": "The O365 configuration to test including tenant ID, client ID, and client secret.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/o365/check-email-access": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests email read access for an O365 mail configuration by verifying the ability to read full email content from user mailboxes.",
        "requestBody": {
          "description": "The O365 configuration to test including tenant ID, client ID, and client secret.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/o365/check-create-new-category": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests the ability to create a new mailbox category in O365, used for tagging emails during incident response processing.",
        "requestBody": {
          "description": "The O365 configuration to test including tenant ID, client ID, and client secret.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/o365/check-update-category": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests the ability to update an existing mailbox category in O365, used for modifying email tags during incident response.",
        "requestBody": {
          "description": "The O365 configuration to test including tenant ID, client ID, and client secret.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/o365/check-delete-email": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests email deletion access for an O365 mail configuration, verifying the ability to quarantine/remove malicious emails from user mailboxes.",
        "requestBody": {
          "description": "The O365 configuration to test including tenant ID, client ID, and client secret.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/o365/list-related-domains": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Lists all verified domains associated with the O365 tenant, useful for identifying organization-owned domains during mail analysis.",
        "requestBody": {
          "description": "The O365 configuration including tenant credentials for domain enumeration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.ListRelatedDomainsForO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.ListRelatedDomainsForO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.ListRelatedDomainsForO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.ListRelatedDomainsForO365MailProviderRequest"
              },
              "example": {"applicationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","applicationSecret":"app_secret_placeholder","directoryId":"d1e2f3a4-b5c6-7890-abcd-ef0987654321","email":"admin@acme.com","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/ews/check-api-connectivity": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests API connectivity for an Exchange Web Services (EWS) mail configuration by verifying the EWS endpoint access and authentication.",
        "requestBody": {
          "description": "The EWS configuration to test including server URL and credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/ews/check-privileges-access": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests whether the EWS service account has sufficient impersonation and mailbox access privileges for incident response operations.",
        "requestBody": {
          "description": "The EWS configuration to test including server URL and credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/ews/check-inbox-access": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests inbox read access for an EWS mail configuration by attempting to access the configured mailbox inbox folder.",
        "requestBody": {
          "description": "The EWS configuration to test including server URL and credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/ews/check-email-body-access": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests email body access for an EWS mail configuration by verifying the ability to read full email content including HTML body.",
        "requestBody": {
          "description": "The EWS configuration to test including server URL and credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/ews/check-email-header-access": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests email header access for an EWS mail configuration by verifying the ability to read email transport headers for analysis.",
        "requestBody": {
          "description": "The EWS configuration to test including server URL and credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/ews/check-mail-filter": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests mail filtering capabilities for an EWS mail configuration by verifying the ability to search and filter emails by criteria such as date, sender, and subject.",
        "requestBody": {
          "description": "The EWS configuration to test including server URL and credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest"
              },
              "example": {"username":"svc-ews@acme.com","password":"ews_password_placeholder","serviceUrl":"https://mail.acme.com/EWS/Exchange.asmx","accountType":1,"email":"svc-ews@acme.com","xAnchorMailbox":true,"exchangeVersion":"Exchange2016","resourceId":"Ht4Wn8kL2mXq"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/gsuite/check-api-connectivity": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests API connectivity for a Google Workspace mail configuration by verifying the service account authentication and Gmail API access.",
        "requestBody": {
          "description": "The Google Workspace configuration to test including service account credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/gsuite/check-privileges-access": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests whether the Google Workspace service account has sufficient domain-wide delegation privileges for incident response scanning.",
        "requestBody": {
          "description": "The Google Workspace configuration to test including service account credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/gsuite/check-inbox-access": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests inbox read access for a Google Workspace mail configuration by attempting to list messages in the configured user's Gmail inbox.",
        "requestBody": {
          "description": "The Google Workspace configuration to test including service account credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/gsuite/check-all-users-access": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests whether the Google Workspace configuration can enumerate all users in the domain directory, required for organization-wide scanning.",
        "requestBody": {
          "description": "The Google Workspace configuration to test including service account credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/gsuite/check-email-access": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests email read access for a Google Workspace mail configuration by verifying the ability to read full email content from Gmail.",
        "requestBody": {
          "description": "The Google Workspace configuration to test including service account credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/gsuite/check-create-new-category": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests the ability to create a new Gmail label in Google Workspace, used for tagging emails during incident response processing.",
        "requestBody": {
          "description": "The Google Workspace configuration to test including service account credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/gsuite/check-update-category": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests the ability to update an existing Gmail label in Google Workspace, used for modifying email tags during incident response.",
        "requestBody": {
          "description": "The Google Workspace configuration to test including service account credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/mail-configurations/gsuite/check-delete-email": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests email deletion access for a Google Workspace mail configuration, verifying the ability to trash/remove malicious emails from user mailboxes.",
        "requestBody": {
          "description": "The Google Workspace configuration to test including service account credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest"
              },
              "example": {"credentialJson":"{\"type\":\"service_account\",\"project_id\":\"example-project\"}","email":"admin@example.com","resourceId":"Mp5Kp2mR7xLv"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/proxy-settings": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Creates a new proxy setting for the company, configuring an HTTP/HTTPS proxy to route outbound simulation traffic through.",
        "requestBody": {
          "description": "The proxy setting creation payload including host, port, and optional authentication credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.CreateProxySettingRequest"
              },
              "example": {"name":"Corporate Proxy","address":"proxy.example.com","port":"8080","authenticationTypeId":1,"username":"proxy-user","password":"***","isDefault":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.CreateProxySettingRequest"
              },
              "example": {"name":"Corporate Proxy","address":"proxy.example.com","port":"8080","authenticationTypeId":1,"username":"proxy-user","password":"***","isDefault":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.CreateProxySettingRequest"
              },
              "example": {"name":"Corporate Proxy","address":"proxy.example.com","port":"8080","authenticationTypeId":1,"username":"proxy-user","password":"***","isDefault":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.CreateProxySettingRequest"
              },
              "example": {"name":"Corporate Proxy","address":"proxy.example.com","port":"8080","authenticationTypeId":1,"username":"proxy-user","password":"***","isDefault":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/proxy-settings/{resourceId}": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the details of an existing proxy setting by its resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the proxy setting.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.ProxySetting.Dto.ProxySettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Updates an existing proxy setting's configuration such as host, port, and authentication credentials.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the proxy setting to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated proxy setting details payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.UpdateProxySettingRequest"
              },
              "example": {"name":"Corporate Proxy","address":"proxy.example.com","port":"8080","authenticationTypeId":1,"username":"proxy-user","password":"***","isDefault":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.UpdateProxySettingRequest"
              },
              "example": {"name":"Corporate Proxy","address":"proxy.example.com","port":"8080","authenticationTypeId":1,"username":"proxy-user","password":"***","isDefault":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.UpdateProxySettingRequest"
              },
              "example": {"name":"Corporate Proxy","address":"proxy.example.com","port":"8080","authenticationTypeId":1,"username":"proxy-user","password":"***","isDefault":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.UpdateProxySettingRequest"
              },
              "example": {"name":"Corporate Proxy","address":"proxy.example.com","port":"8080","authenticationTypeId":1,"username":"proxy-user","password":"***","isDefault":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Deletes an existing proxy setting from the company's configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the proxy setting to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/proxy-settings/search": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Searches and retrieves a paginated list of proxy settings for the company with optional filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination and optional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.SearchProxySettingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.SearchProxySettingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.SearchProxySettingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.SearchProxySettingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.ProxySetting.Dto.SearchProxySettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/proxy-settings/search/export": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Exports the filtered list of proxy settings to a downloadable file in the requested format (CSV, Excel, etc.).",
        "requestBody": {
          "description": "Export criteria including pagination, filter, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/companies/proxy-settings/test": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests the connectivity of a proxy setting by attempting to connect through the configured proxy server, verifying host, port, and authentication.",
        "requestBody": {
          "description": "The proxy setting configuration to test.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.TestProxySettingRequest"
              },
              "example": {"address":"proxy.example.com","port":"8080","authenticationTypeId":1,"username":"proxy-user","password":"***","testUrl":"https://www.google.com"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.TestProxySettingRequest"
              },
              "example": {"address":"proxy.example.com","port":"8080","authenticationTypeId":1,"username":"proxy-user","password":"***","testUrl":"https://www.google.com"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.TestProxySettingRequest"
              },
              "example": {"address":"proxy.example.com","port":"8080","authenticationTypeId":1,"username":"proxy-user","password":"***","testUrl":"https://www.google.com"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ProxySetting.TestProxySettingRequest"
              },
              "example": {"address":"proxy.example.com","port":"8080","authenticationTypeId":1,"username":"proxy-user","password":"***","testUrl":"https://www.google.com"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/siem-settings": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Creates a new SIEM integration setting for the company, configuring event forwarding to a Security Information and Event Management system (e.g., Splunk, QRadar, Sentinel).",
        "requestBody": {
          "description": "The SIEM setting creation payload including provider type, endpoint URL, and authentication details.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.CreateSIEMSettingRequest"
              },
              "example": {"name":"Splunk SIEM Integration","apiUrl":"https://splunk.example.com:8088/services/collector","token":"***","typeId":1,"statusId":1,"isForwardHistoricalAuditLog":false,"serverAddress":"","port":"","connectionType":""}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.CreateSIEMSettingRequest"
              },
              "example": {"name":"Splunk SIEM Integration","apiUrl":"https://splunk.example.com:8088/services/collector","token":"***","typeId":1,"statusId":1,"isForwardHistoricalAuditLog":false,"serverAddress":"","port":"","connectionType":""}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.CreateSIEMSettingRequest"
              },
              "example": {"name":"Splunk SIEM Integration","apiUrl":"https://splunk.example.com:8088/services/collector","token":"***","typeId":1,"statusId":1,"isForwardHistoricalAuditLog":false,"serverAddress":"","port":"","connectionType":""}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.CreateSIEMSettingRequest"
              },
              "example": {"name":"Splunk SIEM Integration","apiUrl":"https://splunk.example.com:8088/services/collector","token":"***","typeId":1,"statusId":1,"isForwardHistoricalAuditLog":false,"serverAddress":"","port":"","connectionType":""}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/siem-settings/{resourceId}": {
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Updates an existing SIEM integration setting's configuration such as endpoint URL, authentication, and event filtering rules.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the SIEM setting to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated SIEM setting details payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.UpdateSIEMSettingRequest"
              },
              "example": {"name":"Splunk SIEM Integration","apiUrl":"https://splunk.example.com:8088/services/collector","token":"***","typeId":1,"statusId":1,"isForwardHistoricalAuditLog":false,"serverAddress":"","port":"","connectionType":""}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.UpdateSIEMSettingRequest"
              },
              "example": {"name":"Splunk SIEM Integration","apiUrl":"https://splunk.example.com:8088/services/collector","token":"***","typeId":1,"statusId":1,"isForwardHistoricalAuditLog":false,"serverAddress":"","port":"","connectionType":""}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.UpdateSIEMSettingRequest"
              },
              "example": {"name":"Splunk SIEM Integration","apiUrl":"https://splunk.example.com:8088/services/collector","token":"***","typeId":1,"statusId":1,"isForwardHistoricalAuditLog":false,"serverAddress":"","port":"","connectionType":""}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.UpdateSIEMSettingRequest"
              },
              "example": {"name":"Splunk SIEM Integration","apiUrl":"https://splunk.example.com:8088/services/collector","token":"***","typeId":1,"statusId":1,"isForwardHistoricalAuditLog":false,"serverAddress":"","port":"","connectionType":""}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Deletes an existing SIEM integration setting, stopping event forwarding to the configured SIEM system.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the SIEM setting to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the details of an existing SIEM integration setting by its resource identifier, including provider type and endpoint configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the SIEM setting.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SIEMSetting.Dto.SIEMSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/siem-settings/search": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Searches and retrieves a paginated list of SIEM integration settings for the company with optional filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination and optional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.Search.SIEMSettingSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.Search.SIEMSettingSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.Search.SIEMSettingSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.Search.SIEMSettingSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SIEMSetting.Dto.SearchSIEMSettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/siem-settings/search/export": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Exports the filtered list of SIEM integration settings to a downloadable file in the requested format (CSV, Excel, etc.).",
        "requestBody": {
          "description": "Export criteria including pagination, filter, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/companies/siem-settings/test": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests a SIEM integration setting by sending a sample event to the configured SIEM endpoint, verifying connectivity and authentication.",
        "requestBody": {
          "description": "The SIEM configuration to test including endpoint URL and credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.TestSIEMSettingRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","apiUrl":"https://splunk.example.com:8088/services/collector","token":"***","typeId":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.TestSIEMSettingRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","apiUrl":"https://splunk.example.com:8088/services/collector","token":"***","typeId":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.TestSIEMSettingRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","apiUrl":"https://splunk.example.com:8088/services/collector","token":"***","typeId":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.TestSIEMSettingRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","apiUrl":"https://splunk.example.com:8088/services/collector","token":"***","typeId":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/smtp-settings": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Creates a new SMTP setting for the company, configuring an outbound mail server for sending phishing simulation emails.",
        "requestBody": {
          "description": "The SMTP setting creation payload including host, port, encryption, and authentication credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.CreateSmtpSettingRequest"
              },
              "example": {"name":"Production SMTP Server","serverAddress":"smtp.example.com","serverPort":"587","userName":"smtp-user@example.com","password":"***","useAuthentication":true,"useSSL":true,"hasSMTPRelay":false,"replyTo":"noreply@example.com","errorTo":"postmaster@example.com","cc":"","bcc":"","customHeader":"","statusId":1,"availableForRequests":[{"type":"Company","resourceId":"65BVv1136Vnp"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.CreateSmtpSettingRequest"
              },
              "example": {"name":"Production SMTP Server","serverAddress":"smtp.example.com","serverPort":"587","userName":"smtp-user@example.com","password":"***","useAuthentication":true,"useSSL":true,"hasSMTPRelay":false,"replyTo":"noreply@example.com","errorTo":"postmaster@example.com","cc":"","bcc":"","customHeader":"","statusId":1,"availableForRequests":[{"type":"Company","resourceId":"65BVv1136Vnp"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.CreateSmtpSettingRequest"
              },
              "example": {"name":"Production SMTP Server","serverAddress":"smtp.example.com","serverPort":"587","userName":"smtp-user@example.com","password":"***","useAuthentication":true,"useSSL":true,"hasSMTPRelay":false,"replyTo":"noreply@example.com","errorTo":"postmaster@example.com","cc":"","bcc":"","customHeader":"","statusId":1,"availableForRequests":[{"type":"Company","resourceId":"65BVv1136Vnp"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.CreateSmtpSettingRequest"
              },
              "example": {"name":"Production SMTP Server","serverAddress":"smtp.example.com","serverPort":"587","userName":"smtp-user@example.com","password":"***","useAuthentication":true,"useSSL":true,"hasSMTPRelay":false,"replyTo":"noreply@example.com","errorTo":"postmaster@example.com","cc":"","bcc":"","customHeader":"","statusId":1,"availableForRequests":[{"type":"Company","resourceId":"65BVv1136Vnp"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/smtp-settings/search": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Searches and retrieves a paginated list of SMTP settings for the company with optional filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination and optional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.Search.SmtpSettingSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.Search.SmtpSettingSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.Search.SmtpSettingSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.Search.SmtpSettingSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SMTPSetting.Dto.SearchSmtpSettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/smtp-settings/{resourceId}": {
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Updates an existing SMTP setting's configuration such as host, port, encryption method, and authentication credentials.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the SMTP setting to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated SMTP setting details payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.UpdateSmtpSettingRequest"
              },
              "example": {"name":"Production SMTP Server","serverAddress":"smtp.example.com","serverPort":"587","userName":"smtp-user@example.com","password":"***","useAuthentication":true,"useSSL":true,"hasSMTPRelay":false,"replyTo":"noreply@example.com","errorTo":"postmaster@example.com","cc":"","bcc":"","customHeader":"","statusId":1,"availableForRequests":[{"type":"Company","resourceId":"65BVv1136Vnp"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.UpdateSmtpSettingRequest"
              },
              "example": {"name":"Production SMTP Server","serverAddress":"smtp.example.com","serverPort":"587","userName":"smtp-user@example.com","password":"***","useAuthentication":true,"useSSL":true,"hasSMTPRelay":false,"replyTo":"noreply@example.com","errorTo":"postmaster@example.com","cc":"","bcc":"","customHeader":"","statusId":1,"availableForRequests":[{"type":"Company","resourceId":"65BVv1136Vnp"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.UpdateSmtpSettingRequest"
              },
              "example": {"name":"Production SMTP Server","serverAddress":"smtp.example.com","serverPort":"587","userName":"smtp-user@example.com","password":"***","useAuthentication":true,"useSSL":true,"hasSMTPRelay":false,"replyTo":"noreply@example.com","errorTo":"postmaster@example.com","cc":"","bcc":"","customHeader":"","statusId":1,"availableForRequests":[{"type":"Company","resourceId":"65BVv1136Vnp"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.UpdateSmtpSettingRequest"
              },
              "example": {"name":"Production SMTP Server","serverAddress":"smtp.example.com","serverPort":"587","userName":"smtp-user@example.com","password":"***","useAuthentication":true,"useSSL":true,"hasSMTPRelay":false,"replyTo":"noreply@example.com","errorTo":"postmaster@example.com","cc":"","bcc":"","customHeader":"","statusId":1,"availableForRequests":[{"type":"Company","resourceId":"65BVv1136Vnp"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Deletes an existing SMTP setting from the company's configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the SMTP setting to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the details of an existing SMTP setting by its resource identifier, including server configuration and encryption method.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the SMTP setting.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SMTPSetting.Dto.SmtpSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/smtp-settings/search/export": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Exports the filtered list of SMTP settings to a downloadable file in the requested format (CSV, Excel, etc.).",
        "requestBody": {
          "description": "Export criteria including pagination, filter, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/companies/smtp-settings/test": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests the SMTP setting by sending a test email through the configured server, verifying host, port, encryption, and authentication.",
        "requestBody": {
          "description": "The SMTP configuration to test, including recipient email for the test message.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.TestSmtpSettingRequest"
              },
              "example": {"serverAddress":"smtp.example.com","port":587,"username":"smtp-user@example.com","password":"***","useAuthentication":true,"useSsl":true,"from":"noreply@example.com","fromName":"Keepnet Security","to":"admin@example.com","message":"This is a test email from Keepnet.","customHeader":"","phishingTypeId":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.TestSmtpSettingRequest"
              },
              "example": {"serverAddress":"smtp.example.com","port":587,"username":"smtp-user@example.com","password":"***","useAuthentication":true,"useSsl":true,"from":"noreply@example.com","fromName":"Keepnet Security","to":"admin@example.com","message":"This is a test email from Keepnet.","customHeader":"","phishingTypeId":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.TestSmtpSettingRequest"
              },
              "example": {"serverAddress":"smtp.example.com","port":587,"username":"smtp-user@example.com","password":"***","useAuthentication":true,"useSsl":true,"from":"noreply@example.com","fromName":"Keepnet Security","to":"admin@example.com","message":"This is a test email from Keepnet.","customHeader":"","phishingTypeId":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.TestSmtpSettingRequest"
              },
              "example": {"serverAddress":"smtp.example.com","port":587,"username":"smtp-user@example.com","password":"***","useAuthentication":true,"useSsl":true,"from":"noreply@example.com","fromName":"Keepnet Security","to":"admin@example.com","message":"This is a test email from Keepnet.","customHeader":"","phishingTypeId":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/smtp-settings/{resourceId}/test": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Tests an existing SMTP setting identified by resource ID by sending a test email, allowing verification of previously saved configurations.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the saved SMTP setting to test.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The test request payload including recipient email for the test message.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.TestSmtpSettingWithResourceIdRequest"
              },
              "example": {"from":"noreply@example.com","fromName":"Keepnet Security","to":"admin@example.com","message":"This is a test email from Keepnet.","phishingTypeId":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.TestSmtpSettingWithResourceIdRequest"
              },
              "example": {"from":"noreply@example.com","fromName":"Keepnet Security","to":"admin@example.com","message":"This is a test email from Keepnet.","phishingTypeId":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.TestSmtpSettingWithResourceIdRequest"
              },
              "example": {"from":"noreply@example.com","fromName":"Keepnet Security","to":"admin@example.com","message":"This is a test email from Keepnet.","phishingTypeId":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.TestSmtpSettingWithResourceIdRequest"
              },
              "example": {"from":"noreply@example.com","fromName":"Keepnet Security","to":"admin@example.com","message":"This is a test email from Keepnet.","phishingTypeId":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/whitelabeling": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves the white labeling configuration for the current user's company, including custom branding, logos, and color schemes.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.WhiteLabeling.Dto.WhiteLabelingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/whitelabeling/{companyId}": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Retrieves white labeling configuration by company ID. This endpoint is used internally by the Awareness Educator microservice.",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The internal numeric identifier of the company.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.WhiteLabeling.Dto.WhiteLabelingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/whitelabeling/by-url": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Resolves a company's white labeling configuration by matching the provided URL domain against registered white-label domains. This is an anonymous endpoint for login page branding.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "DomainUrl": {
                    "type": "string",
                    "description": "Custom domain URL used to look up the corresponding white-labeling configuration."
                  }
                }
              },
              "example": {
                "DomainUrl": "https://security.example.com"
              },
              "encoding": {
                "DomainUrl": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.WhiteLabeling.Dto.WhiteLabelingByDomainDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/whitelabeling/{resourceId}": {
      "put": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Updates the white labeling configuration for the company, allowing customization of logos, colors, favicon, and custom domain settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the white labeling record to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "FooterCookiePolicyUrl",
                  "FooterEulaUrl",
                  "FooterPrivacyPolicyUrl",
                  "FooterTermsAndConditionsUrl"
                ],
                "type": "object",
                "properties": {
                  "BrandName": {
                    "type": "string",
                    "description": "Custom brand name displayed throughout the platform."
                  },
                  "MainDomainProtocol": {
                    "type": "string",
                    "description": "Protocol scheme for the main custom domain (e.g., \"https\")."
                  },
                  "MainDomainUrl": {
                    "type": "string",
                    "description": "Custom domain URL for the white-labeled platform."
                  },
                  "MainLogoUrl": {
                    "type": "string",
                    "description": "URL of the currently stored main logo image."
                  },
                  "MainLogoFile": {
                    "type": "string",
                    "description": "Uploaded file to replace the main logo image.",
                    "format": "binary"
                  },
                  "MinimizedMenuLogoUrl": {
                    "type": "string",
                    "description": "URL of the currently stored minimized (collapsed) menu logo."
                  },
                  "MinimizedMenuLogoFile": {
                    "type": "string",
                    "description": "Uploaded file to replace the minimized menu logo.",
                    "format": "binary"
                  },
                  "FaviconUrl": {
                    "type": "string",
                    "description": "URL of the currently stored favicon."
                  },
                  "FaviconFile": {
                    "type": "string",
                    "description": "Uploaded file to replace the favicon.",
                    "format": "binary"
                  },
                  "EmailTemplateLogoUrl": {
                    "type": "string",
                    "description": "URL of the logo used in outgoing email templates."
                  },
                  "EmailTemplateLogoFile": {
                    "type": "string",
                    "description": "Uploaded file to replace the email template logo.",
                    "format": "binary"
                  },
                  "SupportEmailAddress": {
                    "type": "string",
                    "description": "Support email address displayed to end users."
                  },
                  "FooterPrivacyPolicyUrl": {
                    "type": "string",
                    "description": "URL to the privacy policy page shown in the platform footer."
                  },
                  "FooterTermsAndConditionsUrl": {
                    "type": "string",
                    "description": "URL to the terms and conditions page shown in the platform footer."
                  },
                  "FooterEulaUrl": {
                    "type": "string",
                    "description": "URL to the End User License Agreement page shown in the platform footer."
                  },
                  "FooterCookiePolicyUrl": {
                    "type": "string",
                    "description": "URL to the cookie policy page shown in the platform footer."
                  },
                  "IsShowReleaseVersionNumber": {
                    "type": "boolean",
                    "description": "Whether to display the application release version number in the UI."
                  },
                  "IsShowReleaseNotes": {
                    "type": "boolean",
                    "description": "Whether to display release notes link in the UI."
                  },
                  "ReleaseNotesUrl": {
                    "type": "string",
                    "description": "URL pointing to the release notes page."
                  },
                  "IsDocumentationLinkEnabled": {
                    "type": "boolean",
                    "description": "Whether the documentation link is visible to users."
                  },
                  "AcceptDnsRecordSettings": {
                    "type": "boolean",
                    "description": "Whether the user has accepted the DNS record settings required for white-labeling."
                  }
                }
              },
              "example": {
                "BrandName": "Acme Security Platform",
                "MainDomainProtocol": "https",
                "MainDomainUrl": "security.acmecorp.com",
                "MainLogoUrl": "https://cdn.acmecorp.com/logos/main-logo.png",
                "MinimizedMenuLogoUrl": "https://cdn.acmecorp.com/logos/icon-logo.png",
                "FaviconUrl": "https://cdn.acmecorp.com/logos/favicon.ico",
                "EmailTemplateLogoUrl": "https://cdn.acmecorp.com/logos/email-logo.png",
                "SupportEmailAddress": "support@acmecorp.com",
                "FooterPrivacyPolicyUrl": "https://www.acmecorp.com/privacy-policy",
                "FooterTermsAndConditionsUrl": "https://www.acmecorp.com/terms-and-conditions",
                "FooterEulaUrl": "https://www.acmecorp.com/eula",
                "FooterCookiePolicyUrl": "https://www.acmecorp.com/cookie-policy",
                "IsShowReleaseVersionNumber": false,
                "IsShowReleaseNotes": false,
                "ReleaseNotesUrl": "https://www.acmecorp.com/release-notes",
                "IsDocumentationLinkEnabled": true,
                "AcceptDnsRecordSettings": true
              },
              "encoding": {
                "BrandName": {
                  "style": "form"
                },
                "MainDomainProtocol": {
                  "style": "form"
                },
                "MainDomainUrl": {
                  "style": "form"
                },
                "MainLogoUrl": {
                  "style": "form"
                },
                "MainLogoFile": {
                  "style": "form"
                },
                "MinimizedMenuLogoUrl": {
                  "style": "form"
                },
                "MinimizedMenuLogoFile": {
                  "style": "form"
                },
                "FaviconUrl": {
                  "style": "form"
                },
                "FaviconFile": {
                  "style": "form"
                },
                "EmailTemplateLogoUrl": {
                  "style": "form"
                },
                "EmailTemplateLogoFile": {
                  "style": "form"
                },
                "SupportEmailAddress": {
                  "style": "form"
                },
                "FooterPrivacyPolicyUrl": {
                  "style": "form"
                },
                "FooterTermsAndConditionsUrl": {
                  "style": "form"
                },
                "FooterEulaUrl": {
                  "style": "form"
                },
                "FooterCookiePolicyUrl": {
                  "style": "form"
                },
                "IsShowReleaseVersionNumber": {
                  "style": "form"
                },
                "IsShowReleaseNotes": {
                  "style": "form"
                },
                "ReleaseNotesUrl": {
                  "style": "form"
                },
                "IsDocumentationLinkEnabled": {
                  "style": "form"
                },
                "AcceptDnsRecordSettings": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Deletes the white labeling configuration, reverting the company's branding back to platform defaults.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the white labeling record to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/whitelabeling/resolve-whitelabeling": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Resolves the effective white labeling for the current company by traversing the company hierarchy to find the nearest configured branding.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.WhiteLabeling.Dto.WhiteLabelingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/whitelabeling/check-dns": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Validates whether a DNS CNAME record is correctly configured for the company's custom white-label domain.",
        "requestBody": {
          "description": "The request containing the domain name to verify.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.WhiteLabeling.CheckDNSRequest"
              },
              "example": {"mainDomainUrl":"security.acmecorp.com"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.WhiteLabeling.CheckDNSRequest"
              },
              "example": {"mainDomainUrl":"security.acmecorp.com"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.WhiteLabeling.CheckDNSRequest"
              },
              "example": {"mainDomainUrl":"security.acmecorp.com"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.WhiteLabeling.CheckDNSRequest"
              },
              "example": {"mainDomainUrl":"security.acmecorp.com"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/regions": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Returns the list of regions that are active AND have a provisioned\r\nregional database (filtered by IsActive=true AND HasActiveDatabase=true).\r\nSorted by SortOrder. Root-only.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Region.Dto.RegionDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/{companyResourceId}/sovereignty/migrate": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Queues a central -> regional TargetUser migration job for the specified company.\r\nReturns the job's ResourceId, which can be used to poll job status (M8).\r\nRoot-only.",
        "parameters": [
          {
            "name": "companyResourceId",
            "in": "path",
            "description": "The company's unique resource identifier (route).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The migration request payload (TargetRegionCode, BatchSize).",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.MigrateCompanyRegionRequest"
              },
              "example": {"targetRegionCode":"canadacentral","batchSize":1000}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.MigrateCompanyRegionRequest"
              },
              "example": {"targetRegionCode":"canadacentral","batchSize":1000}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.MigrateCompanyRegionRequest"
              },
              "example": {"targetRegionCode":"canadacentral","batchSize":1000}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.MigrateCompanyRegionRequest"
              },
              "example": {"targetRegionCode":"canadacentral","batchSize":1000}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/{companyResourceId}/sovereignty/reverse-migrate": {
      "post": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Queues a REVERSE (regional -> central) TargetUser migration job for the specified company,\r\nbringing its PII back to the central database and clearing its RegionCode. Returns the\r\njob's ResourceId. Root-only. The company must currently have a RegionCode.",
        "parameters": [
          {
            "name": "companyResourceId",
            "in": "path",
            "description": "The company's unique resource identifier (route).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The reverse migration request payload (BatchSize).",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.ReverseMigrateCompanyRegionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.ReverseMigrateCompanyRegionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.ReverseMigrateCompanyRegionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.ReverseMigrateCompanyRegionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/{companyResourceId}/sovereignty/pii-residency-report": {
      "get": {
        "tags": [
          "Company & Settings"
        ],
        "summary": "Generates a PII residency report for the specified company.\r\nWalks central + every active regional DB and reports whether the\r\ncompany's TargetUser PII is confined to its declared region.\r\nRoot-only.",
        "parameters": [
          {
            "name": "companyResourceId",
            "in": "path",
            "description": "The company's unique resource identifier (route).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.PiiResidencyReportServiceResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/agent/notified-emails/{resourceId}": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the full details of a reported email for the Agentic AI agent.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the notified email.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/analysis-engines": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Creates a new analysis engine integration for scanning reported emails against threat intelligence providers.",
        "requestBody": {
          "description": "The analysis engine configuration including provider type, API credentials, and scanning preferences.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.CreateAnalysisEngineRequest"
              },
              "example": {"analysisEngineTypeResourceId":"65BVv1136Vnp","name":"VirusTotal Integration","description":"Primary VirusTotal analysis engine for URL and hash scanning","apiUrl":"https://www.virustotal.com/api/v3","tags":["url-scan","hash-scan","primary"],"isActive":true,"isSendUrl":true,"isSendIp":true,"isHideUrlParameter":false,"isSendFileHash":true,"isUploadExecutableFile":true,"isUploadOtherFileType":false,"proxyResourceId":"","uploadFileTypes":[".exe",".dll",".pdf",".docx"],"apiCredentials":[{"apiKey":"vt_api_key_placeholder","userName":"","password":"","resourceId":"Kx9Rm3nQ7wLp"}],"isCachingEnabled":true,"cacheDuration":60,"cacheQueryCount":1000,"detectionThreshold":3}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.CreateAnalysisEngineRequest"
              },
              "example": {"analysisEngineTypeResourceId":"65BVv1136Vnp","name":"VirusTotal Integration","description":"Primary VirusTotal analysis engine for URL and hash scanning","apiUrl":"https://www.virustotal.com/api/v3","tags":["url-scan","hash-scan","primary"],"isActive":true,"isSendUrl":true,"isSendIp":true,"isHideUrlParameter":false,"isSendFileHash":true,"isUploadExecutableFile":true,"isUploadOtherFileType":false,"proxyResourceId":"","uploadFileTypes":[".exe",".dll",".pdf",".docx"],"apiCredentials":[{"apiKey":"vt_api_key_placeholder","userName":"","password":"","resourceId":"Kx9Rm3nQ7wLp"}],"isCachingEnabled":true,"cacheDuration":60,"cacheQueryCount":1000,"detectionThreshold":3}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.CreateAnalysisEngineRequest"
              },
              "example": {"analysisEngineTypeResourceId":"65BVv1136Vnp","name":"VirusTotal Integration","description":"Primary VirusTotal analysis engine for URL and hash scanning","apiUrl":"https://www.virustotal.com/api/v3","tags":["url-scan","hash-scan","primary"],"isActive":true,"isSendUrl":true,"isSendIp":true,"isHideUrlParameter":false,"isSendFileHash":true,"isUploadExecutableFile":true,"isUploadOtherFileType":false,"proxyResourceId":"","uploadFileTypes":[".exe",".dll",".pdf",".docx"],"apiCredentials":[{"apiKey":"vt_api_key_placeholder","userName":"","password":"","resourceId":"Kx9Rm3nQ7wLp"}],"isCachingEnabled":true,"cacheDuration":60,"cacheQueryCount":1000,"detectionThreshold":3}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.CreateAnalysisEngineRequest"
              },
              "example": {"analysisEngineTypeResourceId":"65BVv1136Vnp","name":"VirusTotal Integration","description":"Primary VirusTotal analysis engine for URL and hash scanning","apiUrl":"https://www.virustotal.com/api/v3","tags":["url-scan","hash-scan","primary"],"isActive":true,"isSendUrl":true,"isSendIp":true,"isHideUrlParameter":false,"isSendFileHash":true,"isUploadExecutableFile":true,"isUploadOtherFileType":false,"proxyResourceId":"","uploadFileTypes":[".exe",".dll",".pdf",".docx"],"apiCredentials":[{"apiKey":"vt_api_key_placeholder","userName":"","password":"","resourceId":"Kx9Rm3nQ7wLp"}],"isCachingEnabled":true,"cacheDuration":60,"cacheQueryCount":1000,"detectionThreshold":3}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Returns all analysis engine integrations configured for the current company, including their status and provider details.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineDetailDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/analysis-engines/{resourceId}": {
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Updates the configuration of an existing analysis engine, such as API keys, scanning options, or priority settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the analysis engine to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated analysis engine configuration fields.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.UpdateAnalysisEngineRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","analysisEngineTypeResourceId":"65BVv1136Vnp","name":"VirusTotal Integration (Updated)","description":"Updated VirusTotal integration with extended file type support","apiUrl":"https://www.virustotal.com/api/v3","tags":["url-scan","hash-scan","file-upload"],"isActive":true,"isSendUrl":true,"isSendIp":true,"isHideUrlParameter":true,"isSendFileHash":true,"isUploadExecutableFile":true,"isUploadOtherFileType":true,"proxyResourceId":"Pq7Jm2xR5nKw","uploadFileTypes":[".exe",".dll",".pdf",".docx",".xlsx"],"apiCredentials":[{"apiKey":"vt_api_key_updated","userName":"","password":"","resourceId":"Kx9Rm3nQ7wLp"}],"isCachingEnabled":true,"cacheDuration":120,"cacheQueryCount":5000,"detectionThreshold":5}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.UpdateAnalysisEngineRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","analysisEngineTypeResourceId":"65BVv1136Vnp","name":"VirusTotal Integration (Updated)","description":"Updated VirusTotal integration with extended file type support","apiUrl":"https://www.virustotal.com/api/v3","tags":["url-scan","hash-scan","file-upload"],"isActive":true,"isSendUrl":true,"isSendIp":true,"isHideUrlParameter":true,"isSendFileHash":true,"isUploadExecutableFile":true,"isUploadOtherFileType":true,"proxyResourceId":"Pq7Jm2xR5nKw","uploadFileTypes":[".exe",".dll",".pdf",".docx",".xlsx"],"apiCredentials":[{"apiKey":"vt_api_key_updated","userName":"","password":"","resourceId":"Kx9Rm3nQ7wLp"}],"isCachingEnabled":true,"cacheDuration":120,"cacheQueryCount":5000,"detectionThreshold":5}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.UpdateAnalysisEngineRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","analysisEngineTypeResourceId":"65BVv1136Vnp","name":"VirusTotal Integration (Updated)","description":"Updated VirusTotal integration with extended file type support","apiUrl":"https://www.virustotal.com/api/v3","tags":["url-scan","hash-scan","file-upload"],"isActive":true,"isSendUrl":true,"isSendIp":true,"isHideUrlParameter":true,"isSendFileHash":true,"isUploadExecutableFile":true,"isUploadOtherFileType":true,"proxyResourceId":"Pq7Jm2xR5nKw","uploadFileTypes":[".exe",".dll",".pdf",".docx",".xlsx"],"apiCredentials":[{"apiKey":"vt_api_key_updated","userName":"","password":"","resourceId":"Kx9Rm3nQ7wLp"}],"isCachingEnabled":true,"cacheDuration":120,"cacheQueryCount":5000,"detectionThreshold":5}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.UpdateAnalysisEngineRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","analysisEngineTypeResourceId":"65BVv1136Vnp","name":"VirusTotal Integration (Updated)","description":"Updated VirusTotal integration with extended file type support","apiUrl":"https://www.virustotal.com/api/v3","tags":["url-scan","hash-scan","file-upload"],"isActive":true,"isSendUrl":true,"isSendIp":true,"isHideUrlParameter":true,"isSendFileHash":true,"isUploadExecutableFile":true,"isUploadOtherFileType":true,"proxyResourceId":"Pq7Jm2xR5nKw","uploadFileTypes":[".exe",".dll",".pdf",".docx",".xlsx"],"apiCredentials":[{"apiKey":"vt_api_key_updated","userName":"","password":"","resourceId":"Kx9Rm3nQ7wLp"}],"isCachingEnabled":true,"cacheDuration":120,"cacheQueryCount":5000,"detectionThreshold":5}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the full configuration details of a specific analysis engine by its resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the analysis engine.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Permanently deletes an analysis engine integration and removes it from incident response workflows.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the analysis engine to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/analysis-engines/form-details": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the form metadata needed to render the analysis engine create/edit form, including available provider types and configuration fields.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/analysis-engines/search": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Searches and returns a paginated list of analysis engines configured for the current company, with optional filtering and sorting.",
        "requestBody": {
          "description": "Pagination, sorting, and filter criteria for the analysis engine search.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.AnalysisEngineSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.AnalysisEngineSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.AnalysisEngineSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.AnalysisEngineSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Search.AnalysisEngineSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/analysis-engines/search/export": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Exports the analysis engine list as a downloadable file in the specified format (e.g., CSV, Excel).",
        "requestBody": {
          "description": "Export parameters including format, pagination, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/analysis-engines/{resourceId}/disable": {
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Disables an analysis engine, preventing it from being used in email threat scanning without deleting its configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the analysis engine to disable.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/analysis-engines/{resourceId}/enable": {
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Re-enables a previously disabled analysis engine so it can participate in email threat scanning again.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the analysis engine to enable.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/analysis-engines-types/{resourceId}/test-connection": {
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Tests the connectivity and authentication of an analysis engine by making a probe request to the configured provider endpoint.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the analysis engine type to test.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The analysis engine test parameters including provider type and credentials.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.TestAnalysisEngineRequest"
              },
              "example": {"apiUrl":"https://www.virustotal.com/api/v3","apiCredential":{"apiKey":"vt_api_key_placeholder","userName":"","password":"","resourceId":"Kx9Rm3nQ7wLp"},"proxyResourceId":""}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.TestAnalysisEngineRequest"
              },
              "example": {"apiUrl":"https://www.virustotal.com/api/v3","apiCredential":{"apiKey":"vt_api_key_placeholder","userName":"","password":"","resourceId":"Kx9Rm3nQ7wLp"},"proxyResourceId":""}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.TestAnalysisEngineRequest"
              },
              "example": {"apiUrl":"https://www.virustotal.com/api/v3","apiCredential":{"apiKey":"vt_api_key_placeholder","userName":"","password":"","resourceId":"Kx9Rm3nQ7wLp"},"proxyResourceId":""}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.TestAnalysisEngineRequest"
              },
              "example": {"apiUrl":"https://www.virustotal.com/api/v3","apiCredential":{"apiKey":"vt_api_key_placeholder","userName":"","password":"","resourceId":"Kx9Rm3nQ7wLp"},"proxyResourceId":""}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/analysis-engines/analysis-exclusions": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the analysis exclusion rules that define which domains, senders, or patterns should be skipped during email analysis.",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "Optional exclusion type filter to retrieve only a specific category of exclusions.",
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.AnalysisEngine.AnalysisExclusionType"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisExclusionDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Updates the analysis exclusion rules that control which domains, senders, or patterns are skipped during email threat analysis.",
        "requestBody": {
          "description": "The updated exclusion rules including domains, senders, or patterns to exclude.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.UpdateAnalysisExclusionsRequest"
              },
              "example": {"exclusionItems":[{"value":"192.168.1.0/24","exclusionType":"IP","isEditable":true},{"value":"https://trusted-domain.com","exclusionType":"URL","isEditable":true},{"value":".png","exclusionType":"AttacmentExtension","attachmentExtensionType":"Image","isEditable":false}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.UpdateAnalysisExclusionsRequest"
              },
              "example": {"exclusionItems":[{"value":"192.168.1.0/24","exclusionType":"IP","isEditable":true},{"value":"https://trusted-domain.com","exclusionType":"URL","isEditable":true},{"value":".png","exclusionType":"AttacmentExtension","attachmentExtensionType":"Image","isEditable":false}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.UpdateAnalysisExclusionsRequest"
              },
              "example": {"exclusionItems":[{"value":"192.168.1.0/24","exclusionType":"IP","isEditable":true},{"value":"https://trusted-domain.com","exclusionType":"URL","isEditable":true},{"value":".png","exclusionType":"AttacmentExtension","attachmentExtensionType":"Image","isEditable":false}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.UpdateAnalysisExclusionsRequest"
              },
              "example": {"exclusionItems":[{"value":"192.168.1.0/24","exclusionType":"IP","isEditable":true},{"value":"https://trusted-domain.com","exclusionType":"URL","isEditable":true},{"value":".png","exclusionType":"AttacmentExtension","attachmentExtensionType":"Image","isEditable":false}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/{resourceId}/actions-delete": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Creates a delete action for an investigation, which removes the identified malicious emails from user mailboxes via the mail provider.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The delete action parameters including target email identifiers and scope.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationDeleteActionRequest"
              },
              "example": {"isPermanentDelete":false,"items":["Rn5Kp8mQ3wLx"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationDeleteActionRequest"
              },
              "example": {"isPermanentDelete":false,"items":["Rn5Kp8mQ3wLx"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationDeleteActionRequest"
              },
              "example": {"isPermanentDelete":false,"items":["Rn5Kp8mQ3wLx"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationDeleteActionRequest"
              },
              "example": {"isPermanentDelete":false,"items":["Rn5Kp8mQ3wLx"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/{resourceId}/actions-warning": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Creates a warning action for an investigation, which sends notification emails to affected users alerting them about the identified threat.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The warning action parameters including notification template and target users.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationWarningActionRequest"
              },
              "example": {"warningMessage":"The security team has identified a suspicious email in your mailbox. Please do not click any links or open attachments.","items":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc","Km7Wx4pL8nRt"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationWarningActionRequest"
              },
              "example": {"warningMessage":"The security team has identified a suspicious email in your mailbox. Please do not click any links or open attachments.","items":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc","Km7Wx4pL8nRt"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationWarningActionRequest"
              },
              "example": {"warningMessage":"The security team has identified a suspicious email in your mailbox. Please do not click any links or open attachments.","items":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc","Km7Wx4pL8nRt"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationWarningActionRequest"
              },
              "example": {"warningMessage":"The security team has identified a suspicious email in your mailbox. Please do not click any links or open attachments.","items":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc","Km7Wx4pL8nRt"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/{resourceId}/actions-delete-and-notify": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Creates a combined delete-and-notify action for an investigation, which removes malicious emails and sends warning notifications to affected users simultaneously.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The combined action parameters including delete scope and notification template.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationDeleteAndNotifyActionRequest"
              },
              "example": {"warningMessage":"A malicious email has been removed from your mailbox. Please do not interact with similar messages.","isPermanentDelete":true,"items":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationDeleteAndNotifyActionRequest"
              },
              "example": {"warningMessage":"A malicious email has been removed from your mailbox. Please do not interact with similar messages.","isPermanentDelete":true,"items":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationDeleteAndNotifyActionRequest"
              },
              "example": {"warningMessage":"A malicious email has been removed from your mailbox. Please do not interact with similar messages.","isPermanentDelete":true,"items":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationDeleteAndNotifyActionRequest"
              },
              "example": {"warningMessage":"A malicious email has been removed from your mailbox. Please do not interact with similar messages.","isPermanentDelete":true,"items":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/actions-warning": {
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Updates the execution status of an investigation warning action, tracking whether notifications were successfully delivered.",
        "requestBody": {
          "description": "The updated action status including completion state and any error details.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationActionStatusRequest"
              },
              "example": {"email":"john.doe@acme.com","items":[{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG93AAA=","status":"Completed","errorMsg":"","newEmailId":""},{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG94BBB=","status":"CompletedWithError","errorMsg":"Mailbox not accessible","newEmailId":""}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationActionStatusRequest"
              },
              "example": {"email":"john.doe@acme.com","items":[{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG93AAA=","status":"Completed","errorMsg":"","newEmailId":""},{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG94BBB=","status":"CompletedWithError","errorMsg":"Mailbox not accessible","newEmailId":""}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationActionStatusRequest"
              },
              "example": {"email":"john.doe@acme.com","items":[{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG93AAA=","status":"Completed","errorMsg":"","newEmailId":""},{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG94BBB=","status":"CompletedWithError","errorMsg":"Mailbox not accessible","newEmailId":""}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationActionStatusRequest"
              },
              "example": {"email":"john.doe@acme.com","items":[{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG93AAA=","status":"Completed","errorMsg":"","newEmailId":""},{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG94BBB=","status":"CompletedWithError","errorMsg":"Mailbox not accessible","newEmailId":""}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/actions-delete": {
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Updates the execution status of an investigation delete action, tracking whether the malicious emails were successfully removed from mailboxes.",
        "requestBody": {
          "description": "The updated action status including completion state and any error details.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationActionStatusRequest"
              },
              "example": {"email":"john.doe@acme.com","items":[{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG93AAA=","status":"Completed","errorMsg":"","newEmailId":""},{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG94BBB=","status":"CompletedWithError","errorMsg":"Mailbox not accessible","newEmailId":""}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationActionStatusRequest"
              },
              "example": {"email":"john.doe@acme.com","items":[{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG93AAA=","status":"Completed","errorMsg":"","newEmailId":""},{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG94BBB=","status":"CompletedWithError","errorMsg":"Mailbox not accessible","newEmailId":""}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationActionStatusRequest"
              },
              "example": {"email":"john.doe@acme.com","items":[{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG93AAA=","status":"Completed","errorMsg":"","newEmailId":""},{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG94BBB=","status":"CompletedWithError","errorMsg":"Mailbox not accessible","newEmailId":""}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationActionStatusRequest"
              },
              "example": {"email":"john.doe@acme.com","items":[{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG93AAA=","status":"Completed","errorMsg":"","newEmailId":""},{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG94BBB=","status":"CompletedWithError","errorMsg":"Mailbox not accessible","newEmailId":""}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/actions-delete-and-notify": {
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Updates the execution status of an investigation delete-and-notify action, tracking email removal and notification delivery progress.",
        "requestBody": {
          "description": "The updated action status including completion state and any error details.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationActionStatusRequest"
              },
              "example": {"email":"john.doe@acme.com","items":[{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG93AAA=","status":"Completed","errorMsg":"","newEmailId":""},{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG94BBB=","status":"CompletedWithError","errorMsg":"Mailbox not accessible","newEmailId":""}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationActionStatusRequest"
              },
              "example": {"email":"john.doe@acme.com","items":[{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG93AAA=","status":"Completed","errorMsg":"","newEmailId":""},{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG94BBB=","status":"CompletedWithError","errorMsg":"Mailbox not accessible","newEmailId":""}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationActionStatusRequest"
              },
              "example": {"email":"john.doe@acme.com","items":[{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG93AAA=","status":"Completed","errorMsg":"","newEmailId":""},{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG94BBB=","status":"CompletedWithError","errorMsg":"Mailbox not accessible","newEmailId":""}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationActionStatusRequest"
              },
              "example": {"email":"john.doe@acme.com","items":[{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG93AAA=","status":"Completed","errorMsg":"","newEmailId":""},{"investigationId":"Ht4Wn8kL2mXq","mailId":"AAMkAGI2TG94BBB=","status":"CompletedWithError","errorMsg":"Mailbox not accessible","newEmailId":""}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Creates a new email threat investigation to scan and analyze reported emails across configured analysis engines.",
        "requestBody": {
          "description": "The investigation parameters including target emails, scan types, and analysis engine selections.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationRequest"
              },
              "example": {"headers":[{"ip":"","from":"attacker@malicious-domain.com","to":"","cc":"","bcc":"","subject":"Urgent: Verify your account","senderName":""}],"bodies":[{"url":"https://malicious-domain.com/login","keyword":"","regex":""}],"attachments":[{"name":"","md5":"","sha512":"","extension":".exe"}],"logicalOperator":0,"name":"Phishing Campaign Investigation Q1","duration":24,"startDate":"2026-03-01 00:00:00","endDate":"2026-03-10 23:59:59","targetUserType":"SpecificUsers","targetUsers":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc"],"isScanEnterpriseVault":false,"scanTypes":[{"type":"O365","mailConfigurationResourceId":"Mp4Lw7nR2xKq"}],"investigationType":"Manual","autoAction":{"type":"NoAction","isPermanentDelete":false,"warningMessage":""},"scannedUsersCount":0,"completedUsersCount":0,"progress":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationRequest"
              },
              "example": {"headers":[{"ip":"","from":"attacker@malicious-domain.com","to":"","cc":"","bcc":"","subject":"Urgent: Verify your account","senderName":""}],"bodies":[{"url":"https://malicious-domain.com/login","keyword":"","regex":""}],"attachments":[{"name":"","md5":"","sha512":"","extension":".exe"}],"logicalOperator":0,"name":"Phishing Campaign Investigation Q1","duration":24,"startDate":"2026-03-01 00:00:00","endDate":"2026-03-10 23:59:59","targetUserType":"SpecificUsers","targetUsers":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc"],"isScanEnterpriseVault":false,"scanTypes":[{"type":"O365","mailConfigurationResourceId":"Mp4Lw7nR2xKq"}],"investigationType":"Manual","autoAction":{"type":"NoAction","isPermanentDelete":false,"warningMessage":""},"scannedUsersCount":0,"completedUsersCount":0,"progress":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationRequest"
              },
              "example": {"headers":[{"ip":"","from":"attacker@malicious-domain.com","to":"","cc":"","bcc":"","subject":"Urgent: Verify your account","senderName":""}],"bodies":[{"url":"https://malicious-domain.com/login","keyword":"","regex":""}],"attachments":[{"name":"","md5":"","sha512":"","extension":".exe"}],"logicalOperator":0,"name":"Phishing Campaign Investigation Q1","duration":24,"startDate":"2026-03-01 00:00:00","endDate":"2026-03-10 23:59:59","targetUserType":"SpecificUsers","targetUsers":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc"],"isScanEnterpriseVault":false,"scanTypes":[{"type":"O365","mailConfigurationResourceId":"Mp4Lw7nR2xKq"}],"investigationType":"Manual","autoAction":{"type":"NoAction","isPermanentDelete":false,"warningMessage":""},"scannedUsersCount":0,"completedUsersCount":0,"progress":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationRequest"
              },
              "example": {"headers":[{"ip":"","from":"attacker@malicious-domain.com","to":"","cc":"","bcc":"","subject":"Urgent: Verify your account","senderName":""}],"bodies":[{"url":"https://malicious-domain.com/login","keyword":"","regex":""}],"attachments":[{"name":"","md5":"","sha512":"","extension":".exe"}],"logicalOperator":0,"name":"Phishing Campaign Investigation Q1","duration":24,"startDate":"2026-03-01 00:00:00","endDate":"2026-03-10 23:59:59","targetUserType":"SpecificUsers","targetUsers":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc"],"isScanEnterpriseVault":false,"scanTypes":[{"type":"O365","mailConfigurationResourceId":"Mp4Lw7nR2xKq"}],"investigationType":"Manual","autoAction":{"type":"NoAction","isPermanentDelete":false,"warningMessage":""},"scannedUsersCount":0,"completedUsersCount":0,"progress":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/{resourceId}": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the full details of an existing investigation, including its status, scan results, and associated emails.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/{resourceId}/user": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Adds a user (analyst) to an existing investigation, granting them access to participate in the threat analysis workflow.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The user details to add to the investigation.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationUserRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","totalMailCount":1250,"filteredMailCount":3}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationUserRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","totalMailCount":1250,"filteredMailCount":3}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationUserRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","totalMailCount":1250,"filteredMailCount":3}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationUserRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","totalMailCount":1250,"filteredMailCount":3}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Marks a user's participation in an investigation as finished, recording their individual analysis completion status.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The finish details including the user's analysis outcome.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.FinishUserInvestigationRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","scanResultMessage":"Scan completed successfully. 3 matching emails found out of 1250 total."}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.FinishUserInvestigationRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","scanResultMessage":"Scan completed successfully. 3 matching emails found out of 1250 total."}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.FinishUserInvestigationRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","scanResultMessage":"Scan completed successfully. 3 matching emails found out of 1250 total."}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.FinishUserInvestigationRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","scanResultMessage":"Scan completed successfully. 3 matching emails found out of 1250 total."}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/{resourceId}/result": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Records the final result of an investigation, capturing the analyst's verdict and any remediation actions taken.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The investigation result details including verdict and notes.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationResultRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","mailId":"AAMkAGI2TG93AAA=","folderName":"Inbox","folderType":"Inbox","senderIp":"198.51.100.42","from":"attacker@malicious-domain.com","senderName":"IT Support","recipients":[{"email":"john.doe@acme.com","recipientType":"To"},{"email":"security-team@acme.com","recipientType":"Cc"}],"subject":"Urgent: Verify your account credentials","attachmentCount":1,"receivedTime":"2026-03-05 14:30:00","investigationFilterTagList":["HeaderFrom","HeaderSubject","BodyUrl"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationResultRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","mailId":"AAMkAGI2TG93AAA=","folderName":"Inbox","folderType":"Inbox","senderIp":"198.51.100.42","from":"attacker@malicious-domain.com","senderName":"IT Support","recipients":[{"email":"john.doe@acme.com","recipientType":"To"},{"email":"security-team@acme.com","recipientType":"Cc"}],"subject":"Urgent: Verify your account credentials","attachmentCount":1,"receivedTime":"2026-03-05 14:30:00","investigationFilterTagList":["HeaderFrom","HeaderSubject","BodyUrl"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationResultRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","mailId":"AAMkAGI2TG93AAA=","folderName":"Inbox","folderType":"Inbox","senderIp":"198.51.100.42","from":"attacker@malicious-domain.com","senderName":"IT Support","recipients":[{"email":"john.doe@acme.com","recipientType":"To"},{"email":"security-team@acme.com","recipientType":"Cc"}],"subject":"Urgent: Verify your account credentials","attachmentCount":1,"receivedTime":"2026-03-05 14:30:00","investigationFilterTagList":["HeaderFrom","HeaderSubject","BodyUrl"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationResultRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","mailId":"AAMkAGI2TG93AAA=","folderName":"Inbox","folderType":"Inbox","senderIp":"198.51.100.42","from":"attacker@malicious-domain.com","senderName":"IT Support","recipients":[{"email":"john.doe@acme.com","recipientType":"To"},{"email":"security-team@acme.com","recipientType":"Cc"}],"subject":"Urgent: Verify your account credentials","attachmentCount":1,"receivedTime":"2026-03-05 14:30:00","investigationFilterTagList":["HeaderFrom","HeaderSubject","BodyUrl"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/{resourceId}/progress": {
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Updates the progress status of an ongoing investigation, reflecting the current stage of the analysis workflow.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated progress details for the investigation.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationProgressRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","analyzedMailCount":450}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationProgressRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","analyzedMailCount":450}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationProgressRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","analyzedMailCount":450}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationProgressRequest"
              },
              "example": {"investigationId":"Ht4Wn8kL2mXq","investigationScanTypeId":"Jx6Rp3nQ9wLm","email":"john.doe@acme.com","analyzedMailCount":450}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/{resourceId}/cancel": {
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Cancels an in-progress investigation, stopping any pending analysis tasks and marking it as cancelled.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation to cancel.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/scan-types": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the available scan type configurations for investigations, including supported analysis engines and their scan capabilities.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.Domain.Entities.Investigation.ScanConfigurationDetailDto, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/{resourceId}/search-email": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Searches and returns a paginated list of emails associated with a specific investigation, including their analysis status and threat verdicts.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Pagination, sorting, and filter criteria for the investigation email search.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Investigation.Search.InvestigationEmailSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/{resourceId}/search-user": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Searches and returns a paginated list of users (analysts) assigned to a specific investigation, including their participation status.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Pagination, sorting, and filter criteria for the investigation user search.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Investigation.Search.InvestigationUserSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/search": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Searches and returns a paginated list of all investigations for the current company, with optional filtering by status, date, or threat type.",
        "requestBody": {
          "description": "Pagination, sorting, and filter criteria for the investigation search.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Investigation.Search.InvestigationSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/{resourceId}/summary": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves a summary overview of a specific investigation, including scan progress, threat counts, and action outcomes.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationSummaryDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/investigations/search/export": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Exports the investigation list as a downloadable file in the specified format (e.g., CSV, Excel).",
        "requestBody": {
          "description": "Export parameters including format, pagination, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/investigations/{resourceId}/search-email/export": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Exports the investigation email list as a downloadable file in the specified format for a given investigation.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation whose emails to export.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Export parameters including format, pagination, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/investigations/{resourceId}/search-user/export": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Exports the investigation user (analyst) list as a downloadable file in the specified format for a given investigation.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the investigation whose users to export.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Export parameters including format, pagination, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/ir/dashboard/summary": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the incident response dashboard summary, including total reported emails, investigations, and threat resolution metrics.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Investigation.Dto.DashboardSummaryDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/ir/dashboard/top-rules": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the most frequently triggered playbook rules, providing insight into the most common threat patterns detected.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Investigation.Dto.TopRuleDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/ir/dashboard/running-investigations": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the list of currently active and recently completed investigations for the dashboard overview.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Investigation.Dto.RunningInvestigationDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notified-emails/search": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Searches and returns a paginated list of emails reported by users via the phishing reporter add-in, with optional clustering and filtering.",
        "requestBody": {
          "description": "Pagination, sorting, filter, and clustering criteria for the notified email search.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"EmailCategory","operator":"Include","value":"Spam,Marketing"}],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"clusteredBy":""}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"EmailCategory","operator":"Include","value":"Spam,Marketing"}],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"clusteredBy":""}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"EmailCategory","operator":"Include","value":"Spam,Marketing"}],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"clusteredBy":""}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"EmailCategory","operator":"Include","value":"Spam,Marketing"}],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"clusteredBy":""}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Search.NotifiedEmailSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notified-emails/{resourceId}": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the full details of a specific reported email, including sender info, analysis results, headers, and threat verdicts.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the notified email.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "isPublic",
            "in": "query",
            "description": "Whether to retrieve the public-facing version of the email details (without sensitive internal data).",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Updates the classification, analyst notes, or status of a specific reported email.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the notified email to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated fields for the notified email.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.UpdateNotifiedEmailRequest"
              },
              "example": {"result":"Phishing","status":"Closed","tag":"confirmed-phishing","note":"Verified phishing attempt targeting credentials. Sender domain flagged.","isNotifyUser":true,"customMessage":"Thank you for reporting this email. It has been confirmed as a phishing attempt and removed.","notificationTemplateResourceId":"Bn5Kw8mR3xLp"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.UpdateNotifiedEmailRequest"
              },
              "example": {"result":"Phishing","status":"Closed","tag":"confirmed-phishing","note":"Verified phishing attempt targeting credentials. Sender domain flagged.","isNotifyUser":true,"customMessage":"Thank you for reporting this email. It has been confirmed as a phishing attempt and removed.","notificationTemplateResourceId":"Bn5Kw8mR3xLp"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.UpdateNotifiedEmailRequest"
              },
              "example": {"result":"Phishing","status":"Closed","tag":"confirmed-phishing","note":"Verified phishing attempt targeting credentials. Sender domain flagged.","isNotifyUser":true,"customMessage":"Thank you for reporting this email. It has been confirmed as a phishing attempt and removed.","notificationTemplateResourceId":"Bn5Kw8mR3xLp"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.UpdateNotifiedEmailRequest"
              },
              "example": {"result":"Phishing","status":"Closed","tag":"confirmed-phishing","note":"Verified phishing attempt targeting credentials. Sender domain flagged.","isNotifyUser":true,"customMessage":"Thank you for reporting this email. It has been confirmed as a phishing attempt and removed.","notificationTemplateResourceId":"Bn5Kw8mR3xLp"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notified-emails/{resourceId}/ai-analysis": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the latest Agentic AI analysis result for a reported email.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the notified email.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailAIAnalysisDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notified-emails/{resourceId}/ai-analysis/re-analyze": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Queues a fresh Agentic AI re-analysis for a reported email. A new analysis record is\r\ncreated; the request is ignored when an analysis is already pending or running.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the notified email.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailAIAnalysisDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notified-emails/for-edit/{resourceId}": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves a notified email in an editable format, including mutable fields like classification and analyst notes.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the notified email to edit.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailForEditDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notified-emails/attachments/{resourceId}": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Downloads a specific email attachment file from a reported email, optionally protected with a ZIP password.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the attachment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zipPassword",
            "in": "query",
            "description": "Optional password to apply when zipping the attachment for secure download.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/notified-emails/attachments": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Downloads all attachments from a reported email as a single password-protected ZIP archive.",
        "requestBody": {
          "description": "The download request containing the email resource ID and ZIP password for encryption.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.DownloadAttachmentZipRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","zipPassword":"infected123"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.DownloadAttachmentZipRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","zipPassword":"infected123"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.DownloadAttachmentZipRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","zipPassword":"infected123"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.DownloadAttachmentZipRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","zipPassword":"infected123"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/notified-emails/msg-files/{resourceId}": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Downloads the original message file (MSG/EML) of a reported email for offline analysis or archival.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the notified email.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zipPassword",
            "in": "query",
            "description": "Optional password parameter (currently unused; the file is downloaded without encryption).",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/notified-emails/msg-files": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Downloads the original message file (MSG/EML) of a reported email as a password-protected ZIP archive.",
        "requestBody": {
          "description": "The download request containing the email resource ID and ZIP password for encryption.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.DownloadMsgZipRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","zipPassword":"infected123"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.DownloadMsgZipRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","zipPassword":"infected123"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.DownloadMsgZipRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","zipPassword":"infected123"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.DownloadMsgZipRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","zipPassword":"infected123"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/notified-emails/bulk-update": {
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Bulk updates the classification or status of multiple reported emails in a single operation, with optional select-all support.",
        "requestBody": {
          "description": "The bulk update parameters including target emails, new field values, and optional select-all criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.BulkUpdateNotifiedEmailRequest"
              },
              "example": {"resourceIdList":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc","Km7Wx4pL8nRt"],"result":"Malicious","status":"Closed","tag":"bulk-resolved","note":"Bulk closure after investigation confirmed malicious campaign.","isNotifyUser":true,"customMessage":"A malicious email has been identified and handled by the security team.","notificationTemplateResourceId":"Bn5Kw8mR3xLp"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.BulkUpdateNotifiedEmailRequest"
              },
              "example": {"resourceIdList":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc","Km7Wx4pL8nRt"],"result":"Malicious","status":"Closed","tag":"bulk-resolved","note":"Bulk closure after investigation confirmed malicious campaign.","isNotifyUser":true,"customMessage":"A malicious email has been identified and handled by the security team.","notificationTemplateResourceId":"Bn5Kw8mR3xLp"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.BulkUpdateNotifiedEmailRequest"
              },
              "example": {"resourceIdList":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc","Km7Wx4pL8nRt"],"result":"Malicious","status":"Closed","tag":"bulk-resolved","note":"Bulk closure after investigation confirmed malicious campaign.","isNotifyUser":true,"customMessage":"A malicious email has been identified and handled by the security team.","notificationTemplateResourceId":"Bn5Kw8mR3xLp"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.BulkUpdateNotifiedEmailRequest"
              },
              "example": {"resourceIdList":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc","Km7Wx4pL8nRt"],"result":"Malicious","status":"Closed","tag":"bulk-resolved","note":"Bulk closure after investigation confirmed malicious campaign.","isNotifyUser":true,"customMessage":"A malicious email has been identified and handled by the security team.","notificationTemplateResourceId":"Bn5Kw8mR3xLp"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notified-emails/bulk-update-email-stats": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Returns email count statistics for a proposed bulk update operation, allowing the user to preview the impact before confirming.",
        "requestBody": {
          "description": "The bulk update parameters to compute statistics for, including target emails and select-all criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.BulkUpdateNotifiedEmailRequest"
              },
              "example": {"resourceIdList":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc","Km7Wx4pL8nRt"],"result":"Malicious","status":"Closed","tag":"bulk-resolved","note":"Bulk closure after investigation confirmed malicious campaign.","isNotifyUser":true,"customMessage":"A malicious email has been identified and handled by the security team.","notificationTemplateResourceId":"Bn5Kw8mR3xLp"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.BulkUpdateNotifiedEmailRequest"
              },
              "example": {"resourceIdList":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc","Km7Wx4pL8nRt"],"result":"Malicious","status":"Closed","tag":"bulk-resolved","note":"Bulk closure after investigation confirmed malicious campaign.","isNotifyUser":true,"customMessage":"A malicious email has been identified and handled by the security team.","notificationTemplateResourceId":"Bn5Kw8mR3xLp"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.BulkUpdateNotifiedEmailRequest"
              },
              "example": {"resourceIdList":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc","Km7Wx4pL8nRt"],"result":"Malicious","status":"Closed","tag":"bulk-resolved","note":"Bulk closure after investigation confirmed malicious campaign.","isNotifyUser":true,"customMessage":"A malicious email has been identified and handled by the security team.","notificationTemplateResourceId":"Bn5Kw8mR3xLp"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.BulkUpdateNotifiedEmailRequest"
              },
              "example": {"resourceIdList":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc","Km7Wx4pL8nRt"],"result":"Malicious","status":"Closed","tag":"bulk-resolved","note":"Bulk closure after investigation confirmed malicious campaign.","isNotifyUser":true,"customMessage":"A malicious email has been identified and handled by the security team.","notificationTemplateResourceId":"Bn5Kw8mR3xLp"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailStatsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notified-emails/search/export": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Exports the notified email list as a downloadable file in the specified format (e.g., CSV, Excel).",
        "requestBody": {
          "description": "Export parameters including format, pagination, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/notified-emails/matching-playbooks/{playbookResourceId}/search": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Searches and returns a paginated list of notified emails that match a specific playbook's rule criteria.",
        "parameters": [
          {
            "name": "playbookResourceId",
            "in": "path",
            "description": "The unique resource identifier of the playbook whose matching rules to evaluate.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Pagination, sorting, and filter criteria for the matching email search.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"EmailCategory","operator":"Include","value":"Spam,Marketing"}],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"clusteredBy":""}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"EmailCategory","operator":"Include","value":"Spam,Marketing"}],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"clusteredBy":""}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"EmailCategory","operator":"Include","value":"Spam,Marketing"}],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"clusteredBy":""}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"EmailCategory","operator":"Include","value":"Spam,Marketing"}],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"clusteredBy":""}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Search.MatchingNotifiedEmailSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notified-emails/matching-playbooks/{playbookResourceId}/search/export": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Exports the list of notified emails matching a specific playbook's rules as a downloadable file.",
        "parameters": [
          {
            "name": "playbookResourceId",
            "in": "path",
            "description": "The unique resource identifier of the playbook whose matching emails to export.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Export parameters including format, pagination, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/notified-emails/{resourceId}/reanalyze": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Triggers a re-analysis of a previously reported email, resubmitting it to all configured analysis engines for fresh threat assessment.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the notified email to re-analyze.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notified-emails/fortisandbox-attachments-report/{resourceId}": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Downloads the FortiSandbox analysis report for a specific email attachment, providing detailed sandbox execution results.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the FortiSandbox attachment analysis report.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-reporter": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Creates or updates the phishing reporter add-in configuration including branding, dialog box settings, and reporting behavior.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "AddInName",
                  "ApiKey",
                  "ApiUrl",
                  "BrandName",
                  "CompanyKey",
                  "WarningLabel"
                ],
                "type": "object",
                "properties": {
                  "File": {
                    "type": "string",
                    "description": "Logo or icon file for the phishing reporter add-in branding.",
                    "format": "binary"
                  },
                  "AddInName": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Display name of the Outlook add-in.",
                    "deprecated": true
                  },
                  "BrandName": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Brand name displayed in the add-in interface.",
                    "deprecated": true
                  },
                  "WarningLabel": {
                    "type": "string",
                    "description": "Warning label text shown to users when reporting suspicious emails."
                  },
                  "AddInBackgroundColor": {
                    "maxLength": 7,
                    "type": "string",
                    "description": "Page View add-in panel background color. #RRGGBB, or empty for the default white."
                  },
                  "IsAddInTextCentered": {
                    "type": "boolean",
                    "description": "Whether Page View add-in message text is centered."
                  },
                  "MaxLogFileSize": {
                    "type": "integer",
                    "description": "Maximum size in bytes for log files generated by the add-in.",
                    "format": "int32"
                  },
                  "IsProcessAttachmentOnTheFly": {
                    "type": "boolean",
                    "description": "Whether to process email attachments in real-time during reporting."
                  },
                  "To": {
                    "type": "string",
                    "description": "Primary recipient email address for reported phishing emails."
                  },
                  "Cc": {
                    "type": "string",
                    "description": "CC recipient email address for reported phishing emails."
                  },
                  "Bcc": {
                    "type": "string",
                    "description": "BCC recipient email address for reported phishing emails."
                  },
                  "Subject": {
                    "type": "string",
                    "description": "Subject line for the forwarded phishing report email."
                  },
                  "Content": {
                    "type": "string",
                    "description": "Body content for the forwarded phishing report email."
                  },
                  "EnterpriseVaultUrl": {
                    "type": "string",
                    "description": "URL of the Enterprise Vault server for archived email access."
                  },
                  "ApiUrl": {
                    "type": "string",
                    "description": "API endpoint URL for the phishing reporter backend service."
                  },
                  "ApiKey": {
                    "type": "string",
                    "description": "API key used to authenticate the add-in with the backend service."
                  },
                  "CompanyKey": {
                    "type": "string",
                    "description": "Company-specific key that identifies the tenant for the add-in."
                  },
                  "IsEnableProxy": {
                    "type": "boolean",
                    "description": "Whether proxy settings are enabled for the add-in network communication."
                  },
                  "IsEnableAddIn": {
                    "type": "boolean",
                    "description": "Whether the Outlook add-in is enabled for end users."
                  },
                  "IsSendInformationEmail": {
                    "type": "boolean",
                    "description": "Whether to send an information email to the reporter after submission."
                  },
                  "SendUsACopy": {
                    "type": "boolean",
                    "description": "Whether to send a copy of the reported email to the configured recipients."
                  },
                  "IsMicrosoftDefenderIntegrationEnabled": {
                    "type": "boolean",
                    "description": "Whether Microsoft Defender integration is enabled for reported emails."
                  },
                  "DefenderReportingEmailAddress": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Email address used for Microsoft Defender submission reporting."
                  },
                  "WriteAddinStatusToHKLM": {
                    "type": "boolean",
                    "description": "Whether to write add-in status to HKEY_LOCAL_MACHINE registry."
                  },
                  "WriteAddinStatusToHKCU": {
                    "type": "boolean",
                    "description": "Whether to write add-in status to HKEY_CURRENT_USER registry."
                  },
                  "ProxyMode": {
                    "type": "integer",
                    "description": "Proxy mode setting (e.g., 0 = no proxy, 1 = system proxy, 2 = custom proxy). Allowed values: 0 = NoProxy | 1 = Auto | 2 = Custom",
                    "format": "int32"
                  },
                  "ProxyAddress": {
                    "type": "string",
                    "description": "Proxy server address when using a custom proxy."
                  },
                  "ProxyPort": {
                    "type": "string",
                    "description": "Proxy server port number."
                  },
                  "ProxyUserName": {
                    "type": "string",
                    "description": "Username for proxy server authentication."
                  },
                  "ProxyUserPassword": {
                    "type": "string",
                    "description": "Password for proxy server authentication."
                  },
                  "DialogBoxSettings": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.PhishingReporterAddinDialogBoxSetting"
                    },
                    "description": "Localized dialog box settings for the add-in UI in different languages."
                  }
                }
              },
              "example": {
                "AddInName": "Keepnet Phishing Reporter",
                "BrandName": "Keepnet Labs",
                "WarningLabel": "Are you sure you want to report this email as phishing?",
                "AddInBackgroundColor": "#0B2545",
                "IsAddInTextCentered": false,
                "MaxLogFileSize": 5242880,
                "IsProcessAttachmentOnTheFly": true,
                "To": "security@acme.com",
                "Cc": "soc-team@acme.com",
                "Bcc": "audit@acme.com",
                "Subject": "[Phishing Report] Suspicious email reported by {{reporter}}",
                "Content": "A suspicious email has been reported. Please review the attached original message.",
                "EnterpriseVaultUrl": "https://vault.acme.com/api",
                "ApiUrl": "https://api.keepnetlabs.com/phishing-reporter",
                "ApiKey": "pr_api_key_placeholder",
                "CompanyKey": "ck_company_key_placeholder",
                "IsEnableProxy": false,
                "IsEnableAddIn": true,
                "IsSendInformationEmail": true,
                "SendUsACopy": true,
                "IsMicrosoftDefenderIntegrationEnabled": false,
                "DefenderReportingEmailAddress": "defender-submit@acme.com",
                "WriteAddinStatusToHKLM": false,
                "WriteAddinStatusToHKCU": true,
                "ProxyMode": 0,
                "ProxyAddress": "",
                "ProxyPort": "",
                "ProxyUserName": "",
                "ProxyUserPassword": "",
                "DialogBoxSettings": [
                  {
                    "LanguageResourceId": "Ln4Kp2mR4xEn",
                    "MsgBoxTitle": "Report Phishing",
                    "MsgBoxBtnYesText": "Yes",
                    "MsgBoxBtnNoText": "No",
                    "MsgBoxBtnCancelText": "Cancel",
                    "MsgBoxBtnOkText": "OK",
                    "AnalysisThankYouMessage": "Thank you for reporting this email. Our security team will review it.",
                    "NoInternetConnectionMessage": "No internet connection. Please try again later.",
                    "EmailSendingErrorMessage": "Failed to send the report. Please try again.",
                    "EmailSelectionErrorMessage": "Please select an email to report.",
                    "BadFormatEmailMessage": "The selected email has an invalid format.",
                    "IsConfirmationBeforeAnalysis": true,
                    "AnalysisConfirmationMessage": "This email will be sent to the security team for analysis. Continue?",
                    "IsDeleteEmailBeforeAnalysis": false,
                    "IsDeleteWithoutConfirmation": false,
                    "AnalysisEmailDeleteMessage": "The reported email has been removed from your inbox.",
                    "IsSendSimulationMails": true,
                    "SimulationMailMessage": "This was a phishing simulation. Great job reporting it!",
                    "IsDefault": true
                  }
                ]
              },
              "encoding": {
                "File": {
                  "style": "form"
                },
                "AddInName": {
                  "style": "form"
                },
                "BrandName": {
                  "style": "form"
                },
                "WarningLabel": {
                  "style": "form"
                },
                "AddInBackgroundColor": {
                  "style": "form"
                },
                "IsAddInTextCentered": {
                  "style": "form"
                },
                "MaxLogFileSize": {
                  "style": "form"
                },
                "IsProcessAttachmentOnTheFly": {
                  "style": "form"
                },
                "To": {
                  "style": "form"
                },
                "Cc": {
                  "style": "form"
                },
                "Bcc": {
                  "style": "form"
                },
                "Subject": {
                  "style": "form"
                },
                "Content": {
                  "style": "form"
                },
                "EnterpriseVaultUrl": {
                  "style": "form"
                },
                "ApiUrl": {
                  "style": "form"
                },
                "ApiKey": {
                  "style": "form"
                },
                "CompanyKey": {
                  "style": "form"
                },
                "IsEnableProxy": {
                  "style": "form"
                },
                "IsEnableAddIn": {
                  "style": "form"
                },
                "IsSendInformationEmail": {
                  "style": "form"
                },
                "SendUsACopy": {
                  "style": "form"
                },
                "IsMicrosoftDefenderIntegrationEnabled": {
                  "style": "form"
                },
                "DefenderReportingEmailAddress": {
                  "style": "form"
                },
                "WriteAddinStatusToHKLM": {
                  "style": "form"
                },
                "WriteAddinStatusToHKCU": {
                  "style": "form"
                },
                "ProxyMode": {
                  "style": "form"
                },
                "ProxyAddress": {
                  "style": "form"
                },
                "ProxyPort": {
                  "style": "form"
                },
                "ProxyUserName": {
                  "style": "form"
                },
                "ProxyUserPassword": {
                  "style": "form"
                },
                "DialogBoxSettings": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the current phishing reporter add-in configuration for the company, including branding and behavior settings.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingReporter.Dto.PhishingReporterDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/img": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Downloads the custom logo image configured for the phishing reporter Outlook add-in.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-reporter/summary": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves a summary of phishing reporter activity within the specified date range, including report counts and response metrics.",
        "parameters": [
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date of the reporting period (inclusive), in string format.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date of the reporting period (inclusive), in string format.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingReporter.Dto.PhishingReporterSummaryViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/search": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Searches and returns a paginated list of users who have reported phishing emails via the reporter add-in.",
        "requestBody": {
          "description": "Pagination, sorting, and filter criteria for the phishing reporter user search.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.PhishingReporterUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.PhishingReporterUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.PhishingReporterUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.PhishingReporterUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingReporter.Search.PhishingReporterUserSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/search/export": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Exports the phishing reporter user list as a downloadable file in the specified format (e.g., CSV, Excel).",
        "requestBody": {
          "description": "Export parameters including format, pagination, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-reporter-users/{resourceId}": {
      "delete": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Permanently deletes a phishing reporter user record, removing their reporting history from the system.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing reporter user to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/generate/outlook-addin": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Triggers the generation of the Outlook desktop phishing reporter add-in installer (MSI) with the company's custom configuration.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/generate/microsoft365-addin": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Generates and downloads the Microsoft 365 OWA phishing reporter add-in manifest XML file with the company's custom configuration.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/generate/microsoft365-spam-reporting-addin": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Generates and downloads the Microsoft 365 spam reporting add-in manifest XML file for integrated junk mail reporting.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/generate/gsuite-addin": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Generates and downloads the Google Workspace (G Suite) phishing reporter add-in as a ZIP archive containing the Apps Script project.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/zip": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/download/outlook-addin/{resourceId}": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Downloads a previously generated Outlook desktop phishing reporter add-in MSI installer by its resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the generated add-in build.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-reporter/generate/diagnostic-tool": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Triggers the generation of the diagnostic tool installer used for troubleshooting phishing reporter add-in connectivity issues.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/download/diagnostic-tool/{resourceId}": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Downloads a previously generated diagnostic tool MSI installer by its resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the generated diagnostic tool build.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-reporter/history/search": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Searches and returns a paginated history of generated phishing reporter add-in builds, including their status and download availability.",
        "requestBody": {
          "description": "Pagination, sorting, and filter criteria for the application generation history search.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.GeneratedApplicationHistorySearchRequest"
              },
              "example": {"filter":{"condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.GeneratedApplicationHistorySearchRequest"
              },
              "example": {"filter":{"condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.GeneratedApplicationHistorySearchRequest"
              },
              "example": {"filter":{"condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.GeneratedApplicationHistorySearchRequest"
              },
              "example": {"filter":{"condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingReporter.Search.GeneratedApplicationHistorySearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/history/search/export": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Exports the phishing reporter download history as a downloadable file in the specified format (e.g., CSV, Excel).",
        "requestBody": {
          "description": "Export parameters including format, pagination, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-reporter-users/bulk-delete": {
      "delete": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Bulk deletes multiple phishing reporter user records in a single operation.",
        "requestBody": {
          "description": "The list of phishing reporter user resource identifiers to delete.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.PhishingReporterUserBulkDeleteRequest"
              },
              "example": {"items":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.PhishingReporterUserBulkDeleteRequest"
              },
              "example": {"items":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.PhishingReporterUserBulkDeleteRequest"
              },
              "example": {"items":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.PhishingReporterUserBulkDeleteRequest"
              },
              "example": {"items":["Rn5Kp8mQ3wLx","Yt2Hv6jD9nBc"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/translate-addin-settings": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Translates the phishing reporter add-in dialog box settings JSON into the specified target language using Azure OpenAI.",
        "requestBody": {
          "description": "The translation request containing the JSON to translate and the target language name.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.OpenAI.Dto.GetDialogBoxSettingsTranslationServiceRequest"
              },
              "example": {"languageJson":"{\"reportButton\":\"Report\",\"cancelButton\":\"Cancel\"}","languageName":"Turkish"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.OpenAI.Dto.GetDialogBoxSettingsTranslationServiceRequest"
              },
              "example": {"languageJson":"{\"reportButton\":\"Report\",\"cancelButton\":\"Cancel\"}","languageName":"Turkish"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.OpenAI.Dto.GetDialogBoxSettingsTranslationServiceRequest"
              },
              "example": {"languageJson":"{\"reportButton\":\"Report\",\"cancelButton\":\"Cancel\"}","languageName":"Turkish"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.OpenAI.Dto.GetDialogBoxSettingsTranslationServiceRequest"
              },
              "example": {"languageJson":"{\"reportButton\":\"Report\",\"cancelButton\":\"Cancel\"}","languageName":"Turkish"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/o365-spam-reporting/settings": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the default O365 spam reporting application settings for the phishing reporter add-in.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingReporter.Dto.Setting, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/link-graph-account": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Links a Microsoft Graph account to the phishing reporter application, enabling mailbox access for automated email reporting.",
        "requestBody": {
          "description": "The Microsoft tenant ID to link for Graph API access.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingReporter.Dto.ConnectGraphAccountRequest"
              },
              "example": {"tenantId":"00000000-0000-0000-0000-000000000000"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingReporter.Dto.ConnectGraphAccountRequest"
              },
              "example": {"tenantId":"00000000-0000-0000-0000-000000000000"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingReporter.Dto.ConnectGraphAccountRequest"
              },
              "example": {"tenantId":"00000000-0000-0000-0000-000000000000"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingReporter.Dto.ConnectGraphAccountRequest"
              },
              "example": {"tenantId":"00000000-0000-0000-0000-000000000000"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ApiResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ApiResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ApiResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/unlink-graph-account": {
      "delete": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Unlinks the currently connected Microsoft Graph account from the phishing reporter application, revoking mailbox access.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-reporter/app-permission-access/{isGranted}": {
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Updates the application permission access granted status for the phishing reporter, controlling whether the add-in has delegated admin consent.",
        "parameters": [
          {
            "name": "isGranted",
            "in": "path",
            "description": "Whether application permission access has been granted (true) or revoked (false).",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/playbooks": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Creates a new automated playbook that defines rules and actions for handling reported emails based on analysis engine results.",
        "requestBody": {
          "description": "The playbook configuration including name, rule conditions, and automated response actions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.CreatePlaybookRequest"
              },
              "example": {"name":"Auto-Quarantine Phishing Emails","description":"Automatically quarantine confirmed phishing emails and notify affected users","priority":"High","tags":["phishing","auto-response"],"isActive":true,"condition":{"operator":"AND","conditionGroups":[{"operator":"AND","conditionItems":[{"fieldName":"AnalysisResult","operator":"eq","format":"string","value":"Phishing"}],"conditionGroups":[]}]},"playbookAction":{"resourceId":"Kx9Rm3nQ7wLp","playbookId":0,"markType":"Phishing","tags":["confirmed-phishing"]},"playbookActionStatus":{"actionStatusType":"InProgress"},"playbookActionAnalyzers":[{"resourceId":"Dn3Wp7kR2mLx","integrationId":"65BVv1136Vnp","isCheckHash":true,"isCheckFile":false,"isCheckUrl":true,"isCheckSenderIP":true}],"playbookActionInvestigations":[{"resourceId":"Qm8Kv4nL6wRp","isCreatedByAnalyzer":false,"scanTypes":[{"type":"O365","mailConfigurationResourceId":"Mp4Lw7nR2xKq"}],"autoDetectFilters":true,"filters":[],"emailDateRangeType":"SevenDays","durationType":null,"targetUserType":"AllUsers","targetUsers":[],"actionType":"Quarantine","actionNotifyTargetUserType":"MailboxOwner","actionNotifyTargetUsers":[],"emailTemplateId":0,"autoAction":{"type":"Delete","isPermanentDelete":false,"warningMessage":"A phishing email has been quarantined from your mailbox."}}],"playbookActionNotifications":[{"resourceId":"Yt2Hv6jD9nBc","targetUserType":"Reporter","targetUsers":[],"emailTemplateId":"Bn5Kw8mR3xLp","analysisResultFilters":["Phishing","Malicious"]}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.CreatePlaybookRequest"
              },
              "example": {"name":"Auto-Quarantine Phishing Emails","description":"Automatically quarantine confirmed phishing emails and notify affected users","priority":"High","tags":["phishing","auto-response"],"isActive":true,"condition":{"operator":"AND","conditionGroups":[{"operator":"AND","conditionItems":[{"fieldName":"AnalysisResult","operator":"eq","format":"string","value":"Phishing"}],"conditionGroups":[]}]},"playbookAction":{"resourceId":"Kx9Rm3nQ7wLp","playbookId":0,"markType":"Phishing","tags":["confirmed-phishing"]},"playbookActionStatus":{"actionStatusType":"InProgress"},"playbookActionAnalyzers":[{"resourceId":"Dn3Wp7kR2mLx","integrationId":"65BVv1136Vnp","isCheckHash":true,"isCheckFile":false,"isCheckUrl":true,"isCheckSenderIP":true}],"playbookActionInvestigations":[{"resourceId":"Qm8Kv4nL6wRp","isCreatedByAnalyzer":false,"scanTypes":[{"type":"O365","mailConfigurationResourceId":"Mp4Lw7nR2xKq"}],"autoDetectFilters":true,"filters":[],"emailDateRangeType":"SevenDays","durationType":null,"targetUserType":"AllUsers","targetUsers":[],"actionType":"Quarantine","actionNotifyTargetUserType":"MailboxOwner","actionNotifyTargetUsers":[],"emailTemplateId":0,"autoAction":{"type":"Delete","isPermanentDelete":false,"warningMessage":"A phishing email has been quarantined from your mailbox."}}],"playbookActionNotifications":[{"resourceId":"Yt2Hv6jD9nBc","targetUserType":"Reporter","targetUsers":[],"emailTemplateId":"Bn5Kw8mR3xLp","analysisResultFilters":["Phishing","Malicious"]}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.CreatePlaybookRequest"
              },
              "example": {"name":"Auto-Quarantine Phishing Emails","description":"Automatically quarantine confirmed phishing emails and notify affected users","priority":"High","tags":["phishing","auto-response"],"isActive":true,"condition":{"operator":"AND","conditionGroups":[{"operator":"AND","conditionItems":[{"fieldName":"AnalysisResult","operator":"eq","format":"string","value":"Phishing"}],"conditionGroups":[]}]},"playbookAction":{"resourceId":"Kx9Rm3nQ7wLp","playbookId":0,"markType":"Phishing","tags":["confirmed-phishing"]},"playbookActionStatus":{"actionStatusType":"InProgress"},"playbookActionAnalyzers":[{"resourceId":"Dn3Wp7kR2mLx","integrationId":"65BVv1136Vnp","isCheckHash":true,"isCheckFile":false,"isCheckUrl":true,"isCheckSenderIP":true}],"playbookActionInvestigations":[{"resourceId":"Qm8Kv4nL6wRp","isCreatedByAnalyzer":false,"scanTypes":[{"type":"O365","mailConfigurationResourceId":"Mp4Lw7nR2xKq"}],"autoDetectFilters":true,"filters":[],"emailDateRangeType":"SevenDays","durationType":null,"targetUserType":"AllUsers","targetUsers":[],"actionType":"Quarantine","actionNotifyTargetUserType":"MailboxOwner","actionNotifyTargetUsers":[],"emailTemplateId":0,"autoAction":{"type":"Delete","isPermanentDelete":false,"warningMessage":"A phishing email has been quarantined from your mailbox."}}],"playbookActionNotifications":[{"resourceId":"Yt2Hv6jD9nBc","targetUserType":"Reporter","targetUsers":[],"emailTemplateId":"Bn5Kw8mR3xLp","analysisResultFilters":["Phishing","Malicious"]}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.CreatePlaybookRequest"
              },
              "example": {"name":"Auto-Quarantine Phishing Emails","description":"Automatically quarantine confirmed phishing emails and notify affected users","priority":"High","tags":["phishing","auto-response"],"isActive":true,"condition":{"operator":"AND","conditionGroups":[{"operator":"AND","conditionItems":[{"fieldName":"AnalysisResult","operator":"eq","format":"string","value":"Phishing"}],"conditionGroups":[]}]},"playbookAction":{"resourceId":"Kx9Rm3nQ7wLp","playbookId":0,"markType":"Phishing","tags":["confirmed-phishing"]},"playbookActionStatus":{"actionStatusType":"InProgress"},"playbookActionAnalyzers":[{"resourceId":"Dn3Wp7kR2mLx","integrationId":"65BVv1136Vnp","isCheckHash":true,"isCheckFile":false,"isCheckUrl":true,"isCheckSenderIP":true}],"playbookActionInvestigations":[{"resourceId":"Qm8Kv4nL6wRp","isCreatedByAnalyzer":false,"scanTypes":[{"type":"O365","mailConfigurationResourceId":"Mp4Lw7nR2xKq"}],"autoDetectFilters":true,"filters":[],"emailDateRangeType":"SevenDays","durationType":null,"targetUserType":"AllUsers","targetUsers":[],"actionType":"Quarantine","actionNotifyTargetUserType":"MailboxOwner","actionNotifyTargetUsers":[],"emailTemplateId":0,"autoAction":{"type":"Delete","isPermanentDelete":false,"warningMessage":"A phishing email has been quarantined from your mailbox."}}],"playbookActionNotifications":[{"resourceId":"Yt2Hv6jD9nBc","targetUserType":"Reporter","targetUsers":[],"emailTemplateId":"Bn5Kw8mR3xLp","analysisResultFilters":["Phishing","Malicious"]}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/playbooks/{resourceId}": {
      "get": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Retrieves the full configuration of a specific playbook, including its rule definitions, conditions, and automated actions.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the playbook.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Permanently deletes a playbook and its associated rule definitions, stopping any future automated actions.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the playbook to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Updates an existing playbook's configuration, including rule conditions, action definitions, and notification settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the playbook to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated playbook configuration fields.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.UpdatePlaybookRequest"
              },
              "example": {"name":"Auto-Quarantine Phishing Emails (Updated)","description":"Updated playbook with additional analysis engines","priority":"VeryHigh","tags":["phishing","auto-response","critical"],"isActive":true,"condition":{"operator":"AND","conditionGroups":[{"operator":"AND","conditionItems":[{"fieldName":"AnalysisResult","operator":"eq","format":"string","value":"Phishing"}],"conditionGroups":[]}]},"playbookAction":{"resourceId":"Kx9Rm3nQ7wLp","playbookId":0,"markType":"Phishing","tags":["confirmed-phishing"]},"playbookActionStatus":{"actionStatusType":"Closed"},"playbookActionAnalyzers":[],"playbookActionInvestigations":[],"playbookActionNotifications":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.UpdatePlaybookRequest"
              },
              "example": {"name":"Auto-Quarantine Phishing Emails (Updated)","description":"Updated playbook with additional analysis engines","priority":"VeryHigh","tags":["phishing","auto-response","critical"],"isActive":true,"condition":{"operator":"AND","conditionGroups":[{"operator":"AND","conditionItems":[{"fieldName":"AnalysisResult","operator":"eq","format":"string","value":"Phishing"}],"conditionGroups":[]}]},"playbookAction":{"resourceId":"Kx9Rm3nQ7wLp","playbookId":0,"markType":"Phishing","tags":["confirmed-phishing"]},"playbookActionStatus":{"actionStatusType":"Closed"},"playbookActionAnalyzers":[],"playbookActionInvestigations":[],"playbookActionNotifications":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.UpdatePlaybookRequest"
              },
              "example": {"name":"Auto-Quarantine Phishing Emails (Updated)","description":"Updated playbook with additional analysis engines","priority":"VeryHigh","tags":["phishing","auto-response","critical"],"isActive":true,"condition":{"operator":"AND","conditionGroups":[{"operator":"AND","conditionItems":[{"fieldName":"AnalysisResult","operator":"eq","format":"string","value":"Phishing"}],"conditionGroups":[]}]},"playbookAction":{"resourceId":"Kx9Rm3nQ7wLp","playbookId":0,"markType":"Phishing","tags":["confirmed-phishing"]},"playbookActionStatus":{"actionStatusType":"Closed"},"playbookActionAnalyzers":[],"playbookActionInvestigations":[],"playbookActionNotifications":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.UpdatePlaybookRequest"
              },
              "example": {"name":"Auto-Quarantine Phishing Emails (Updated)","description":"Updated playbook with additional analysis engines","priority":"VeryHigh","tags":["phishing","auto-response","critical"],"isActive":true,"condition":{"operator":"AND","conditionGroups":[{"operator":"AND","conditionItems":[{"fieldName":"AnalysisResult","operator":"eq","format":"string","value":"Phishing"}],"conditionGroups":[]}]},"playbookAction":{"resourceId":"Kx9Rm3nQ7wLp","playbookId":0,"markType":"Phishing","tags":["confirmed-phishing"]},"playbookActionStatus":{"actionStatusType":"Closed"},"playbookActionAnalyzers":[],"playbookActionInvestigations":[],"playbookActionNotifications":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/playbooks/search": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Searches and returns a paginated list of playbooks configured for the current company, with optional filtering and sorting.",
        "requestBody": {
          "description": "Pagination, sorting, and filter criteria for the playbook search.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Playbook.Search.PlaybookSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/playbooks/search/export": {
      "post": {
        "tags": [
          "Incident Response"
        ],
        "summary": "Exports the playbook list as a downloadable file in the specified format (e.g., CSV, Excel).",
        "requestBody": {
          "description": "Export parameters including format, pagination, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/google-user-provisioning": {
      "get": {
        "tags": [
          "Integration"
        ],
        "summary": "Retrieves the current Google Workspace user provisioning configuration for the company.\r\nReturns sync schedule, field mappings, target group assignment, and last synchronization status.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Google.Dto.GoogleUserProvisioningDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/google-user-provisioning/sync": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Configures and enables scheduled user synchronization from Google Workspace.\r\nSets up periodic imports of users from selected Google groups or organizational units into Keepnet target groups.",
        "requestBody": {
          "description": "Sync configuration including Google group/OU selection, target group mapping, and schedule settings.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncRequest"
              },
              "example": {"googleOAuthResourceId":"Xk9Lm2nP4qR7","provisioningConfig":{"source":"Organization","selected":["org-unit-id-1"],"sync":{"method":"TargetGroup","details":["target-group-resource-id-1"]}}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncRequest"
              },
              "example": {"googleOAuthResourceId":"Xk9Lm2nP4qR7","provisioningConfig":{"source":"Organization","selected":["org-unit-id-1"],"sync":{"method":"TargetGroup","details":["target-group-resource-id-1"]}}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncRequest"
              },
              "example": {"googleOAuthResourceId":"Xk9Lm2nP4qR7","provisioningConfig":{"source":"Organization","selected":["org-unit-id-1"],"sync":{"method":"TargetGroup","details":["target-group-resource-id-1"]}}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncRequest"
              },
              "example": {"googleOAuthResourceId":"Xk9Lm2nP4qR7","provisioningConfig":{"source":"Organization","selected":["org-unit-id-1"],"sync":{"method":"TargetGroup","details":["target-group-resource-id-1"]}}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/google-user-provisioning/sync-now": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Triggers an immediate one-time user synchronization from Google Workspace, bypassing the regular schedule.\r\nImports users from the configured Google groups or organizational units into the assigned Keepnet target group.",
        "requestBody": {
          "description": "Immediate sync parameters including the Google source and target group to synchronize.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncNowRequest"
              },
              "example": {"provisioningResourceId":"Xk9Lm2nP4qR7"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncNowRequest"
              },
              "example": {"provisioningResourceId":"Xk9Lm2nP4qR7"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncNowRequest"
              },
              "example": {"provisioningResourceId":"Xk9Lm2nP4qR7"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncNowRequest"
              },
              "example": {"provisioningResourceId":"Xk9Lm2nP4qR7"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/google-user-provisioning/sync-stop": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Stops the active scheduled user synchronization from Google Workspace.\r\nThe existing sync configuration is preserved but no further automatic imports will occur until re-enabled.",
        "requestBody": {
          "description": "Stop request containing the sync configuration identifier to deactivate.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncStopRequest"
              },
              "example": {"provisioningResourceId":"Xk9Lm2nP4qR7"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncStopRequest"
              },
              "example": {"provisioningResourceId":"Xk9Lm2nP4qR7"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncStopRequest"
              },
              "example": {"provisioningResourceId":"Xk9Lm2nP4qR7"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncStopRequest"
              },
              "example": {"provisioningResourceId":"Xk9Lm2nP4qR7"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/google-user-provisioning/group": {
      "get": {
        "tags": [
          "Integration"
        ],
        "summary": "Lists all available groups from the connected Google Workspace directory.\r\nUsed to populate group selection when configuring which Google groups to synchronize users from.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Google.Dto.GoogleUserGroupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/google-user-provisioning/orgunit": {
      "get": {
        "tags": [
          "Integration"
        ],
        "summary": "Lists all available organizational units from the connected Google Workspace directory.\r\nUsed to populate OU selection when configuring which organizational units to synchronize users from.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Google.Dto.GoogleUserGroupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/ldap-setting": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Creates a new LDAP integration setting for the current company, including server URL, bind credentials, and base DN.\r\nThis setting is used to connect to an Active Directory or LDAP server for user provisioning.",
        "requestBody": {
          "description": "LDAP connection configuration including server URL, username, password, base DN, and relative DN.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.CreateLDAPSettingRequest"
              },
              "example": {"username":"CN=svc-keepnet,OU=ServiceAccounts,DC=acme,DC=com","password":"Ldap$ecureP@ss!","baseDN":"DC=acme,DC=com","relativeDN":["OU=Users","OU=Employees"],"url":"ldaps://ldap.acme.com:636","isActive":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.CreateLDAPSettingRequest"
              },
              "example": {"username":"CN=svc-keepnet,OU=ServiceAccounts,DC=acme,DC=com","password":"Ldap$ecureP@ss!","baseDN":"DC=acme,DC=com","relativeDN":["OU=Users","OU=Employees"],"url":"ldaps://ldap.acme.com:636","isActive":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.CreateLDAPSettingRequest"
              },
              "example": {"username":"CN=svc-keepnet,OU=ServiceAccounts,DC=acme,DC=com","password":"Ldap$ecureP@ss!","baseDN":"DC=acme,DC=com","relativeDN":["OU=Users","OU=Employees"],"url":"ldaps://ldap.acme.com:636","isActive":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.CreateLDAPSettingRequest"
              },
              "example": {"username":"CN=svc-keepnet,OU=ServiceAccounts,DC=acme,DC=com","password":"Ldap$ecureP@ss!","baseDN":"DC=acme,DC=com","relativeDN":["OU=Users","OU=Employees"],"url":"ldaps://ldap.acme.com:636","isActive":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/ldap-setting/{resourceId}": {
      "put": {
        "tags": [
          "Integration"
        ],
        "summary": "Updates the connection parameters (server URL, bind credentials, base DN) of an existing LDAP setting.\r\nUse this to rotate credentials or change the directory server endpoint without recreating the integration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the LDAP setting to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Updated LDAP connection parameters including server URL, username, password, and DN paths.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.UpdateLDAPSettingRequest"
              },
              "example": {"username":"CN=svc-keepnet,OU=ServiceAccounts,DC=acme,DC=com","password":"Ldap$ecureP@ss!","url":"ldaps://ldap.acme.com:636","baseDN":"DC=acme,DC=com","relativeDN":["OU=Users","OU=Employees"],"fieldMappings":[{"customFieldResourceId":"Cf7Kn4pR9wLx","ldapFieldResourceId":"Ld9Wp6nR3pKx"}],"isActive":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.UpdateLDAPSettingRequest"
              },
              "example": {"username":"CN=svc-keepnet,OU=ServiceAccounts,DC=acme,DC=com","password":"Ldap$ecureP@ss!","url":"ldaps://ldap.acme.com:636","baseDN":"DC=acme,DC=com","relativeDN":["OU=Users","OU=Employees"],"fieldMappings":[{"customFieldResourceId":"Cf7Kn4pR9wLx","ldapFieldResourceId":"Ld9Wp6nR3pKx"}],"isActive":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.UpdateLDAPSettingRequest"
              },
              "example": {"username":"CN=svc-keepnet,OU=ServiceAccounts,DC=acme,DC=com","password":"Ldap$ecureP@ss!","url":"ldaps://ldap.acme.com:636","baseDN":"DC=acme,DC=com","relativeDN":["OU=Users","OU=Employees"],"fieldMappings":[{"customFieldResourceId":"Cf7Kn4pR9wLx","ldapFieldResourceId":"Ld9Wp6nR3pKx"}],"isActive":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.UpdateLDAPSettingRequest"
              },
              "example": {"username":"CN=svc-keepnet,OU=ServiceAccounts,DC=acme,DC=com","password":"Ldap$ecureP@ss!","url":"ldaps://ldap.acme.com:636","baseDN":"DC=acme,DC=com","relativeDN":["OU=Users","OU=Employees"],"fieldMappings":[{"customFieldResourceId":"Cf7Kn4pR9wLx","ldapFieldResourceId":"Ld9Wp6nR3pKx"}],"isActive":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/ldap-setting/detail": {
      "get": {
        "tags": [
          "Integration"
        ],
        "summary": "Retrieves the detailed LDAP integration settings for the current company, including connection parameters and sync status.\r\nReturns the full configuration needed to display or edit the LDAP integration on the settings page.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPSettingDetailResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/ldap-setting/test-connection": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Tests connectivity to the LDAP/Active Directory server using the provided credentials and DN paths.\r\nReturns whether the connection was successful, allowing administrators to validate settings before saving.",
        "requestBody": {
          "description": "LDAP test connection parameters including server URL, username, password, base DN, and relative DN.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingTestConnectionRequest"
              },
              "example": {"username":"CN=svc-keepnet,OU=ServiceAccounts,DC=acme,DC=com","password":"Ldap$ecureP@ss!","url":"ldaps://ldap.acme.com:636","baseDN":"DC=acme,DC=com","relativeDN":["OU=Users"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingTestConnectionRequest"
              },
              "example": {"username":"CN=svc-keepnet,OU=ServiceAccounts,DC=acme,DC=com","password":"Ldap$ecureP@ss!","url":"ldaps://ldap.acme.com:636","baseDN":"DC=acme,DC=com","relativeDN":["OU=Users"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingTestConnectionRequest"
              },
              "example": {"username":"CN=svc-keepnet,OU=ServiceAccounts,DC=acme,DC=com","password":"Ldap$ecureP@ss!","url":"ldaps://ldap.acme.com:636","baseDN":"DC=acme,DC=com","relativeDN":["OU=Users"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingTestConnectionRequest"
              },
              "example": {"username":"CN=svc-keepnet,OU=ServiceAccounts,DC=acme,DC=com","password":"Ldap$ecureP@ss!","url":"ldaps://ldap.acme.com:636","baseDN":"DC=acme,DC=com","relativeDN":["OU=Users"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPSettingConnectionResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/ldap-fields": {
      "get": {
        "tags": [
          "Integration"
        ],
        "summary": "Returns the list of available LDAP attribute fields that can be mapped to Keepnet target user properties.\r\nUsed to populate field mapping UIs when configuring LDAP-to-Keepnet user attribute synchronization.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPFieldListResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/active-directory/groups": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Searches and returns a paginated list of groups from the connected Active Directory server.\r\nUsed to select which AD groups should be included in user synchronization.",
        "requestBody": {
          "description": "Search criteria including filters, pagination settings, and the LDAP setting ID to query against.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.ActiveDirectoryGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"Engineering","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":"Engineering"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"ldapSettingId":"a1b2c3d4e5f6"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.ActiveDirectoryGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"Engineering","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":"Engineering"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"ldapSettingId":"a1b2c3d4e5f6"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.ActiveDirectoryGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"Engineering","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":"Engineering"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"ldapSettingId":"a1b2c3d4e5f6"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.ActiveDirectoryGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"Engineering","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":"Engineering"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"ldapSettingId":"a1b2c3d4e5f6"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.LDAP.ApplicationService.Models.ActiveDirectoryGroup, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/ldap-setting/mapping": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Creates a field mapping between LDAP attributes and Keepnet target user properties for the selected AD groups.\r\nInitiates an asynchronous mapping transaction that analyzes users in the selected groups and categorizes them as existing, new, or invalid.",
        "requestBody": {
          "description": "Mapping configuration including the LDAP setting ID, selected AD group filter values, and exclusion rules.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingCreateMapping"
              },
              "example": {"ldapSettingId":"a1b2c3d4e5f6","groupFilterValues":["CN=Engineering,OU=Groups,DC=acme,DC=com","CN=Security,OU=Groups,DC=acme,DC=com"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingCreateMapping"
              },
              "example": {"ldapSettingId":"a1b2c3d4e5f6","groupFilterValues":["CN=Engineering,OU=Groups,DC=acme,DC=com","CN=Security,OU=Groups,DC=acme,DC=com"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingCreateMapping"
              },
              "example": {"ldapSettingId":"a1b2c3d4e5f6","groupFilterValues":["CN=Engineering,OU=Groups,DC=acme,DC=com","CN=Security,OU=Groups,DC=acme,DC=com"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingCreateMapping"
              },
              "example": {"ldapSettingId":"a1b2c3d4e5f6","groupFilterValues":["CN=Engineering,OU=Groups,DC=acme,DC=com","CN=Security,OU=Groups,DC=acme,DC=com"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPSettingCreateMappingResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/ldap-setting/status/{transactionId}": {
      "get": {
        "tags": [
          "Integration"
        ],
        "summary": "Retrieves the current status of an LDAP user mapping transaction, showing counts of existing, invalid, and new users.\r\nPoll this endpoint after initiating a mapping to track progress before finalizing the import configuration.",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The unique transaction identifier returned by the create-mapping endpoint.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPMappingStatusResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/ldap-config": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Creates a new LDAP sync configuration that defines how AD users are imported into a Keepnet target group.\r\nSpecifies the import type (one-time or scheduled), target group assignment, selected users, and filter criteria.",
        "requestBody": {
          "description": "LDAP config details including the LDAP setting ID, target group, import type, schedule flag, and user selection.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPConfigCreate"
              },
              "example": {"ldapSettingResourceId":"a1b2c3d4e5f6","transactionId":"txn-20260310-001","importType":"All","targetGroupResourceId":"Tg4Rn9pK6vWx","groupFilterValues":["CN=Engineering,OU=Groups,DC=acme,DC=com"],"selectedUserResourceIds":[],"isSchedule":false,"selectAll":true,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPConfigCreate"
              },
              "example": {"ldapSettingResourceId":"a1b2c3d4e5f6","transactionId":"txn-20260310-001","importType":"All","targetGroupResourceId":"Tg4Rn9pK6vWx","groupFilterValues":["CN=Engineering,OU=Groups,DC=acme,DC=com"],"selectedUserResourceIds":[],"isSchedule":false,"selectAll":true,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPConfigCreate"
              },
              "example": {"ldapSettingResourceId":"a1b2c3d4e5f6","transactionId":"txn-20260310-001","importType":"All","targetGroupResourceId":"Tg4Rn9pK6vWx","groupFilterValues":["CN=Engineering,OU=Groups,DC=acme,DC=com"],"selectedUserResourceIds":[],"isSchedule":false,"selectAll":true,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPConfigCreate"
              },
              "example": {"ldapSettingResourceId":"a1b2c3d4e5f6","transactionId":"txn-20260310-001","importType":"All","targetGroupResourceId":"Tg4Rn9pK6vWx","groupFilterValues":["CN=Engineering,OU=Groups,DC=acme,DC=com"],"selectedUserResourceIds":[],"isSchedule":false,"selectAll":true,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/ldap-setting/target-groups": {
      "get": {
        "tags": [
          "Integration"
        ],
        "summary": "Returns the list of Keepnet target groups available for LDAP user synchronization.\r\nUsed to populate the target group dropdown when configuring which Keepnet group imported AD users should be assigned to.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.LDAP.ApplicationService.Models.TargetGroupForLDAPSelectBoxResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/active-directory/users": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Retrieves a list of users from the connected Active Directory server based on the specified group and filter criteria.\r\nUsed to preview which users will be imported before finalizing an LDAP sync configuration.",
        "requestBody": {
          "description": "AD user query parameters including the LDAP setting ID, selected groups, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.ActiveDirectoryUserRequest"
              },
              "example": {"fieldMappings":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.ActiveDirectoryUserRequest"
              },
              "example": {"fieldMappings":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.ActiveDirectoryUserRequest"
              },
              "example": {"fieldMappings":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.ActiveDirectoryUserRequest"
              },
              "example": {"fieldMappings":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[System.Object, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/ldap-schedule/search": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Searches and returns a paginated list of scheduled LDAP synchronization jobs for the current company.\r\nSupports filtering and sorting to locate specific schedules by status, name, or creation date.",
        "requestBody": {
          "description": "Search criteria including pagination settings (page number, page size, sort order) and optional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreatedDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreatedDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreatedDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreatedDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPScheduleSearchResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/ldap-schedule/{resourceId}": {
      "get": {
        "tags": [
          "Integration"
        ],
        "summary": "Retrieves the full configuration details of a specific LDAP scheduled sync job, including group filters, target group, and schedule status.\r\nUsed to display or edit the schedule on the LDAP integration detail page.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the LDAP schedule to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPScheduleDetailResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Integration"
        ],
        "summary": "Updates an existing LDAP scheduled sync job, allowing changes to group filters, schedule status, and user selection.\r\nCan be used to enable/disable the schedule, change synced groups, or update filter criteria.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the LDAP schedule to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Updated schedule configuration including group filters, schedule flag, status, and optional user selection.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPConfigUpdateRequest"
              },
              "example": {"transactionId":"Tx5Kp2mR7xLv","groupFilterValues":["Domain Users"],"selectedUserResourceIds":[],"isSchedule":false,"status":"Passive"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPConfigUpdateRequest"
              },
              "example": {"transactionId":"Tx5Kp2mR7xLv","groupFilterValues":["Domain Users"],"selectedUserResourceIds":[],"isSchedule":false,"status":"Passive"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPConfigUpdateRequest"
              },
              "example": {"transactionId":"Tx5Kp2mR7xLv","groupFilterValues":["Domain Users"],"selectedUserResourceIds":[],"isSchedule":false,"status":"Passive"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPConfigUpdateRequest"
              },
              "example": {"transactionId":"Tx5Kp2mR7xLv","groupFilterValues":["Domain Users"],"selectedUserResourceIds":[],"isSchedule":false,"status":"Passive"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Integration"
        ],
        "summary": "Permanently deletes an LDAP scheduled sync job and stops any future automatic user synchronizations for this configuration.\r\nThe underlying LDAP setting and previously imported users are not affected.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the LDAP schedule to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/sbm/cube/token": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Returns a short-lived analytics access token for the current company, together with the analytics\r\nAPI base URL. Call it when the dashboard opens, when the token expires, and after a company switch.",
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/sbm/cube/sql/status": {
      "get": {
        "tags": [
          "Integration"
        ],
        "summary": "Returns the BYO Power BI (DirectQuery) connection status for the current company: whether SQL\r\naccess is enabled, the SQL username, the server/database to enter in Power BI, and the last test.",
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/sbm/cube/sql/connect": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Enables BYO Power BI SQL access for the current company: issues a tenant-scoped SQL username and\r\npassword. The password is returned ONCE and is never stored in plaintext.",
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/sbm/cube/sql/rotate": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Resets the BYO Power BI SQL password for the current company. The new password is returned ONCE.\r\nAny Power BI report using the old password stops refreshing until re-entered.",
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/sbm/cube/sql/test": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Tests the BYO Power BI connection for the current company. Checks that the Cube SQL endpoint is\r\nreachable; it does NOT re-verify the password (full authentication is confirmed on first connect).",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/sbm/cube/sql/disconnect": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Disconnects BYO Power BI SQL access for the current company (soft: the credential is disabled,\r\nnot deleted). Power BI reports stop authenticating until access is enabled again.",
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/sbm/cube/sql/credentials": {
      "get": {
        "tags": [
          "Integration"
        ],
        "summary": "Lists the BYO Power BI credentials the current company holds, oldest first. Never returns a\r\npassword.",
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Issues an additional named Cube SQL credential for the current company. The password is\r\nreturned ONCE and is never stored in plaintext.",
        "description": "The name is required. The reason to hold more than one is knowing which consumer each belongs\r\nto, so a list of unnamed rows would be worse than the single credential this replaces.",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmCube.SbmCubeSqlCredentialRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmCube.SbmCubeSqlCredentialRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmCube.SbmCubeSqlCredentialRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmCube.SbmCubeSqlCredentialRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/sbm/cube/sql/credentials/{resourceId}/rotate": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Resets ONE credential's password, leaving the company's others untouched. The new password is\r\nreturned ONCE. Only the Power BI reports signed in with this credential need re-entering.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/sbm/cube/sql/credentials/{resourceId}/test": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Tests the Cube SQL endpoint and records the result against ONE credential. Reachability only:\r\nit does NOT re-verify the password (full authentication is confirmed on first Power BI connect).",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/sbm/cube/sql/credentials/{resourceId}": {
      "patch": {
        "tags": [
          "Integration"
        ],
        "summary": "Renames ONE credential. Nothing else about it changes - not the username, not the password,\r\nso the Power BI signed in with it keeps working.",
        "description": "The label is the only part of a credential an administrator authors, and it is the part they\r\nget wrong: a credential issued before names existed has none, and a name chosen for one report\r\noutlives that report. Without this it could never be corrected.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmCube.SbmCubeSqlCredentialRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmCube.SbmCubeSqlCredentialRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmCube.SbmCubeSqlCredentialRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmCube.SbmCubeSqlCredentialRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Integration"
        ],
        "summary": "Revokes ONE credential. Any Power BI report signing in with it stops working immediately; the\r\ncompany's other credentials are unaffected, which is the whole point of holding several.",
        "description": "Disabled and soft-deleted: the row leaves the list but stays for the audit, and Cube stops\r\nresolving the login because its lookup filters on both flags.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/scim/{resourceId}": {
      "get": {
        "tags": [
          "Integration"
        ],
        "summary": "Retrieves the full configuration details of an existing SCIM integration identified by its resource ID.\r\nReturns field mappings, provisioning settings, and connection status.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the SCIM integration to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Integration"
        ],
        "summary": "Updates the display name of an existing SCIM integration identified by its resource ID.\r\nOnly the integration name can be changed; field mappings and tokens remain unaffected.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the SCIM integration to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The update payload containing the new integration name.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SCIM.UpdateSCIMIntegrationRequest"
              },
              "example": {"name":"Azure AD SCIM Provisioning (Updated)"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SCIM.UpdateSCIMIntegrationRequest"
              },
              "example": {"name":"Azure AD SCIM Provisioning (Updated)"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SCIM.UpdateSCIMIntegrationRequest"
              },
              "example": {"name":"Azure AD SCIM Provisioning (Updated)"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SCIM.UpdateSCIMIntegrationRequest"
              },
              "example": {"name":"Azure AD SCIM Provisioning (Updated)"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Integration"
        ],
        "summary": "Permanently deletes a SCIM integration and revokes its associated bearer token.\r\nAfter deletion, the identity provider will no longer be able to provision users via this integration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the SCIM integration to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/scim": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Creates a new SCIM integration for the current company, generating a bearer token for identity provider authentication.\r\nThe returned token is used by the IdP to provision and de-provision users via the SCIM 2.0 protocol.",
        "requestBody": {
          "description": "The SCIM integration configuration including name, field mappings, and provisioning options.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SCIM.CreateScimIntegrationRequest"
              },
              "example": {"name":"Azure AD SCIM Provisioning","groupResourceId":"Tg4Rn9pK6vWx","groupBySCIMFieldResourceId":"Sd5Wp2nR7mKx","fieldMappings":[{"customFieldResourceId":"Cf6Kn3mR8wLx","scimFieldResourceId":"Sf7Rp4vK9nWx"},{"customFieldResourceId":"Cf8Wn5pR2mKx","scimFieldResourceId":"Sf9Kp6nR3wLx"}],"syncPlatformGroup":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SCIM.CreateScimIntegrationRequest"
              },
              "example": {"name":"Azure AD SCIM Provisioning","groupResourceId":"Tg4Rn9pK6vWx","groupBySCIMFieldResourceId":"Sd5Wp2nR7mKx","fieldMappings":[{"customFieldResourceId":"Cf6Kn3mR8wLx","scimFieldResourceId":"Sf7Rp4vK9nWx"},{"customFieldResourceId":"Cf8Wn5pR2mKx","scimFieldResourceId":"Sf9Kp6nR3wLx"}],"syncPlatformGroup":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SCIM.CreateScimIntegrationRequest"
              },
              "example": {"name":"Azure AD SCIM Provisioning","groupResourceId":"Tg4Rn9pK6vWx","groupBySCIMFieldResourceId":"Sd5Wp2nR7mKx","fieldMappings":[{"customFieldResourceId":"Cf6Kn3mR8wLx","scimFieldResourceId":"Sf7Rp4vK9nWx"},{"customFieldResourceId":"Cf8Wn5pR2mKx","scimFieldResourceId":"Sf9Kp6nR3wLx"}],"syncPlatformGroup":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SCIM.CreateScimIntegrationRequest"
              },
              "example": {"name":"Azure AD SCIM Provisioning","groupResourceId":"Tg4Rn9pK6vWx","groupBySCIMFieldResourceId":"Sd5Wp2nR7mKx","fieldMappings":[{"customFieldResourceId":"Cf6Kn3mR8wLx","scimFieldResourceId":"Sf7Rp4vK9nWx"},{"customFieldResourceId":"Cf8Wn5pR2mKx","scimFieldResourceId":"Sf9Kp6nR3wLx"}],"syncPlatformGroup":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/scim/search": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Searches and returns a paginated list of SCIM integrations for the current company.\r\nSupports filtering, sorting, and pagination to locate specific integrations.",
        "requestBody": {
          "description": "Search criteria including pagination settings (page number, page size, sort order) and optional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SCIM.SCIMIntegrationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"Azure","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":"Azure"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SCIM.SCIMIntegrationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"Azure","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":"Azure"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SCIM.SCIMIntegrationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"Azure","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":"Azure"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SCIM.SCIMIntegrationSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"Azure","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":"Azure"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/scim/{resourceId}/revoke": {
      "post": {
        "tags": [
          "Integration"
        ],
        "summary": "Revokes the current bearer token of a SCIM integration and generates a new one.\r\nThe identity provider must be reconfigured with the new token to continue provisioning users.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the SCIM integration whose token should be revoked.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/scim/fields": {
      "get": {
        "tags": [
          "Integration"
        ],
        "summary": "Returns all configurable SCIM attribute fields that can be mapped between the identity provider and Keepnet target user properties.\r\nUse this endpoint to populate field mapping UIs when creating or editing a SCIM integration.",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/dns-services/form-details": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the form details required to create or edit a DNS service provider, including supported provider types and configuration fields.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DnsService.Dto.DnsServiceFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/dns-services": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Creates a new DNS service provider configuration for the current company, used for managing phishing simulation domain records.",
        "requestBody": {
          "description": "The DNS service provider creation payload containing provider type, API credentials, and configuration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.CreateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.CreateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.CreateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.CreateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/dns-services/{resourceId}": {
      "put": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Updates an existing DNS service provider configuration identified by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DNS service provider to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated DNS service provider payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.UpdateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production Updated","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.UpdateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production Updated","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.UpdateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production Updated","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.UpdateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production Updated","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes a DNS service provider configuration identified by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DNS service provider to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the full details of an existing DNS service provider by its resource ID, including API credentials and configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DNS service provider.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DnsService.Dto.DnsServiceProviderDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/dns-services/search": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of DNS service providers for the current company, with filtering and sorting support.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.DnServiceProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.DnServiceProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.DnServiceProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.DnServiceProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.DnsService.Search.DnsServiceProviderSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/dns-services/search/export": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Exports the DNS service provider list to a downloadable file (CSV, Excel, or PDF) based on the current search filters.",
        "requestBody": {
          "description": "The export request containing pagination, filter criteria, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-simulator/dns-services/{resourceId}/test": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Tests the connectivity and configuration of an existing DNS service provider by attempting to verify its API credentials.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DNS service provider to test.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The test request containing the DNS service configuration parameters to validate.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.TestDnsServiceProviderRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","dnsServiceProviderTypeId":1,"username":"api-key@example.com","password":"api-secret-token"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.TestDnsServiceProviderRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","dnsServiceProviderTypeId":1,"username":"api-key@example.com","password":"api-secret-token"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.TestDnsServiceProviderRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","dnsServiceProviderTypeId":1,"username":"api-key@example.com","password":"api-secret-token"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.TestDnsServiceProviderRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","dnsServiceProviderTypeId":1,"username":"api-key@example.com","password":"api-secret-token"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/domain-records/form-details": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the form details required to create or edit a domain record, including available DNS providers and record type options.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/domain-records/test": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Tests DNS zone ID connectivity and validity by verifying the configuration against the specified DNS provider.",
        "requestBody": {
          "description": "The test request containing DNS provider credentials and zone ID to validate.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.TestDomainRecordRequest"
              },
              "example": {"dnsServiceProviderId":1,"zoneId":"abc123def456"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.TestDomainRecordRequest"
              },
              "example": {"dnsServiceProviderId":1,"zoneId":"abc123def456"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.TestDomainRecordRequest"
              },
              "example": {"dnsServiceProviderId":1,"zoneId":"abc123def456"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.TestDomainRecordRequest"
              },
              "example": {"dnsServiceProviderId":1,"zoneId":"abc123def456"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/domain-records": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Creates a new domain record for the current company, used to configure phishing simulation landing page domains.",
        "requestBody": {
          "description": "The domain record creation payload containing domain name, DNS provider, zone ID, and record configuration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+CreateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.50","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+CreateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.50","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+CreateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.50","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+CreateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.50","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/domain-records/{resourceId}": {
      "put": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Updates an existing domain record identified by its resource ID with new DNS configuration settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the domain record to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated domain record payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+UpdateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.51","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+UpdateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.51","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+UpdateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.51","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+UpdateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.51","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes a domain record identified by its resource ID and removes associated DNS entries.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the domain record to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the full details of an existing domain record by its resource ID, including DNS provider and zone configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the domain record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/domain-records/search": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of domain records for the current company, with filtering and sorting support.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+DomainRecordSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+DomainRecordSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+DomainRecordSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+DomainRecordSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/domain-records/search/export": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Exports the domain record list to a downloadable file (CSV, Excel, or PDF) based on the current search filters.",
        "requestBody": {
          "description": "The export request containing pagination, filter criteria, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/companies/email-templates": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Creates a new notification email template for the current company, used for system notifications and campaign communications.",
        "requestBody": {
          "description": "The email template creation payload containing name, subject, HTML body, category, and merge tag configuration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.CreateEmailTemplateRequest"
              },
              "example": {"name":"Training Enrollment Notification","emailDeliverySettingType":1,"smtpSettingResourceId":"Sm8pW3nR5vQx","emailTemplateCategoryResourceId":"Ec5Kp2mR7xLn","fromName":"Security Awareness Team","fromAddress":"training@example-corp.com","subject":"You Have Been Enrolled in Security Training","template":"<html><body><p>Dear {FIRSTNAME},</p><p>Please contact {MANAGER} to complete your training.</p></body></html>","tags":["training","enrollment"],"languageTypeResourceId":"Ln2Kp5mR7vWx","mergeTagFallbacks":[{"tagName":"{MANAGER}","fallbackValue":"your manager"}],"languages":[{"detailActionType":"InsertRecord","languageTypeResourceId":"Fr8nQ2pL4xYz","subject":"Vous avez ete inscrit a une formation","fromName":"Security Awareness Team","fromAddress":"training@example-corp.com","template":"<html><body><p>Contactez {MANAGER} pour plus d'informations.</p></body></html>","mergeTagFallbacks":[{"tagName":"{MANAGER}","fallbackValue":"votre manager"}]}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.CreateEmailTemplateRequest"
              },
              "example": {"name":"Training Enrollment Notification","emailDeliverySettingType":1,"smtpSettingResourceId":"Sm8pW3nR5vQx","emailTemplateCategoryResourceId":"Ec5Kp2mR7xLn","fromName":"Security Awareness Team","fromAddress":"training@example-corp.com","subject":"You Have Been Enrolled in Security Training","template":"<html><body><p>Dear {FIRSTNAME},</p><p>Please contact {MANAGER} to complete your training.</p></body></html>","tags":["training","enrollment"],"languageTypeResourceId":"Ln2Kp5mR7vWx","mergeTagFallbacks":[{"tagName":"{MANAGER}","fallbackValue":"your manager"}],"languages":[{"detailActionType":"InsertRecord","languageTypeResourceId":"Fr8nQ2pL4xYz","subject":"Vous avez ete inscrit a une formation","fromName":"Security Awareness Team","fromAddress":"training@example-corp.com","template":"<html><body><p>Contactez {MANAGER} pour plus d'informations.</p></body></html>","mergeTagFallbacks":[{"tagName":"{MANAGER}","fallbackValue":"votre manager"}]}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.CreateEmailTemplateRequest"
              },
              "example": {"name":"Training Enrollment Notification","emailDeliverySettingType":1,"smtpSettingResourceId":"Sm8pW3nR5vQx","emailTemplateCategoryResourceId":"Ec5Kp2mR7xLn","fromName":"Security Awareness Team","fromAddress":"training@example-corp.com","subject":"You Have Been Enrolled in Security Training","template":"<html><body><p>Dear {FIRSTNAME},</p><p>Please contact {MANAGER} to complete your training.</p></body></html>","tags":["training","enrollment"],"languageTypeResourceId":"Ln2Kp5mR7vWx","mergeTagFallbacks":[{"tagName":"{MANAGER}","fallbackValue":"your manager"}],"languages":[{"detailActionType":"InsertRecord","languageTypeResourceId":"Fr8nQ2pL4xYz","subject":"Vous avez ete inscrit a une formation","fromName":"Security Awareness Team","fromAddress":"training@example-corp.com","template":"<html><body><p>Contactez {MANAGER} pour plus d'informations.</p></body></html>","mergeTagFallbacks":[{"tagName":"{MANAGER}","fallbackValue":"votre manager"}]}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.CreateEmailTemplateRequest"
              },
              "example": {"name":"Training Enrollment Notification","emailDeliverySettingType":1,"smtpSettingResourceId":"Sm8pW3nR5vQx","emailTemplateCategoryResourceId":"Ec5Kp2mR7xLn","fromName":"Security Awareness Team","fromAddress":"training@example-corp.com","subject":"You Have Been Enrolled in Security Training","template":"<html><body><p>Dear {FIRSTNAME},</p><p>Please contact {MANAGER} to complete your training.</p></body></html>","tags":["training","enrollment"],"languageTypeResourceId":"Ln2Kp5mR7vWx","mergeTagFallbacks":[{"tagName":"{MANAGER}","fallbackValue":"your manager"}],"languages":[{"detailActionType":"InsertRecord","languageTypeResourceId":"Fr8nQ2pL4xYz","subject":"Vous avez ete inscrit a une formation","fromName":"Security Awareness Team","fromAddress":"training@example-corp.com","template":"<html><body><p>Contactez {MANAGER} pour plus d'informations.</p></body></html>","mergeTagFallbacks":[{"tagName":"{MANAGER}","fallbackValue":"votre manager"}]}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/email-templates/{resourceId}": {
      "put": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Updates an existing notification email template identified by its resource ID with new content and configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated email template payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.UpdateEmailTemplateRequest"
              },
              "example": {"name":"Updated Training Enrollment Notification","emailDeliverySettingType":1,"smtpSettingResourceId":"Sm8pW3nR5vQx","emailTemplateCategoryResourceId":"Ec5Kp2mR7xLn","fromName":"Security Awareness Team","fromAddress":"training@example-corp.com","subject":"Reminder: Complete Your Security Training","template":"<html><body><p>Dear {FIRSTNAME},</p><p>Please contact {MANAGER} to complete your training.</p></body></html>","tags":["training","enrollment","reminder"],"languageTypeResourceId":"Ln2Kp5mR7vWx","mergeTagFallbacks":[{"tagName":"{MANAGER}","fallbackValue":"your manager"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.UpdateEmailTemplateRequest"
              },
              "example": {"name":"Updated Training Enrollment Notification","emailDeliverySettingType":1,"smtpSettingResourceId":"Sm8pW3nR5vQx","emailTemplateCategoryResourceId":"Ec5Kp2mR7xLn","fromName":"Security Awareness Team","fromAddress":"training@example-corp.com","subject":"Reminder: Complete Your Security Training","template":"<html><body><p>Dear {FIRSTNAME},</p><p>Please contact {MANAGER} to complete your training.</p></body></html>","tags":["training","enrollment","reminder"],"languageTypeResourceId":"Ln2Kp5mR7vWx","mergeTagFallbacks":[{"tagName":"{MANAGER}","fallbackValue":"your manager"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.UpdateEmailTemplateRequest"
              },
              "example": {"name":"Updated Training Enrollment Notification","emailDeliverySettingType":1,"smtpSettingResourceId":"Sm8pW3nR5vQx","emailTemplateCategoryResourceId":"Ec5Kp2mR7xLn","fromName":"Security Awareness Team","fromAddress":"training@example-corp.com","subject":"Reminder: Complete Your Security Training","template":"<html><body><p>Dear {FIRSTNAME},</p><p>Please contact {MANAGER} to complete your training.</p></body></html>","tags":["training","enrollment","reminder"],"languageTypeResourceId":"Ln2Kp5mR7vWx","mergeTagFallbacks":[{"tagName":"{MANAGER}","fallbackValue":"your manager"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.UpdateEmailTemplateRequest"
              },
              "example": {"name":"Updated Training Enrollment Notification","emailDeliverySettingType":1,"smtpSettingResourceId":"Sm8pW3nR5vQx","emailTemplateCategoryResourceId":"Ec5Kp2mR7xLn","fromName":"Security Awareness Team","fromAddress":"training@example-corp.com","subject":"Reminder: Complete Your Security Training","template":"<html><body><p>Dear {FIRSTNAME},</p><p>Please contact {MANAGER} to complete your training.</p></body></html>","tags":["training","enrollment","reminder"],"languageTypeResourceId":"Ln2Kp5mR7vWx","mergeTagFallbacks":[{"tagName":"{MANAGER}","fallbackValue":"your manager"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the full details of an existing notification email template by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.EmailTemplate.Dto.EmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes an existing notification email template identified by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/{companyId}/email-templates/{emailTemplateCategoryResourceId}/default": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the default email template for a specific category and company, including SMTP settings. Optionally respects target user language preference.",
        "parameters": [
          {
            "name": "emailTemplateCategoryResourceId",
            "in": "path",
            "description": "The resource ID of the email template category.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "path",
            "description": "The company ID to retrieve the default template for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "targetUserId",
            "in": "query",
            "description": "Optional target user ID to resolve language-specific template preference.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Mailer.Domain.Dtos.Worker.EmailInformationResult, KeepnetLabs.Mailer.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/email-templates/{emailTemplateCategoryResourceId}/default": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the default email template for a specific category for the current company, without SMTP setting resolution.",
        "parameters": [
          {
            "name": "emailTemplateCategoryResourceId",
            "in": "path",
            "description": "The resource ID of the email template category.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Mailer.Domain.Dtos.Worker.EmailInformationResult, KeepnetLabs.Mailer.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/email-templates/search": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of notification email templates for the current company, with filtering and sorting support.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.Search.EmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"EmailDeliverySettingType","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"EmailTemplateCategoryResourceId","operator":"eq","value":""}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.Search.EmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"EmailDeliverySettingType","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"EmailTemplateCategoryResourceId","operator":"eq","value":""}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.Search.EmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"EmailDeliverySettingType","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"EmailTemplateCategoryResourceId","operator":"eq","value":""}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.Search.EmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"EmailDeliverySettingType","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"EmailTemplateCategoryResourceId","operator":"eq","value":""}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.EmailTemplate.Dto.SearchEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/email-templates/search/export": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Exports the notification email template list to a downloadable file (CSV, Excel, or PDF) based on the current search filters.",
        "requestBody": {
          "description": "The export request containing pagination, filter criteria, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/companies/email-templates/merge-tags/{resourceId}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the list of available merge tags (dynamic placeholders) for a specific email template category.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template category.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/email-templates/check-availability": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Checks whether the specified email template configuration is available for the current company (e.g., name uniqueness validation).",
        "requestBody": {
          "description": "The availability check request containing the template name and category to validate.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.CheckAvailabilityRequest"
              },
              "example": {"emailTemplateName":"Monthly Security Newsletter"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.CheckAvailabilityRequest"
              },
              "example": {"emailTemplateName":"Monthly Security Newsletter"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.CheckAvailabilityRequest"
              },
              "example": {"emailTemplateName":"Monthly Security Newsletter"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.CheckAvailabilityRequest"
              },
              "example": {"emailTemplateName":"Monthly Security Newsletter"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.EmailTemplate.Dto.CheckAvailabilityDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/email-templates/categorylookup": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the lookup list of all available email template categories (e.g., enrollment, reminder, notification).",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Lookup.Dto.LookupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/email-templates/typelookup": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the lookup list of all available email template types for filtering and categorization.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.EmailTemplate.Dto.GetEmailTemplateTypeLookupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/email-templates/make-default/{resourceId}": {
      "put": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Sets the specified notification email template as the default template for its category within the current company.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template to set as default.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/email-templates/email-delivery-setting-list": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the list of available email delivery settings, including both SMTP configurations and direct email creation settings.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.EmailDeliverySettingModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/translated-email-templates": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the list of AI-translated notification email template variations for the current company.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.OpenAI.Dto.PsEmailTemplateTranslationResponseDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/email-templates/translate": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Initiates AI-powered translation of a notification email template into the specified target languages.",
        "requestBody": {
          "description": "The translation request containing the source template and target language codes.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.TranslateEmailTemplateWithAIRequest"
              },
              "example": {"languages":[],"subject":"You Have Been Enrolled in Security Training","template":"<html><body><p>Dear {{first_name}},</p><p>You have been enrolled in a security awareness training course.</p></body></html>"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.TranslateEmailTemplateWithAIRequest"
              },
              "example": {"languages":[],"subject":"You Have Been Enrolled in Security Training","template":"<html><body><p>Dear {{first_name}},</p><p>You have been enrolled in a security awareness training course.</p></body></html>"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.TranslateEmailTemplateWithAIRequest"
              },
              "example": {"languages":[],"subject":"You Have Been Enrolled in Security Training","template":"<html><body><p>Dear {{first_name}},</p><p>You have been enrolled in a security awareness training course.</p></body></html>"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.TranslateEmailTemplateWithAIRequest"
              },
              "example": {"languages":[],"subject":"You Have Been Enrolled in Security Training","template":"<html><body><p>Dear {{first_name}},</p><p>You have been enrolled in a security awareness training course.</p></body></html>"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.BooleanResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notification-template/{emailTemplateId}/merge-tag-fallbacks": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the merge tag fallback values stored for a notification email template.",
        "parameters": [
          {
            "name": "emailTemplateId",
            "in": "path",
            "description": "The email template identifier.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.BaseResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/excluded-ip": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Creates or updates the excluded IP address list for phishing campaigns, preventing tracking events from specified IP addresses (e.g., security scanners, proxies).",
        "requestBody": {
          "description": "The request containing the list of IP addresses or CIDR ranges to exclude from phishing campaign activity tracking.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ExcludedIP.CreatePhishingCampaignExcludedIPRequest"
              },
              "example": {"excludedIPs":["10.0.0.1","192.168.1.0/24"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ExcludedIP.CreatePhishingCampaignExcludedIPRequest"
              },
              "example": {"excludedIPs":["10.0.0.1","192.168.1.0/24"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ExcludedIP.CreatePhishingCampaignExcludedIPRequest"
              },
              "example": {"excludedIPs":["10.0.0.1","192.168.1.0/24"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ExcludedIP.CreatePhishingCampaignExcludedIPRequest"
              },
              "example": {"excludedIPs":["10.0.0.1","192.168.1.0/24"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignExcludedIP.Dto.PhishingCampaignExcludedIPDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/excluded-ip-list": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the current excluded IP address list for the company's phishing campaigns, including all configured IP addresses and CIDR ranges.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignExcludedIP.Dto.PhishingCampaignExcludedIPItemDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/form-details": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the form details required to create or edit a phishing campaign, including available options and default values.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Creates a new phishing campaign for the current company, including scenario assignment, target groups, and scheduling configuration.",
        "requestBody": {
          "description": "The phishing campaign creation payload containing name, scenarios, target groups, and schedule settings.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreatePhishingCampaignRequest"
              },
              "example": {"phishingScenarios":[{"phishingScenarioResourceId":"Ps4Kx7mN2wRt","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"phishingScenarioResourceIds":["Ps4Kx7mN2wRt","Ps9Lv3nQ8jHf"],"smtpSettingResourceId":"Sm8pW3nR5vQx","distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"emailDeliverySettingType":1,"useTargetUserTimeZone":false,"sendUserPreferredLanguage":0,"name":"Q1 2026 Phishing Awareness Campaign","description":"Quarterly credential-harvesting simulation for engineering team","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"distributionStartTypeId":1,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","awardCertificate":true,"categoryDistributionType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreatePhishingCampaignRequest"
              },
              "example": {"phishingScenarios":[{"phishingScenarioResourceId":"Ps4Kx7mN2wRt","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"phishingScenarioResourceIds":["Ps4Kx7mN2wRt","Ps9Lv3nQ8jHf"],"smtpSettingResourceId":"Sm8pW3nR5vQx","distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"emailDeliverySettingType":1,"useTargetUserTimeZone":false,"sendUserPreferredLanguage":0,"name":"Q1 2026 Phishing Awareness Campaign","description":"Quarterly credential-harvesting simulation for engineering team","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"distributionStartTypeId":1,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","awardCertificate":true,"categoryDistributionType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreatePhishingCampaignRequest"
              },
              "example": {"phishingScenarios":[{"phishingScenarioResourceId":"Ps4Kx7mN2wRt","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"phishingScenarioResourceIds":["Ps4Kx7mN2wRt","Ps9Lv3nQ8jHf"],"smtpSettingResourceId":"Sm8pW3nR5vQx","distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"emailDeliverySettingType":1,"useTargetUserTimeZone":false,"sendUserPreferredLanguage":0,"name":"Q1 2026 Phishing Awareness Campaign","description":"Quarterly credential-harvesting simulation for engineering team","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"distributionStartTypeId":1,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","awardCertificate":true,"categoryDistributionType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreatePhishingCampaignRequest"
              },
              "example": {"phishingScenarios":[{"phishingScenarioResourceId":"Ps4Kx7mN2wRt","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"phishingScenarioResourceIds":["Ps4Kx7mN2wRt","Ps9Lv3nQ8jHf"],"smtpSettingResourceId":"Sm8pW3nR5vQx","distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"emailDeliverySettingType":1,"useTargetUserTimeZone":false,"sendUserPreferredLanguage":0,"name":"Q1 2026 Phishing Awareness Campaign","description":"Quarterly credential-harvesting simulation for engineering team","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"distributionStartTypeId":1,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","awardCertificate":true,"categoryDistributionType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/{resourceId}": {
      "put": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Updates an existing phishing campaign identified by its resource ID, allowing changes to scenarios, target groups, and schedule.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated phishing campaign payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdatePhishingCampaignRequest"
              },
              "example": {"phishingScenarios":[{"phishingScenarioResourceId":"Ps4Kx7mN2wRt","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"phishingScenarioResourceIds":["Ps4Kx7mN2wRt"],"smtpSettingResourceId":"Sm8pW3nR5vQx","emailDeliverySettingType":1,"useTargetUserTimeZone":false,"sendUserPreferredLanguage":0,"resourceId":"Cp4Wn8mT2xRv","name":"Q2 2026 Updated Phishing Campaign","description":"Updated quarterly phishing simulation for all departments","distributionStartTypeId":1,"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"awardCertificate":true,"categoryDistributionType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdatePhishingCampaignRequest"
              },
              "example": {"phishingScenarios":[{"phishingScenarioResourceId":"Ps4Kx7mN2wRt","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"phishingScenarioResourceIds":["Ps4Kx7mN2wRt"],"smtpSettingResourceId":"Sm8pW3nR5vQx","emailDeliverySettingType":1,"useTargetUserTimeZone":false,"sendUserPreferredLanguage":0,"resourceId":"Cp4Wn8mT2xRv","name":"Q2 2026 Updated Phishing Campaign","description":"Updated quarterly phishing simulation for all departments","distributionStartTypeId":1,"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"awardCertificate":true,"categoryDistributionType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdatePhishingCampaignRequest"
              },
              "example": {"phishingScenarios":[{"phishingScenarioResourceId":"Ps4Kx7mN2wRt","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"phishingScenarioResourceIds":["Ps4Kx7mN2wRt"],"smtpSettingResourceId":"Sm8pW3nR5vQx","emailDeliverySettingType":1,"useTargetUserTimeZone":false,"sendUserPreferredLanguage":0,"resourceId":"Cp4Wn8mT2xRv","name":"Q2 2026 Updated Phishing Campaign","description":"Updated quarterly phishing simulation for all departments","distributionStartTypeId":1,"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"awardCertificate":true,"categoryDistributionType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdatePhishingCampaignRequest"
              },
              "example": {"phishingScenarios":[{"phishingScenarioResourceId":"Ps4Kx7mN2wRt","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"phishingScenarioResourceIds":["Ps4Kx7mN2wRt"],"smtpSettingResourceId":"Sm8pW3nR5vQx","emailDeliverySettingType":1,"useTargetUserTimeZone":false,"sendUserPreferredLanguage":0,"resourceId":"Cp4Wn8mT2xRv","name":"Q2 2026 Updated Phishing Campaign","description":"Updated quarterly phishing simulation for all departments","distributionStartTypeId":1,"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionStartTime":"09:00:00","distributionEndTime":"17:00:00","distributionDays":31,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"awardCertificate":true,"categoryDistributionType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes a phishing campaign identified by its resource ID, removing all associated configuration and scheduled jobs.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the full details of an existing phishing campaign by its resource ID, including scenarios, target groups, and schedule.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/search": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of phishing campaigns for the current company, with support for filtering and sorting.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/search/unscheduled": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of unscheduled phishing campaigns eligible for training enrollment.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/search/export": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Exports the phishing campaign list to a downloadable file (CSV, Excel, or PDF) based on the current search filters.",
        "requestBody": {
          "description": "The export request containing pagination, filter criteria, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/preview/{resourceId}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves a preview of a phishing campaign including all associated scenario previews (email template and landing page).",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign to preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignPreviewListDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/preview/{smtpSettingResourceId}/{phishingScenarioResourceId}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Previews a phishing campaign by combining a specific SMTP setting with a phishing scenario to render the email and landing page.",
        "parameters": [
          {
            "name": "smtpSettingResourceId",
            "in": "path",
            "description": "The resource ID of the SMTP setting to use for the preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "phishingScenarioResourceId",
            "in": "path",
            "description": "The resource ID of the phishing scenario to preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignPreviewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/root-company-shared-smtp-resource-id": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Returns the resource ID of the most recently created shared SMTP settings belonging to the root company.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/default-email-delivery-setting": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Returns the default email delivery setting (SMTP or direct) used for fast-launch phishing campaigns.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.EmailDeliverySettingFastLaunchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/bulk-delete": {
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes multiple phishing campaigns in a single bulk operation based on the provided list of resource IDs.",
        "requestBody": {
          "description": "The bulk delete request containing the list of campaign resource IDs to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignDeleteRequest"
              },
              "example": {"items":["Cp4Wn8mT2xRv","Cp7Lk3nQ9jHf"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignDeleteRequest"
              },
              "example": {"items":["Cp4Wn8mT2xRv","Cp7Lk3nQ9jHf"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignDeleteRequest"
              },
              "example": {"items":["Cp4Wn8mT2xRv","Cp7Lk3nQ9jHf"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignDeleteRequest"
              },
              "example": {"items":["Cp4Wn8mT2xRv","Cp7Lk3nQ9jHf"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/calculate-sending-info": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Calculates the estimated sending information for a phishing campaign, including total email count and delivery timeline.",
        "requestBody": {
          "description": "The calculation request containing target groups and sending configuration parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCalculateSendingInfoRequest"
              },
              "example": {"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"sendingLimit":50,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":250}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCalculateSendingInfoRequest"
              },
              "example": {"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"sendingLimit":50,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":250}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCalculateSendingInfoRequest"
              },
              "example": {"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"sendingLimit":50,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":250}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCalculateSendingInfoRequest"
              },
              "example": {"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"sendingLimit":50,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":250}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignSendingInfoViewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/calculate-schedule-info": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Calculates the schedule information for a phishing campaign, including planned send dates and frequency distribution.",
        "requestBody": {
          "description": "The schedule calculation request containing frequency and date range parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.PhishingCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"phishingScenarioResourceIds":["Ps4Kx7mN2wRt","Ps9Lv3nQ8jHf"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.PhishingCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"phishingScenarioResourceIds":["Ps4Kx7mN2wRt","Ps9Lv3nQ8jHf"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.PhishingCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"phishingScenarioResourceIds":["Ps4Kx7mN2wRt","Ps9Lv3nQ8jHf"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.PhishingCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"phishingScenarioResourceIds":["Ps4Kx7mN2wRt","Ps9Lv3nQ8jHf"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignScheduleInfoViewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/email-delivery-setting-list": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the list of available email delivery settings, including both SMTP configurations and direct email creation settings.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.EmailDeliverySettingModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/{resourceId}/target-groups": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves target groups and user counts for a campaign",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Campaign resource id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignType",
            "in": "query",
            "description": "Campaign type (1=Phishing, 2=Smishing, 3=Quishing, 4=Callback, 5=Vishing)",
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.CampaignType"
            }
          },
          {
            "name": "instanceGroup",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.CampaignTargetGroupsResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/validate-merge-tags": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Validates merge tags and reports users with empty values.\r\nAccepts either an existing campaign resourceId or targetGroupResourceIds + scenarioResourceIds for pre-creation validation.",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.ValidateMergeTagsServiceRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.ValidateMergeTagsServiceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.ValidateMergeTagsServiceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.ValidateMergeTagsServiceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.ValidateMergeTagsResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Object, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Object, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign/{resourceId}/merge-tag-fallbacks": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Gets merge tag fallback values for a phishing campaign",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Phishing campaign resource id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Object, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job/form-details": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the form details required to configure a phishing campaign job, including available options and default values.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job/start/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Starts a phishing campaign job for a specific instance group within an existing campaign.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number to start the job for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job/start/{resourceId}": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Creates a new campaign instance and immediately starts the phishing campaign job for the specified campaign.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Optional campaign instance configuration for the new job.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignInstance"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-20 12:13:31","scheduledDateTimeZoneId":"UTC","scheduleTypeId":1,"targetGroupResourceIds":["Qw4Rt6yU8iOp"],"distributionStartTypeId":1,"sendingLimit":100,"distributionDelayTimeTypeId":1,"distributionDelayEvery":0,"useTargetUserTimeZone":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignInstance"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-20 12:13:31","scheduledDateTimeZoneId":"UTC","scheduleTypeId":1,"targetGroupResourceIds":["Qw4Rt6yU8iOp"],"distributionStartTypeId":1,"sendingLimit":100,"distributionDelayTimeTypeId":1,"distributionDelayEvery":0,"useTargetUserTimeZone":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignInstance"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-20 12:13:31","scheduledDateTimeZoneId":"UTC","scheduleTypeId":1,"targetGroupResourceIds":["Qw4Rt6yU8iOp"],"distributionStartTypeId":1,"sendingLimit":100,"distributionDelayTimeTypeId":1,"distributionDelayEvery":0,"useTargetUserTimeZone":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignInstance"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-20 12:13:31","scheduledDateTimeZoneId":"UTC","scheduleTypeId":1,"targetGroupResourceIds":["Qw4Rt6yU8iOp"],"distributionStartTypeId":1,"sendingLimit":100,"distributionDelayTimeTypeId":1,"distributionDelayEvery":0,"useTargetUserTimeZone":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job/stop/{resourceId}/{instanceGroup}": {
      "patch": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Stops a running phishing campaign job for a specific instance group, halting any pending email deliveries.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the job to stop.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job/{resourceId}/{instanceGroup}": {
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes a phishing campaign job and its associated data for a specific instance group.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the job to delete.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job/resend/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Resends phishing campaign emails to users filtered by activity type (e.g., not opened, not clicked) within a specific instance group.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number to resend emails for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The resend request containing the activity types to filter target users.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersRequest"
              },
              "example": {"types":["NoResponse"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersRequest"
              },
              "example": {"types":["NoResponse"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersRequest"
              },
              "example": {"types":["NoResponse"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersRequest"
              },
              "example": {"types":["NoResponse"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job/resend/list/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Resends phishing campaign emails to a specific list of selected users within a campaign instance group.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number to resend emails for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The resend request containing the selected user list, exclusions, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job/email-activity/{resourceId}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the detailed email activity log for a specific user within a phishing campaign job, including open, click, and submission events.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/summary/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the summary report for a phishing campaign job instance, including delivery stats, open rates, click rates, and submission counts.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/summary/training/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the summary report for a phishing campaign job instance with training-specific metrics included.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/summary/target-groups/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the target groups and their user counts for a specific phishing campaign job instance.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignTargetGroupsResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/{resourceId}/search": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of campaign job instances that belong to a specific phishing campaign.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the parent phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination, sorting, filter criteria, and optional frequency group.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"phishingCampaignFrequencyGroup":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"phishingCampaignFrequencyGroup":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"phishingCampaignFrequencyGroup":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"phishingCampaignFrequencyGroup":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Search.PhishingCampaignJobSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/search": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of all phishing campaign job reports across campaigns, with filtering and sorting support.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobReportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobReportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobReportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobReportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Search.PhishingCampaignJobReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/search/export": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Exports the phishing campaign job report list to a downloadable file (CSV, Excel, or PDF) based on the current filters.",
        "requestBody": {
          "description": "The export request containing pagination, filter criteria, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/{resourceId}/search/export": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Exports the list of campaign job instances belonging to a specific phishing campaign to a downloadable file.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the parent phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The export request containing pagination, filter criteria, export type, and frequency group.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ExportPhishingCampaignJobRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","phishingCampaignFrequencyGroup":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ExportPhishingCampaignJobRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","phishingCampaignFrequencyGroup":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ExportPhishingCampaignJobRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","phishingCampaignFrequencyGroup":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ExportPhishingCampaignJobRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","phishingCampaignFrequencyGroup":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/{searchType}/search/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of users targeted by a phishing campaign job, filtered by activity search type (e.g., opened, clicked, submitted).",
        "parameters": [
          {
            "name": "searchType",
            "in": "path",
            "description": "The user activity search type filter (e.g., all users, opened, clicked, submitted).",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination, sorting, activity type, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/{searchType}/search/export/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Exports the list of phishing campaign job users to a downloadable file, filtered by activity search type and instance group.",
        "parameters": [
          {
            "name": "searchType",
            "in": "path",
            "description": "The user activity search type filter (e.g., all, opened, clicked, submitted).",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The export request containing pagination, filter criteria, and export type.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/search-email-clicked/{resourceId}": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns the detailed click activity records for a specific user in a phishing campaign job.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailClickedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/search-email-replied/{resourceId}": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns the email reply activity records for a specific user in a phishing campaign job.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailRepliedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/search-email-opened/{resourceId}": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns the email open activity records for a specific user in a phishing campaign job.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailOpenedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/search-email-submitted/{resourceId}": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns the form submission (credential harvesting) records for a specific user in a phishing campaign job.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailSubmittedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/search-mfa-submitted/{resourceId}": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns the MFA token submission records for a specific user in a phishing campaign job.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserMfaSubmittedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/export/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Exports a detailed Excel report for a phishing campaign job instance, including per-user activity data with optional bot activity exclusion.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "excludeBotActivity",
            "in": "query",
            "description": "Whether to exclude detected bot activity from the report. Defaults to true.",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/search-email-reported/{resourceId}": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns the phishing email report (user-reported suspicious email) records for a specific user in a campaign job.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailReportedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/search-email-opened-attachment/{resourceId}": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns the attachment open activity records for a specific user in a phishing campaign job.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailAttachmentOpenedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/activity/{resourceId}": {
      "put": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Updates the activity type classification for a specific phishing campaign job user record (e.g., marking activity as bot or legitimate).",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The update request containing the new search type and activity type values.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.UpdatePhishingCampaignJobUserActivityRequest"
              },
              "example": {"searchType":"NoResponse","activityType":"HumanActivity"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.UpdatePhishingCampaignJobUserActivityRequest"
              },
              "example": {"searchType":"NoResponse","activityType":"HumanActivity"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.UpdatePhishingCampaignJobUserActivityRequest"
              },
              "example": {"searchType":"NoResponse","activityType":"HumanActivity"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.UpdatePhishingCampaignJobUserActivityRequest"
              },
              "example": {"searchType":"NoResponse","activityType":"HumanActivity"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/activity-users/search": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of users with phishing activity within a specified date range, with optional user-level grouping.",
        "requestBody": {
          "description": "The search request containing date range, grouping preference, pagination, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingActivityUsersRequest"
              },
              "example": {"startDate":"2026-07-19 12:13:31","endDate":"2026-10-19 12:13:31","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"email","ascending":false,"groupByUser":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingActivityUsersRequest"
              },
              "example": {"startDate":"2026-07-19 12:13:31","endDate":"2026-10-19 12:13:31","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"email","ascending":false,"groupByUser":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingActivityUsersRequest"
              },
              "example": {"startDate":"2026-07-19 12:13:31","endDate":"2026-10-19 12:13:31","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"email","ascending":false,"groupByUser":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingActivityUsersRequest"
              },
              "example": {"startDate":"2026-07-19 12:13:31","endDate":"2026-10-19 12:13:31","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"email","ascending":false,"groupByUser":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingActivityUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/landing-page-template/form-details": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the form details required to create or edit a phishing landing page template, including available categories and field options.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/landing-page-template/ai-limit": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the remaining AI generation quota for landing page template creation for the current company.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CompanyAILimit.Dto.CompanyAILimitResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/landing-page-template": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Creates a new phishing landing page template for the current company with HTML content, form fields, and redirect settings.",
        "requestBody": {
          "description": "The landing page template creation payload containing name, HTML content, and configuration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.CreateLandingPageTemplateRequest"
              },
              "example": {"name":"Office 365 Login Page","description":"Simulates a Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.CreateLandingPageTemplateRequest"
              },
              "example": {"name":"Office 365 Login Page","description":"Simulates a Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.CreateLandingPageTemplateRequest"
              },
              "example": {"name":"Office 365 Login Page","description":"Simulates a Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.CreateLandingPageTemplateRequest"
              },
              "example": {"name":"Office 365 Login Page","description":"Simulates a Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the most recently AI-generated landing page template HTML content for the current company.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/landing-page-template/generate": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Initiates AI-powered generation of a phishing landing page template based on the provided prompt and configuration.",
        "requestBody": {
          "description": "The AI generation request containing the prompt, language, and template preferences.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.GenerateLandingPageTemplateWithAIRequest"
              },
              "example": {"name":"Corporate VPN Login","prompt":"Generate a realistic corporate VPN login page that asks for username and password with the company logo placeholder and a 'Remember me' checkbox.","languageTypeResourceId":"Ln2Kp5mR7vWx","methodTypeId":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.GenerateLandingPageTemplateWithAIRequest"
              },
              "example": {"name":"Corporate VPN Login","prompt":"Generate a realistic corporate VPN login page that asks for username and password with the company logo placeholder and a 'Remember me' checkbox.","languageTypeResourceId":"Ln2Kp5mR7vWx","methodTypeId":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.GenerateLandingPageTemplateWithAIRequest"
              },
              "example": {"name":"Corporate VPN Login","prompt":"Generate a realistic corporate VPN login page that asks for username and password with the company logo placeholder and a 'Remember me' checkbox.","languageTypeResourceId":"Ln2Kp5mR7vWx","methodTypeId":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.GenerateLandingPageTemplateWithAIRequest"
              },
              "example": {"name":"Corporate VPN Login","prompt":"Generate a realistic corporate VPN login page that asks for username and password with the company logo placeholder and a 'Remember me' checkbox.","languageTypeResourceId":"Ln2Kp5mR7vWx","methodTypeId":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.BooleanResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/landing-page-template/translate-content": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Initiates AI-powered translation of landing page template content into the specified target languages.",
        "requestBody": {
          "description": "The translation request containing landing page content and target language codes.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.TranslateLandingPageContentWithAIRequest"
              },
              "example": {"landingPages":[{"name":"Login Page","content":"<html><body><h1>Login</h1></body></html>","order":1}],"targetLanguages":[{"languageResourceId":"Ln8Tr4mK9vQx"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.TranslateLandingPageContentWithAIRequest"
              },
              "example": {"landingPages":[{"name":"Login Page","content":"<html><body><h1>Login</h1></body></html>","order":1}],"targetLanguages":[{"languageResourceId":"Ln8Tr4mK9vQx"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.TranslateLandingPageContentWithAIRequest"
              },
              "example": {"landingPages":[{"name":"Login Page","content":"<html><body><h1>Login</h1></body></html>","order":1}],"targetLanguages":[{"languageResourceId":"Ln8Tr4mK9vQx"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.TranslateLandingPageContentWithAIRequest"
              },
              "example": {"landingPages":[{"name":"Login Page","content":"<html><body><h1>Login</h1></body></html>","order":1}],"targetLanguages":[{"languageResourceId":"Ln8Tr4mK9vQx"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/landing-page-template/translated-content/{temporaryKey}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Gets translated landing page content results",
        "parameters": [
          {
            "name": "temporaryKey",
            "in": "path",
            "description": "Temporary key returned from translate-content endpoint",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.TranslateLandingPageContentResponseDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/landing-page-template/{resourceId}": {
      "put": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Updates an existing phishing landing page template identified by its resource ID with new HTML content and configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the landing page template to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated landing page template payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.UpdateLandingPageTemplateRequest"
              },
              "example": {"name":"Updated Office 365 Login Page","description":"Updated Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.UpdateLandingPageTemplateRequest"
              },
              "example": {"name":"Updated Office 365 Login Page","description":"Updated Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.UpdateLandingPageTemplateRequest"
              },
              "example": {"name":"Updated Office 365 Login Page","description":"Updated Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.UpdateLandingPageTemplateRequest"
              },
              "example": {"name":"Updated Office 365 Login Page","description":"Updated Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes a phishing landing page template identified by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the landing page template to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the full details of an existing phishing landing page template by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the landing page template.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/landing-page-template/bulk-delete": {
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes multiple phishing landing page templates in a single bulk operation based on the provided list of resource IDs.",
        "requestBody": {
          "description": "The bulk delete request containing the list of landing page template resource IDs to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/landing-page-template/search": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of phishing landing page templates for the current company, with filtering and sorting support.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"DifficultyTypeId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"DifficultyTypeId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"DifficultyTypeId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"DifficultyTypeId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/landing-page-template/search/export": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Exports the landing page template list to a downloadable file (CSV, Excel, or PDF) based on the current search filters.",
        "requestBody": {
          "description": "The export request containing pagination, filter criteria, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/summary/{resourceId}/{instanceGroup}/landing-page-template/{templateResourceId}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the landing page template used in a specific phishing campaign job instance for the phishing simulator summary view.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "templateResourceId",
            "in": "path",
            "description": "The unique resource identifier of the landing page template.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/email-templates": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Creates a new phishing simulation email template with HTML content, subject line, sender details, and optional attachment.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "CategoryResourceId",
                  "Description",
                  "FromAddress",
                  "FromName",
                  "Name",
                  "Subject",
                  "Template"
                ],
                "type": "object",
                "properties": {
                  "IsDuplicated": {
                    "type": "boolean",
                    "description": "Whether this template is being created as a duplicate of an existing one."
                  },
                  "DuplicatedTemplateResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the original template being duplicated."
                  },
                  "Languages": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.CreatePsEmailTemplateLanguageDto"
                    },
                    "description": "Localized language variants of the email template."
                  },
                  "BarrelPayload.Subject": {
                    "type": "string",
                    "description": "Email subject line for the payload."
                  },
                  "BarrelPayload.Template": {
                    "type": "string",
                    "description": "HTML or plain-text body content of the payload email."
                  },
                  "BarrelPayload.PhishingFile": {
                    "type": "string",
                    "description": "Phishing attachment file for the payload email (tracked download).",
                    "format": "binary"
                  },
                  "BarrelPayload.PhishingFileType": {
                    "type": "string",
                    "description": "File type hint for the phishing file (e.g. \"exe\", \"pdf\")."
                  },
                  "BarrelPayload.PhishingFileName": {
                    "type": "string",
                    "description": "Display name for the phishing file."
                  },
                  "BarrelPayload.IsPhishingFileModified": {
                    "type": "boolean",
                    "description": "Update only: true when the phishing file was changed or removed. Sent with no PhishingFile and an\r\nempty PhishingFileName, it removes the payload's phishing file."
                  },
                  "BarrelPayload.AttachmentFiles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "Embedded attachment files for the payload email (not tracked)."
                  },
                  "BarrelPayload.AttachmentFilesToRemove": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Update only: resource ids of the payload's embedded attachments to remove."
                  },
                  "Name": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Display name of the email template."
                  },
                  "Description": {
                    "type": "string",
                    "description": "Description providing context about the template's purpose and content."
                  },
                  "CategoryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the category this template belongs to."
                  },
                  "DifficultyResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the difficulty level assigned to this template."
                  },
                  "LanguageTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the language type for localization."
                  },
                  "Tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of tag labels for categorizing and searching templates."
                  },
                  "Subject": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Email subject line used in the phishing simulation."
                  },
                  "FromName": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Sender display name shown in the email header."
                  },
                  "FromAddress": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Sender email address used in the From field."
                  },
                  "CcAddresses": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of CC (carbon copy) email addresses."
                  },
                  "Template": {
                    "maxLength": 10485760,
                    "type": "string",
                    "description": "HTML or plain-text body content of the email template."
                  },
                  "AvailableForRequests": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
                    },
                    "description": "Visibility and sharing rules that control which entities can access this template."
                  },
                  "AttachmentFiles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "Attachment files included with the phishing simulation email."
                  },
                  "PhishingFile": {
                    "type": "string",
                    "description": "Simulated malicious file attached to the phishing email for payload testing.",
                    "format": "binary"
                  },
                  "PhishingFileType": {
                    "type": "string",
                    "description": "MIME type or extension identifier of the phishing attachment file."
                  },
                  "IsPhishingFileModified": {
                    "type": "boolean",
                    "description": "Whether the phishing attachment file has been modified since the last save."
                  },
                  "PhishingFileName": {
                    "type": "string",
                    "description": "Original file name of the phishing attachment."
                  },
                  "PhishingTypeId": {
                    "type": "integer",
                    "description": "Phishing type identifier classifying the simulation category.",
                    "format": "int32"
                  },
                  "Prompt": {
                    "type": "string",
                    "description": "AI prompt text used when the template content is AI-generated."
                  },
                  "IsAssistedByAI": {
                    "type": "boolean",
                    "description": "Whether this template was generated or refined with AI assistance."
                  },
                  "IsPlainText": {
                    "type": "boolean",
                    "description": "Whether the template body is plain text instead of HTML."
                  },
                  "ToneResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the writing tone applied to the template (e.g., formal, urgent)."
                  }
                }
              },
              "example": {
                "IsDuplicated": false,
                "Name": "IT Password Reset Notice",
                "Description": "Simulates an IT department password reset notification to harvest credentials",
                "CategoryResourceId": "Ct4Kp8mR7xLn",
                "DifficultyResourceId": "Df3Kp8mR7xLv",
                "LanguageTypeResourceId": "Ln2Kp5mR7vWx",
                "Tags": [
                  "password-reset",
                  "credential-harvesting"
                ],
                "Subject": "Action Required: Your Password Will Expire Soon",
                "FromName": "IT Service Desk",
                "FromAddress": "it-support@example-corp.com",
                "Template": "<html><body><p>Your password will expire in 24 hours. <a href='{{phishing_url}}'>Click here</a> to reset it now.</p></body></html>",
                "IsPhishingFileModified": false,
                "PhishingTypeId": 1,
                "IsAssistedByAI": false,
                "IsPlainText": false
              },
              "encoding": {
                "IsDuplicated": {
                  "style": "form"
                },
                "DuplicatedTemplateResourceId": {
                  "style": "form"
                },
                "Languages": {
                  "style": "form"
                },
                "BarrelPayload.Subject": {
                  "style": "form"
                },
                "BarrelPayload.Template": {
                  "style": "form"
                },
                "BarrelPayload.PhishingFile": {
                  "style": "form"
                },
                "BarrelPayload.PhishingFileType": {
                  "style": "form"
                },
                "BarrelPayload.PhishingFileName": {
                  "style": "form"
                },
                "BarrelPayload.IsPhishingFileModified": {
                  "style": "form"
                },
                "BarrelPayload.AttachmentFiles": {
                  "style": "form"
                },
                "BarrelPayload.AttachmentFilesToRemove": {
                  "style": "form"
                },
                "Name": {
                  "style": "form"
                },
                "Description": {
                  "style": "form"
                },
                "CategoryResourceId": {
                  "style": "form"
                },
                "DifficultyResourceId": {
                  "style": "form"
                },
                "LanguageTypeResourceId": {
                  "style": "form"
                },
                "Tags": {
                  "style": "form"
                },
                "Subject": {
                  "style": "form"
                },
                "FromName": {
                  "style": "form"
                },
                "FromAddress": {
                  "style": "form"
                },
                "CcAddresses": {
                  "style": "form"
                },
                "Template": {
                  "style": "form"
                },
                "AvailableForRequests": {
                  "style": "form"
                },
                "AttachmentFiles": {
                  "style": "form"
                },
                "PhishingFile": {
                  "style": "form"
                },
                "PhishingFileType": {
                  "style": "form"
                },
                "IsPhishingFileModified": {
                  "style": "form"
                },
                "PhishingFileName": {
                  "style": "form"
                },
                "PhishingTypeId": {
                  "style": "form"
                },
                "Prompt": {
                  "style": "form"
                },
                "IsAssistedByAI": {
                  "style": "form"
                },
                "IsPlainText": {
                  "style": "form"
                },
                "ToneResourceId": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the most recently AI-generated phishing email template content for the current company.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/translated-email-templates": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the list of AI-translated phishing email template variations for the current company.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.OpenAI.Dto.PsEmailTemplateTranslationResponseDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/email-templates/translate": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Initiates AI-powered translation of a phishing email template into the specified target languages.",
        "requestBody": {
          "description": "The translation request containing the source template and target language codes.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.TranslatePsEmailTemplateWithAIRequest"
              },
              "example": {"languages":[],"template":"<html><body><p>Your password will expire in 24 hours. <a href='{{phishing_url}}'>Click here</a> to reset it now.</p></body></html>","subject":"Action Required: Your Password Will Expire Soon"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.TranslatePsEmailTemplateWithAIRequest"
              },
              "example": {"languages":[],"template":"<html><body><p>Your password will expire in 24 hours. <a href='{{phishing_url}}'>Click here</a> to reset it now.</p></body></html>","subject":"Action Required: Your Password Will Expire Soon"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.TranslatePsEmailTemplateWithAIRequest"
              },
              "example": {"languages":[],"template":"<html><body><p>Your password will expire in 24 hours. <a href='{{phishing_url}}'>Click here</a> to reset it now.</p></body></html>","subject":"Action Required: Your Password Will Expire Soon"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.TranslatePsEmailTemplateWithAIRequest"
              },
              "example": {"languages":[],"template":"<html><body><p>Your password will expire in 24 hours. <a href='{{phishing_url}}'>Click here</a> to reset it now.</p></body></html>","subject":"Action Required: Your Password Will Expire Soon"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.BooleanResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/email-templates/generate": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Initiates AI-powered generation of a phishing email template based on the provided prompt, category, and language preferences.",
        "requestBody": {
          "description": "The AI generation request containing the prompt, language, and template configuration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.GeneratePsEmailTemplateWithAIRequest"
              },
              "example": {"name":"IT Password Reset Notice","languageTypeResourceId":"Ln2Kp5mR7vWx","subject":"Action Required: Your Password Will Expire Soon","fromName":"IT Service Desk","fromAddress":"it-support@example-corp.com","prompt":"Generate a convincing IT password reset email that urges the user to click a link to update their credentials before their account is locked.","phishingTypeId":1,"methodTypeId":1,"isPlainText":false,"toneResourceId":"Tn5Rp2nK7mWx","localizationResourceId":"Lc6Wp3mR8vKx"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.GeneratePsEmailTemplateWithAIRequest"
              },
              "example": {"name":"IT Password Reset Notice","languageTypeResourceId":"Ln2Kp5mR7vWx","subject":"Action Required: Your Password Will Expire Soon","fromName":"IT Service Desk","fromAddress":"it-support@example-corp.com","prompt":"Generate a convincing IT password reset email that urges the user to click a link to update their credentials before their account is locked.","phishingTypeId":1,"methodTypeId":1,"isPlainText":false,"toneResourceId":"Tn5Rp2nK7mWx","localizationResourceId":"Lc6Wp3mR8vKx"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.GeneratePsEmailTemplateWithAIRequest"
              },
              "example": {"name":"IT Password Reset Notice","languageTypeResourceId":"Ln2Kp5mR7vWx","subject":"Action Required: Your Password Will Expire Soon","fromName":"IT Service Desk","fromAddress":"it-support@example-corp.com","prompt":"Generate a convincing IT password reset email that urges the user to click a link to update their credentials before their account is locked.","phishingTypeId":1,"methodTypeId":1,"isPlainText":false,"toneResourceId":"Tn5Rp2nK7mWx","localizationResourceId":"Lc6Wp3mR8vKx"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.GeneratePsEmailTemplateWithAIRequest"
              },
              "example": {"name":"IT Password Reset Notice","languageTypeResourceId":"Ln2Kp5mR7vWx","subject":"Action Required: Your Password Will Expire Soon","fromName":"IT Service Desk","fromAddress":"it-support@example-corp.com","prompt":"Generate a convincing IT password reset email that urges the user to click a link to update their credentials before their account is locked.","phishingTypeId":1,"methodTypeId":1,"isPlainText":false,"toneResourceId":"Tn5Rp2nK7mWx","localizationResourceId":"Lc6Wp3mR8vKx"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.BooleanResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/email-templates/ai-limit": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the remaining AI generation quota for phishing email template creation for the current company.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CompanyAILimit.Dto.CompanyAILimitResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/email-templates/ai-generation-options": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves all available AI template generation options including categories, tones, and language choices for phishing email templates.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CompanyAILimit.Dto.CompanyAILimitResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/email-templates/{resourceId}": {
      "put": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Updates an existing phishing simulation email template identified by its resource ID with new content, subject, and settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "CategoryResourceId",
                  "Description",
                  "FromAddress",
                  "FromName",
                  "Name",
                  "Subject",
                  "Template"
                ],
                "type": "object",
                "properties": {
                  "Languages": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.UpdatePsEmailTemplateLanguageDto"
                    },
                    "description": "Localized language variants of the email template to update."
                  },
                  "BarrelPayload.Subject": {
                    "type": "string",
                    "description": "Email subject line for the payload."
                  },
                  "BarrelPayload.Template": {
                    "type": "string",
                    "description": "HTML or plain-text body content of the payload email."
                  },
                  "BarrelPayload.PhishingFile": {
                    "type": "string",
                    "description": "Phishing attachment file for the payload email (tracked download).",
                    "format": "binary"
                  },
                  "BarrelPayload.PhishingFileType": {
                    "type": "string",
                    "description": "File type hint for the phishing file (e.g. \"exe\", \"pdf\")."
                  },
                  "BarrelPayload.PhishingFileName": {
                    "type": "string",
                    "description": "Display name for the phishing file."
                  },
                  "BarrelPayload.IsPhishingFileModified": {
                    "type": "boolean",
                    "description": "Update only: true when the phishing file was changed or removed. Sent with no PhishingFile and an\r\nempty PhishingFileName, it removes the payload's phishing file."
                  },
                  "BarrelPayload.AttachmentFiles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "Embedded attachment files for the payload email (not tracked)."
                  },
                  "BarrelPayload.AttachmentFilesToRemove": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Update only: resource ids of the payload's embedded attachments to remove."
                  },
                  "Name": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Display name of the email template."
                  },
                  "Description": {
                    "type": "string",
                    "description": "Description providing context about the template's purpose and content."
                  },
                  "CategoryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the category this template belongs to."
                  },
                  "DifficultyResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the difficulty level assigned to this template."
                  },
                  "LanguageTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the language type for localization."
                  },
                  "Tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of tag labels for categorizing and searching templates."
                  },
                  "Subject": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Email subject line used in the phishing simulation."
                  },
                  "FromName": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Sender display name shown in the email header."
                  },
                  "FromAddress": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Sender email address used in the From field."
                  },
                  "CcAddresses": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of CC (carbon copy) email addresses."
                  },
                  "Template": {
                    "maxLength": 10485760,
                    "type": "string",
                    "description": "HTML or plain-text body content of the email template."
                  },
                  "AvailableForRequests": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
                    },
                    "description": "Visibility and sharing rules that control which entities can access this template."
                  },
                  "AttachmentFiles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "Attachment files included with the phishing simulation email."
                  },
                  "PhishingFile": {
                    "type": "string",
                    "description": "Simulated malicious file attached to the phishing email for payload testing.",
                    "format": "binary"
                  },
                  "PhishingFileType": {
                    "type": "string",
                    "description": "MIME type or extension identifier of the phishing attachment file."
                  },
                  "IsPhishingFileModified": {
                    "type": "boolean",
                    "description": "Whether the phishing attachment file has been modified since the last save."
                  },
                  "PhishingFileName": {
                    "type": "string",
                    "description": "Original file name of the phishing attachment."
                  },
                  "PhishingTypeId": {
                    "type": "integer",
                    "description": "Phishing type identifier classifying the simulation category.",
                    "format": "int32"
                  },
                  "Prompt": {
                    "type": "string",
                    "description": "AI prompt text used when the template content is AI-generated."
                  },
                  "IsAssistedByAI": {
                    "type": "boolean",
                    "description": "Whether this template was generated or refined with AI assistance."
                  },
                  "IsPlainText": {
                    "type": "boolean",
                    "description": "Whether the template body is plain text instead of HTML."
                  },
                  "ToneResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the writing tone applied to the template (e.g., formal, urgent)."
                  }
                }
              },
              "example": {
                "Name": "Updated IT Password Reset Notice",
                "Description": "Updated phishing simulation for IT password reset notification",
                "CategoryResourceId": "Ct4Kp8mR7xLn",
                "DifficultyResourceId": "Df3Kp8mR7xLv",
                "LanguageTypeResourceId": "Ln2Kp5mR7vWx",
                "Tags": [
                  "password-reset",
                  "credential-harvesting"
                ],
                "Subject": "Urgent: Your Password Will Expire Soon",
                "FromName": "IT Service Desk",
                "FromAddress": "it-support@example-corp.com",
                "Template": "<html><body><p>Your password will expire in 12 hours. <a href='{{phishing_url}}'>Click here</a> to reset it immediately.</p></body></html>",
                "IsPhishingFileModified": false,
                "PhishingTypeId": 1,
                "IsAssistedByAI": false,
                "IsPlainText": false
              },
              "encoding": {
                "Languages": {
                  "style": "form"
                },
                "BarrelPayload.Subject": {
                  "style": "form"
                },
                "BarrelPayload.Template": {
                  "style": "form"
                },
                "BarrelPayload.PhishingFile": {
                  "style": "form"
                },
                "BarrelPayload.PhishingFileType": {
                  "style": "form"
                },
                "BarrelPayload.PhishingFileName": {
                  "style": "form"
                },
                "BarrelPayload.IsPhishingFileModified": {
                  "style": "form"
                },
                "BarrelPayload.AttachmentFiles": {
                  "style": "form"
                },
                "BarrelPayload.AttachmentFilesToRemove": {
                  "style": "form"
                },
                "Name": {
                  "style": "form"
                },
                "Description": {
                  "style": "form"
                },
                "CategoryResourceId": {
                  "style": "form"
                },
                "DifficultyResourceId": {
                  "style": "form"
                },
                "LanguageTypeResourceId": {
                  "style": "form"
                },
                "Tags": {
                  "style": "form"
                },
                "Subject": {
                  "style": "form"
                },
                "FromName": {
                  "style": "form"
                },
                "FromAddress": {
                  "style": "form"
                },
                "CcAddresses": {
                  "style": "form"
                },
                "Template": {
                  "style": "form"
                },
                "AvailableForRequests": {
                  "style": "form"
                },
                "AttachmentFiles": {
                  "style": "form"
                },
                "PhishingFile": {
                  "style": "form"
                },
                "PhishingFileType": {
                  "style": "form"
                },
                "IsPhishingFileModified": {
                  "style": "form"
                },
                "PhishingFileName": {
                  "style": "form"
                },
                "PhishingTypeId": {
                  "style": "form"
                },
                "Prompt": {
                  "style": "form"
                },
                "IsAssistedByAI": {
                  "style": "form"
                },
                "IsPlainText": {
                  "style": "form"
                },
                "ToneResourceId": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the full details of an existing phishing simulation email template by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.PsEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes an existing phishing simulation email template identified by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/email-templates/bulk-delete": {
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes multiple phishing simulation email templates in a single bulk operation based on the provided list of resource IDs.",
        "requestBody": {
          "description": "The bulk delete request containing the list of email template resource IDs to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/email-templates/search": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of phishing simulation email templates for the current company, with filtering and sorting support.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.Search.PsEmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"IsPlainText","operator":"eq","value":"false"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"phishingTypeId":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.Search.PsEmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"IsPlainText","operator":"eq","value":"false"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"phishingTypeId":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.Search.PsEmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"IsPlainText","operator":"eq","value":"false"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"phishingTypeId":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.Search.PsEmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"IsPlainText","operator":"eq","value":"false"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"phishingTypeId":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.SearchPsEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/email-templates/search/export": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Exports the phishing simulation email template list to a downloadable file (CSV, Excel, or PDF) based on the current filters.",
        "requestBody": {
          "description": "The export request containing pagination, filter criteria, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-simulator/email-templates/merge-tags": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the list of available merge tags (dynamic placeholders) that can be used in phishing email templates.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/email-templates/download-attachment/{resourceId}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Downloads the attachment file associated with a phishing email template by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template whose attachment to download.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-campaign-job-report/summary/{resourceId}/{instanceGroup}/email-templates/{templateResourceId}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the email template used in a specific phishing campaign job instance for the campaign summary view.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "templateResourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.PsEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-scenario/form-details": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the form details required to create or edit a phishing scenario, including available email templates, landing pages, and categories.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-scenario": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Creates a new phishing scenario that pairs an email template with a landing page template, and initiates red flag analysis for the mail template.",
        "requestBody": {
          "description": "The phishing scenario creation payload containing email template, landing page template, and category assignments.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreatePhishingScenarioRequest"
              },
              "example": {"emailTemplateId":1,"name":"Password Reset Phishing Scenario","description":"Credential harvesting scenario simulating password reset notification","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["credential-harvesting","password"],"roleResourceIds":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreatePhishingScenarioRequest"
              },
              "example": {"emailTemplateId":1,"name":"Password Reset Phishing Scenario","description":"Credential harvesting scenario simulating password reset notification","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["credential-harvesting","password"],"roleResourceIds":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreatePhishingScenarioRequest"
              },
              "example": {"emailTemplateId":1,"name":"Password Reset Phishing Scenario","description":"Credential harvesting scenario simulating password reset notification","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["credential-harvesting","password"],"roleResourceIds":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreatePhishingScenarioRequest"
              },
              "example": {"emailTemplateId":1,"name":"Password Reset Phishing Scenario","description":"Credential harvesting scenario simulating password reset notification","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["credential-harvesting","password"],"roleResourceIds":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-scenario/{resourceId}": {
      "put": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Updates an existing phishing scenario identified by its resource ID, and re-triggers red flag analysis if the mail template changed.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing scenario to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated phishing scenario payload.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdatePhishingScenarioRequest"
              },
              "example": {"emailTemplateId":2,"mfaSenderNumberResourceId":"Mf5Tp3kW8xNv","name":"Updated Password Reset Scenario","description":"Updated credential harvesting scenario","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["credential-harvesting","password"],"roleResourceIds":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdatePhishingScenarioRequest"
              },
              "example": {"emailTemplateId":2,"mfaSenderNumberResourceId":"Mf5Tp3kW8xNv","name":"Updated Password Reset Scenario","description":"Updated credential harvesting scenario","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["credential-harvesting","password"],"roleResourceIds":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdatePhishingScenarioRequest"
              },
              "example": {"emailTemplateId":2,"mfaSenderNumberResourceId":"Mf5Tp3kW8xNv","name":"Updated Password Reset Scenario","description":"Updated credential harvesting scenario","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["credential-harvesting","password"],"roleResourceIds":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdatePhishingScenarioRequest"
              },
              "example": {"emailTemplateId":2,"mfaSenderNumberResourceId":"Mf5Tp3kW8xNv","name":"Updated Password Reset Scenario","description":"Updated credential harvesting scenario","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["credential-harvesting","password"],"roleResourceIds":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes a phishing scenario identified by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing scenario to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the full details of an existing phishing scenario by its resource ID, including linked email and landing page templates.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing scenario.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-scenario/bulk-delete": {
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes multiple phishing scenarios in a single bulk operation based on the provided list of resource IDs.",
        "requestBody": {
          "description": "The bulk delete request containing the list of scenario resource IDs to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-scenario/scenario-statistics": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves aggregated statistics for all phishing scenarios grouped by category, including usage counts and success rates.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioStatisticsGroupByDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-scenario/search": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of phishing scenarios for the current company, with support for filtering by campaign, roles, and other criteria.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, filter criteria, and optional campaign/role filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-scenario/search/export": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Exports the phishing scenario list to a downloadable file (CSV, Excel, or PDF) based on the current search filters.",
        "requestBody": {
          "description": "The export request containing pagination, filter criteria, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-scenario/preview/{resourceId}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves a preview of a phishing scenario including the rendered email template and landing page by scenario resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the phishing scenario to preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioPreviewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-scenario/preview/{emailTemplateResourceId}/{landingPageTemplateResourceId}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Previews a phishing scenario by combining a specific email template and landing page template by their resource IDs.",
        "parameters": [
          {
            "name": "emailTemplateResourceId",
            "in": "path",
            "description": "The resource ID of the email template to use in the preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "landingPageTemplateResourceId",
            "in": "path",
            "description": "The resource ID of the landing page template to use in the preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioPreviewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-scenario/mfa-phone-number": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the list of available MFA phone numbers that can be used for SMS-based MFA verification in phishing scenarios.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmsPhoneNumberDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/phishing-simulator/phishing-scenario/search/category-info": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of phishing scenario category information with usage statistics and scenario counts per category.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria for category info.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioCategoryInfoSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioCategoryInfoSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioCategoryInfoSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioCategoryInfoSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioCategoryInfoSearchViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/text-templates": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Creates a new SMS text template for the smishing (SMS phishing) simulator with message content and merge tag configuration.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "CategoryResourceId",
                  "Description",
                  "FromAddress",
                  "FromName",
                  "Name",
                  "Subject",
                  "Template"
                ],
                "type": "object",
                "properties": {
                  "IsDuplicated": {
                    "type": "boolean",
                    "description": "Indicates whether this template was duplicated from an existing one."
                  },
                  "DuplicatedTemplateResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the original template when duplicating."
                  },
                  "Name": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Template display name."
                  },
                  "Description": {
                    "type": "string",
                    "description": "Description of the template's purpose and content."
                  },
                  "CategoryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the phishing scenario category."
                  },
                  "DifficultyResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the template difficulty level."
                  },
                  "LanguageTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the template language."
                  },
                  "Tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Searchable tags associated with the template."
                  },
                  "Subject": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Email subject line used in the phishing simulation."
                  },
                  "FromName": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Display name of the email sender."
                  },
                  "FromAddress": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Email address shown as the sender."
                  },
                  "Template": {
                    "maxLength": 10485760,
                    "type": "string",
                    "description": "HTML body content of the email template."
                  },
                  "AvailableForRequests": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
                    },
                    "description": "Visibility rules controlling which companies or groups can use this template."
                  },
                  "AttachmentFiles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "File attachments to include in the phishing email."
                  },
                  "PhishingFile": {
                    "type": "string",
                    "description": "Weaponized file attachment for credential harvesting or payload delivery.",
                    "format": "binary"
                  },
                  "PhishingFileType": {
                    "type": "string",
                    "description": "MIME type or category of the phishing file (e.g., macro, executable)."
                  },
                  "IsPhishingFileModified": {
                    "type": "boolean",
                    "description": "Indicates whether the phishing file has been changed since last save."
                  },
                  "PhishingFileName": {
                    "type": "string",
                    "description": "Original file name of the phishing attachment."
                  }
                }
              },
              "example": {
                "IsDuplicated": false,
                "Name": "Bank Account Verification SMS",
                "Description": "Simulates a bank account verification SMS to harvest credentials",
                "CategoryResourceId": "Ct4Kp8mR7xLn",
                "DifficultyResourceId": "Df3Kp8mR7xLv",
                "LanguageTypeResourceId": "Ln2Kp5mR7vWx",
                "Tags": [
                  "smishing",
                  "banking"
                ],
                "Subject": "Account Alert",
                "FromName": "MyBank Security",
                "FromAddress": "+15551234567",
                "Template": "ALERT: Unusual activity detected on your account. Verify your identity now: {{phishing_url}}",
                "IsPhishingFileModified": false
              },
              "encoding": {
                "IsDuplicated": {
                  "style": "form"
                },
                "DuplicatedTemplateResourceId": {
                  "style": "form"
                },
                "Name": {
                  "style": "form"
                },
                "Description": {
                  "style": "form"
                },
                "CategoryResourceId": {
                  "style": "form"
                },
                "DifficultyResourceId": {
                  "style": "form"
                },
                "LanguageTypeResourceId": {
                  "style": "form"
                },
                "Tags": {
                  "style": "form"
                },
                "Subject": {
                  "style": "form"
                },
                "FromName": {
                  "style": "form"
                },
                "FromAddress": {
                  "style": "form"
                },
                "Template": {
                  "style": "form"
                },
                "AvailableForRequests": {
                  "style": "form"
                },
                "AttachmentFiles": {
                  "style": "form"
                },
                "PhishingFile": {
                  "style": "form"
                },
                "PhishingFileType": {
                  "style": "form"
                },
                "IsPhishingFileModified": {
                  "style": "form"
                },
                "PhishingFileName": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/text-templates/{resourceId}": {
      "put": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Updates an existing smishing SMS text template identified by its resource ID with new message content and configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the text template to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "CategoryResourceId",
                  "Description",
                  "FromAddress",
                  "FromName",
                  "Name",
                  "Subject",
                  "Template"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Template display name."
                  },
                  "Description": {
                    "type": "string",
                    "description": "Description of the template's purpose and content."
                  },
                  "CategoryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the phishing scenario category."
                  },
                  "DifficultyResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the template difficulty level."
                  },
                  "LanguageTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the template language."
                  },
                  "Tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Searchable tags associated with the template."
                  },
                  "Subject": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Email subject line used in the phishing simulation."
                  },
                  "FromName": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Display name of the email sender."
                  },
                  "FromAddress": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Email address shown as the sender."
                  },
                  "Template": {
                    "maxLength": 10485760,
                    "type": "string",
                    "description": "HTML body content of the email template."
                  },
                  "AvailableForRequests": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
                    },
                    "description": "Visibility rules controlling which companies or groups can use this template."
                  },
                  "AttachmentFiles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "File attachments to include in the phishing email."
                  },
                  "PhishingFile": {
                    "type": "string",
                    "description": "Weaponized file attachment for credential harvesting or payload delivery.",
                    "format": "binary"
                  },
                  "PhishingFileType": {
                    "type": "string",
                    "description": "MIME type or category of the phishing file (e.g., macro, executable)."
                  },
                  "IsPhishingFileModified": {
                    "type": "boolean",
                    "description": "Indicates whether the phishing file has been changed since last save."
                  },
                  "PhishingFileName": {
                    "type": "string",
                    "description": "Original file name of the phishing attachment."
                  }
                }
              },
              "example": {
                "Name": "Updated Bank Account Verification SMS",
                "Description": "Updated smishing simulation for bank account verification",
                "CategoryResourceId": "Ct4Kp8mR7xLn",
                "DifficultyResourceId": "Df3Kp8mR7xLv",
                "LanguageTypeResourceId": "Ln2Kp5mR7vWx",
                "Tags": [
                  "smishing",
                  "banking"
                ],
                "Subject": "Urgent Account Alert",
                "FromName": "MyBank Security",
                "FromAddress": "+15551234567",
                "Template": "URGENT: Your account has been temporarily locked. Verify now: {{phishing_url}}",
                "IsPhishingFileModified": false
              },
              "encoding": {
                "Name": {
                  "style": "form"
                },
                "Description": {
                  "style": "form"
                },
                "CategoryResourceId": {
                  "style": "form"
                },
                "DifficultyResourceId": {
                  "style": "form"
                },
                "LanguageTypeResourceId": {
                  "style": "form"
                },
                "Tags": {
                  "style": "form"
                },
                "Subject": {
                  "style": "form"
                },
                "FromName": {
                  "style": "form"
                },
                "FromAddress": {
                  "style": "form"
                },
                "Template": {
                  "style": "form"
                },
                "AvailableForRequests": {
                  "style": "form"
                },
                "AttachmentFiles": {
                  "style": "form"
                },
                "PhishingFile": {
                  "style": "form"
                },
                "PhishingFileType": {
                  "style": "form"
                },
                "IsPhishingFileModified": {
                  "style": "form"
                },
                "PhishingFileName": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the full details of an existing smishing SMS text template by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the text template.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PsTextTemplate.Dto.PsTextTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes an existing smishing SMS text template identified by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the text template to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/text-templates/bulk-delete": {
      "delete": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Deletes multiple smishing SMS text templates in a single bulk operation based on the provided list of resource IDs.",
        "requestBody": {
          "description": "The bulk delete request containing the list of text template resource IDs to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/text-templates/search": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Searches and returns a paginated list of smishing SMS text templates for the current company, with filtering and sorting support.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsTextTemplate.Search.PsTextTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":""}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"CategoryResourceId","operator":"eq","value":""}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsTextTemplate.Search.PsTextTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":""}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"CategoryResourceId","operator":"eq","value":""}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsTextTemplate.Search.PsTextTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":""}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"CategoryResourceId","operator":"eq","value":""}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsTextTemplate.Search.PsTextTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":""}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"CategoryResourceId","operator":"eq","value":""}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PsTextTemplate.Dto.SearchPsTextTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/text-templates/search/export": {
      "post": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Exports the smishing SMS text template list to a downloadable file (CSV, Excel, or PDF) based on the current search filters.",
        "requestBody": {
          "description": "The export request containing pagination, filter criteria, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/smishing-simulator/text-templates/merge-tags": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the list of available merge tags (dynamic placeholders) that can be used in smishing text templates.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/summary/{resourceId}/{instanceGroup}/text-templates/{templateResourceId}": {
      "get": {
        "tags": [
          "Phishing Simulation"
        ],
        "summary": "Retrieves the text template used in a specific smishing campaign job instance for the campaign summary view.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "templateResourceId",
            "in": "path",
            "description": "The unique resource identifier of the text template.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PsTextTemplate.Dto.PsTextTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign/form-details": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the form details required to create or edit a QR phishing (quishing) campaign, including available options and default values.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign/search": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of QR phishing (quishing) campaigns for the current company, with support for filtering, sorting, and pagination.",
        "requestBody": {
          "description": "Search criteria including pagination, sort order, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Creates a new QR phishing (quishing) campaign for the current company with the specified configuration, target groups, and scheduling options.",
        "requestBody": {
          "description": "The quishing campaign creation payload including scenario, target groups, schedule, and delivery settings.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreateQuishingCampaignRequest"
              },
              "example": {"quishingScenarios":[{"quishingScenarioResourceId":"Qs5Rm8vT3nKp","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately"}],"quishingScenarioResourceIds":["Qs5Rm8vT3nKp"],"smtpSettingResourceId":"Sm8pW3nR5vQx","distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"emailDeliverySettingType":1,"templateType":"Email","name":"Q1 2026 QR Code Phishing Simulation","description":"QR code phishing simulation targeting office staff with embedded QR codes","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"distributionStartTypeId":1,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","awardCertificate":true,"categoryDistributionType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreateQuishingCampaignRequest"
              },
              "example": {"quishingScenarios":[{"quishingScenarioResourceId":"Qs5Rm8vT3nKp","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately"}],"quishingScenarioResourceIds":["Qs5Rm8vT3nKp"],"smtpSettingResourceId":"Sm8pW3nR5vQx","distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"emailDeliverySettingType":1,"templateType":"Email","name":"Q1 2026 QR Code Phishing Simulation","description":"QR code phishing simulation targeting office staff with embedded QR codes","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"distributionStartTypeId":1,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","awardCertificate":true,"categoryDistributionType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreateQuishingCampaignRequest"
              },
              "example": {"quishingScenarios":[{"quishingScenarioResourceId":"Qs5Rm8vT3nKp","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately"}],"quishingScenarioResourceIds":["Qs5Rm8vT3nKp"],"smtpSettingResourceId":"Sm8pW3nR5vQx","distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"emailDeliverySettingType":1,"templateType":"Email","name":"Q1 2026 QR Code Phishing Simulation","description":"QR code phishing simulation targeting office staff with embedded QR codes","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"distributionStartTypeId":1,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","awardCertificate":true,"categoryDistributionType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreateQuishingCampaignRequest"
              },
              "example": {"quishingScenarios":[{"quishingScenarioResourceId":"Qs5Rm8vT3nKp","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately"}],"quishingScenarioResourceIds":["Qs5Rm8vT3nKp"],"smtpSettingResourceId":"Sm8pW3nR5vQx","distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"emailDeliverySettingType":1,"templateType":"Email","name":"Q1 2026 QR Code Phishing Simulation","description":"QR code phishing simulation targeting office staff with embedded QR codes","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"distributionStartTypeId":1,"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","awardCertificate":true,"categoryDistributionType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign/{resourceId}": {
      "put": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Updates an existing QR phishing (quishing) campaign identified by its resource ID, allowing modification of scenario, targets, schedule, and delivery settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated quishing campaign payload with modified configuration fields.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdateQuishingCampaignRequest"
              },
              "example": {"quishingScenarios":[{"quishingScenarioResourceId":"Qs5Rm8vT3nKp","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately"}],"smtpSettingResourceId":"Sm8pW3nR5vQx","emailDeliverySettingType":1,"quishingScenarioResourceIds":["Qs5Rm8vT3nKp"],"resourceId":"Qc3Lm7vR8nKp","name":"Q2 2026 Updated QR Code Campaign","description":"Updated QR code phishing simulation for office staff","distributionStartTypeId":1,"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"awardCertificate":true,"categoryDistributionType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdateQuishingCampaignRequest"
              },
              "example": {"quishingScenarios":[{"quishingScenarioResourceId":"Qs5Rm8vT3nKp","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately"}],"smtpSettingResourceId":"Sm8pW3nR5vQx","emailDeliverySettingType":1,"quishingScenarioResourceIds":["Qs5Rm8vT3nKp"],"resourceId":"Qc3Lm7vR8nKp","name":"Q2 2026 Updated QR Code Campaign","description":"Updated QR code phishing simulation for office staff","distributionStartTypeId":1,"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"awardCertificate":true,"categoryDistributionType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdateQuishingCampaignRequest"
              },
              "example": {"quishingScenarios":[{"quishingScenarioResourceId":"Qs5Rm8vT3nKp","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately"}],"smtpSettingResourceId":"Sm8pW3nR5vQx","emailDeliverySettingType":1,"quishingScenarioResourceIds":["Qs5Rm8vT3nKp"],"resourceId":"Qc3Lm7vR8nKp","name":"Q2 2026 Updated QR Code Campaign","description":"Updated QR code phishing simulation for office staff","distributionStartTypeId":1,"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"awardCertificate":true,"categoryDistributionType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdateQuishingCampaignRequest"
              },
              "example": {"quishingScenarios":[{"quishingScenarioResourceId":"Qs5Rm8vT3nKp","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately"}],"smtpSettingResourceId":"Sm8pW3nR5vQx","emailDeliverySettingType":1,"quishingScenarioResourceIds":["Qs5Rm8vT3nKp"],"resourceId":"Qc3Lm7vR8nKp","name":"Q2 2026 Updated QR Code Campaign","description":"Updated QR code phishing simulation for office staff","distributionStartTypeId":1,"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":14,"sendingLimit":50,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"awardCertificate":true,"categoryDistributionType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Deletes a QR phishing (quishing) campaign identified by its resource ID, removing all associated configuration and data.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the full details of an existing QR phishing (quishing) campaign by its resource ID, including scenario, target groups, and scheduling configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign/preview/{resourceId}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Generates a preview of a QR phishing (quishing) campaign by its resource ID, showing how the campaign emails and landing pages will appear to target users.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign to preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.QuishingCampaignPreviewListDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign/print-preview/{resourceId}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Generates a printable preview of a QR phishing (quishing) campaign, returning the rendered content as a downloadable file.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign to generate a print preview for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign/preview/{smtpSettingResourceId}/{quishingScenarioResourceId}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Generates a preview of a QR phishing (quishing) campaign by combining a specific SMTP setting and quishing scenario, showing how the email will be rendered.",
        "parameters": [
          {
            "name": "smtpSettingResourceId",
            "in": "path",
            "description": "The resource ID of the SMTP delivery setting to use for the preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "quishingScenarioResourceId",
            "in": "path",
            "description": "The resource ID of the quishing scenario to preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignPreviewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign/root-company-shared-smtp-resource-id": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Returns the resource ID of the most recently created shared SMTP settings from the root company, used as the default email delivery configuration for quishing campaigns.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign/search/export": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Exports the filtered list of QR phishing (quishing) campaigns as a downloadable file in the specified format (e.g., Excel, CSV).",
        "requestBody": {
          "description": "Export criteria including pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign/calculate-sending-info": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Calculates the estimated sending information for a QR phishing campaign, including total target count and estimated delivery time based on the provided configuration.",
        "requestBody": {
          "description": "The campaign configuration parameters used to compute sending estimates.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.QuishingCalculateSendingInfoRequest"
              },
              "example": {"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"sendingLimit":50,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":250}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.QuishingCalculateSendingInfoRequest"
              },
              "example": {"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"sendingLimit":50,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":250}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.QuishingCalculateSendingInfoRequest"
              },
              "example": {"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"sendingLimit":50,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":250}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.QuishingCalculateSendingInfoRequest"
              },
              "example": {"distributionTypeId":2,"distributionDelayEvery":5,"distributionDelayTimeTypeId":2,"distributionEmailOver":100,"distributionEmailOverTimeTypeId":2,"sendingLimit":50,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":250}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignSendingInfoViewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign/bulk-delete": {
      "delete": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Deletes multiple QR phishing (quishing) campaigns in a single bulk operation based on the provided list of campaign identifiers.",
        "requestBody": {
          "description": "The bulk delete payload containing the list of quishing campaign items to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.QuishingCampaignDeleteRequest"
              },
              "example": {"items":["Qc3Lm7vR8nKp","Qc9Tp2kW5xNv"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.QuishingCampaignDeleteRequest"
              },
              "example": {"items":["Qc3Lm7vR8nKp","Qc9Tp2kW5xNv"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.QuishingCampaignDeleteRequest"
              },
              "example": {"items":["Qc3Lm7vR8nKp","Qc9Tp2kW5xNv"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.QuishingCampaignDeleteRequest"
              },
              "example": {"items":["Qc3Lm7vR8nKp","Qc9Tp2kW5xNv"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign/calculate-schedule-info": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Calculates the schedule information for a QR phishing campaign, providing estimated start and end times based on the scheduling configuration and target group size.",
        "requestBody": {
          "description": "The scheduling parameters used to compute the campaign timeline.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.QuishingCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"quishingScenarioResourceIds":["Qs5Rm8vT3nKp"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.QuishingCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"quishingScenarioResourceIds":["Qs5Rm8vT3nKp"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.QuishingCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"quishingScenarioResourceIds":["Qs5Rm8vT3nKp"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.QuishingCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"quishingScenarioResourceIds":["Qs5Rm8vT3nKp"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignScheduleInfoViewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign/email-delivery-setting-list": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the list of available email delivery settings for quishing campaigns, including both SMTP configurations and direct email creation settings.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.EmailDeliverySettingModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job/form-details": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the form details required to create or manage a QR phishing (quishing) campaign job, including available instance groups and configuration options.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job/start/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Starts a new QR phishing (quishing) campaign job for a specific instance group of an existing campaign, initiating email delivery to the targeted users.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number to start the job for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job/start/{resourceId}": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Creates a new instance group and immediately starts a QR phishing (quishing) campaign job, logging the action as an audit event.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign to start.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Optional instance configuration overrides for the new campaign job.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignInstance"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-20 12:13:31","scheduledDateTimeZoneId":"UTC","scheduleTypeId":1,"targetGroupResourceIds":["Qw4Rt6yU8iOp"],"distributionStartTypeId":1,"sendingLimit":100,"distributionDelayTimeTypeId":1,"distributionDelayEvery":0,"useTargetUserTimeZone":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignInstance"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-20 12:13:31","scheduledDateTimeZoneId":"UTC","scheduleTypeId":1,"targetGroupResourceIds":["Qw4Rt6yU8iOp"],"distributionStartTypeId":1,"sendingLimit":100,"distributionDelayTimeTypeId":1,"distributionDelayEvery":0,"useTargetUserTimeZone":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignInstance"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-20 12:13:31","scheduledDateTimeZoneId":"UTC","scheduleTypeId":1,"targetGroupResourceIds":["Qw4Rt6yU8iOp"],"distributionStartTypeId":1,"sendingLimit":100,"distributionDelayTimeTypeId":1,"distributionDelayEvery":0,"useTargetUserTimeZone":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignInstance"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-20 12:13:31","scheduledDateTimeZoneId":"UTC","scheduleTypeId":1,"targetGroupResourceIds":["Qw4Rt6yU8iOp"],"distributionStartTypeId":1,"sendingLimit":100,"distributionDelayTimeTypeId":1,"distributionDelayEvery":0,"useTargetUserTimeZone":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job/stop/{resourceId}/{instanceGroup}": {
      "patch": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Stops a running QR phishing (quishing) campaign job for the specified campaign and instance group, halting further email delivery.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the job to stop.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job/{resourceId}/{instanceGroup}": {
      "delete": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Deletes a QR phishing (quishing) campaign job for the specified campaign and instance group, removing all associated job data and user tracking records.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the job to delete.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job/resend/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Resends the QR phishing (quishing) campaign job emails to users filtered by activity types (e.g., not opened, not clicked), logging the resend action for audit.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the job to resend.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The resend criteria specifying which user activity types to target.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersRequest"
              },
              "example": {"types":["NoResponse"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersRequest"
              },
              "example": {"types":["NoResponse"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersRequest"
              },
              "example": {"types":["NoResponse"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersRequest"
              },
              "example": {"types":["NoResponse"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job/resend/list/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Resends the QR phishing (quishing) campaign job emails to a specific list of users, with options to select all, exclude certain users, or apply filters.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the job to resend.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The resend criteria with user selection options including include/exclude lists and filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job/email-activity/{resourceId}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the detailed email activity timeline for a specific user within a QR phishing (quishing) campaign job, including delivery, open, click, and submission events.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the campaign job user record to retrieve activity for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job/download-individual/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Downloads a PDF document containing the QR code content for a specific quishing campaign job and instance group, suitable for physical distribution.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number to download the PDF for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/summary/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the summary report for a QR phishing (quishing) campaign job, including statistics on email delivery, opens, clicks, submissions, and overall engagement rates.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number to retrieve the summary for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/summary/training/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the training-focused summary report for a QR phishing (quishing) campaign job, providing statistics filtered to training-related metrics such as completion and awareness improvement.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number to retrieve the training summary for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/summary/target-groups/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the target groups and their summarized user lists for a specific QR phishing (quishing) campaign job instance, showing group-level engagement metrics.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number to retrieve target groups for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignTargetGroupsResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/{resourceId}/search": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of campaign job instances belonging to a specific QR phishing (quishing) campaign, with support for filtering by frequency group.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the parent quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sort order, frequency group filter, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.SearchQuishingCampaignJobRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"phishingCampaignFrequencyGroup":0,"searchType":"All"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.SearchQuishingCampaignJobRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"phishingCampaignFrequencyGroup":0,"searchType":"All"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.SearchQuishingCampaignJobRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"phishingCampaignFrequencyGroup":0,"searchType":"All"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.SearchQuishingCampaignJobRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"phishingCampaignFrequencyGroup":0,"searchType":"All"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Search.QuishingCampaignJobSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/search": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of all QR phishing (quishing) campaign job reports across campaigns, with support for filtering, sorting, and pagination.",
        "requestBody": {
          "description": "Search criteria including pagination, sort order, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobReportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobReportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobReportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobReportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Search.QuishingCampaignJobReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/search/export": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Exports the filtered list of QR phishing (quishing) campaign job reports as a downloadable file in the specified format (e.g., Excel, CSV).",
        "requestBody": {
          "description": "Export criteria including pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/{resourceId}/search/export": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Exports the list of campaign job instances for a specific QR phishing (quishing) campaign as a downloadable file, with support for frequency group filtering.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the parent quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Export criteria including pagination, filters, frequency group, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ExportQuishingCampaignJobRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","phishingCampaignFrequencyGroup":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ExportQuishingCampaignJobRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","phishingCampaignFrequencyGroup":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ExportQuishingCampaignJobRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","phishingCampaignFrequencyGroup":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ExportQuishingCampaignJobRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","phishingCampaignFrequencyGroup":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/{searchType}/search/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of users targeted by a QR phishing (quishing) campaign job, filtered by the specified search type (e.g., all, clicked, opened, submitted).",
        "parameters": [
          {
            "name": "searchType",
            "in": "path",
            "description": "The user activity category to filter by (e.g., All, Clicked, Opened, Submitted, Reported).",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number to search users within.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sort order, activity type filter, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/printout-users/search/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of users for the individual printout report of a QR phishing (quishing) campaign job, used for generating per-user QR code documents.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number to search printout users within.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sort order, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobPrintoutUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/{searchType}/search/export/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Exports the list of users targeted by a QR phishing (quishing) campaign job as a downloadable file, filtered by the specified activity search type.",
        "parameters": [
          {
            "name": "searchType",
            "in": "path",
            "description": "The user activity category to filter by (e.g., All, Clicked, Opened, Submitted, Reported).",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number to export users from.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Export criteria including pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/search-email-clicked/{resourceId}": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of email click events for a specific user within a QR phishing (quishing) campaign job, showing when and how many times the user clicked the phishing link.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sort order, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailClickedSearchViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/search-email-opened/{resourceId}": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of email open events for a specific user within a QR phishing (quishing) campaign job, showing when and how many times the user opened the email.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sort order, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailOpenedSearchViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/search-email-submitted/{resourceId}": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of form submission events for a specific user within a QR phishing (quishing) campaign job, showing credentials or data submitted on the landing page.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sort order, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailSubmittedSearchViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/search-email-reported/{resourceId}": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of phishing report events for a specific user within a QR phishing (quishing) campaign job, showing when the user reported the email as suspicious.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sort order, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailReportedSearchViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/search-all/{resourceId}": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of all email activity events for a specific user within a QR phishing (quishing) campaign job, combining open, click, submission, and report events.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sort order, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailAllSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/export/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Exports a comprehensive Excel report for a specific QR phishing (quishing) campaign job, including detailed user activity, engagement metrics, and campaign configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number to generate the detailed report for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/search-mfa-submitted/{resourceId}": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of MFA submission events for a specific user within a QR phishing (quishing) campaign job, showing when and what MFA credentials were submitted on the landing page.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the campaign job user record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sort order, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailMfaSubmittedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/dns-services/form-details": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the form details required to create or edit a DNS service provider configuration for the quishing simulator, including available provider types and settings.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DnsService.Dto.DnsServiceFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/dns-services": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Creates a new DNS service provider configuration for the quishing simulator, defining the DNS provider credentials and settings used for domain management.",
        "requestBody": {
          "description": "The DNS service provider creation payload including provider type, API credentials, and configuration settings.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.CreateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.CreateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.CreateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.CreateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/dns-services/{resourceId}": {
      "put": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Updates an existing DNS service provider configuration for the quishing simulator, allowing modification of credentials, provider type, or settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DNS service provider to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated DNS service provider payload with modified fields.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.UpdateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production Updated","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.UpdateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production Updated","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.UpdateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production Updated","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.UpdateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production Updated","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Deletes a DNS service provider configuration from the quishing simulator by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DNS service provider to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the full details of an existing DNS service provider configuration by its resource ID, including provider type, credentials, and associated settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DNS service provider to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DnsService.Dto.DnsServiceProviderDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/dns-services/search": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of DNS service provider configurations for the quishing simulator, with support for filtering, sorting, and pagination.",
        "requestBody": {
          "description": "Search criteria including pagination, sort order, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.DnServiceProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.DnServiceProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.DnServiceProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.DnServiceProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.DnsService.Search.DnsServiceProviderSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/dns-services/search/export": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Exports the filtered list of DNS service provider configurations as a downloadable file in the specified format (e.g., Excel, CSV).",
        "requestBody": {
          "description": "Export criteria including pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/dns-services/{resourceId}/test": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Tests the connectivity and authentication of a DNS service provider configuration by performing a validation request against the provider's API.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DNS service provider to test.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The test parameters including DNS zone or domain information to validate.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.TestDnsServiceProviderRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","dnsServiceProviderTypeId":1,"username":"api-key@example.com","password":"api-secret-token"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.TestDnsServiceProviderRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","dnsServiceProviderTypeId":1,"username":"api-key@example.com","password":"api-secret-token"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.TestDnsServiceProviderRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","dnsServiceProviderTypeId":1,"username":"api-key@example.com","password":"api-secret-token"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.TestDnsServiceProviderRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","dnsServiceProviderTypeId":1,"username":"api-key@example.com","password":"api-secret-token"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/domain-records/form-details": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the form details required to create or edit a domain record for the quishing simulator, including available DNS providers and domain configuration options.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/domain-records/test": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Tests the validity of a domain record configuration by verifying the DNS zone ID against the specified DNS provider, ensuring the domain can be managed correctly.",
        "requestBody": {
          "description": "The test parameters including DNS provider reference and zone identification details.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.TestDomainRecordRequest"
              },
              "example": {"dnsServiceProviderId":1,"zoneId":"abc123def456"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.TestDomainRecordRequest"
              },
              "example": {"dnsServiceProviderId":1,"zoneId":"abc123def456"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.TestDomainRecordRequest"
              },
              "example": {"dnsServiceProviderId":1,"zoneId":"abc123def456"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.TestDomainRecordRequest"
              },
              "example": {"dnsServiceProviderId":1,"zoneId":"abc123def456"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/domain-records": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Creates a new domain record for the quishing simulator, associating a domain with a DNS provider for use in QR phishing campaign landing pages.",
        "requestBody": {
          "description": "The domain record creation payload including domain name, DNS provider reference, and zone configuration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+CreateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.50","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+CreateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.50","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+CreateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.50","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+CreateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.50","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/domain-records/{resourceId}": {
      "put": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Updates an existing domain record for the quishing simulator, allowing modification of the domain name, DNS provider, or zone configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the domain record to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated domain record payload with modified fields.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+UpdateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.51","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+UpdateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.51","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+UpdateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.51","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+UpdateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.51","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Deletes a domain record from the quishing simulator by its resource ID, removing the domain association and DNS configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the domain record to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the full details of an existing domain record by its resource ID, including domain name, DNS provider association, and zone configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the domain record to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/domain-records/search": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of domain records for the quishing simulator, with support for filtering, sorting, and pagination.",
        "requestBody": {
          "description": "Search criteria including pagination, sort order, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+DomainRecordSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+DomainRecordSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+DomainRecordSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+DomainRecordSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/domain-records/search/export": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Exports the filtered list of domain records as a downloadable file in the specified format (e.g., Excel, CSV).",
        "requestBody": {
          "description": "Export criteria including pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/excluded-ip": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Creates or updates the excluded IP address list for QR phishing (quishing) campaigns, preventing tracking events from specified IP addresses (e.g., security scanners, corporate proxies).",
        "requestBody": {
          "description": "The excluded IP creation payload containing the list of IP addresses or CIDR ranges to exclude.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ExcludedIP.CreatePhishingCampaignExcludedIPRequest"
              },
              "example": {"excludedIPs":["10.0.0.1","192.168.1.0/24"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ExcludedIP.CreatePhishingCampaignExcludedIPRequest"
              },
              "example": {"excludedIPs":["10.0.0.1","192.168.1.0/24"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ExcludedIP.CreatePhishingCampaignExcludedIPRequest"
              },
              "example": {"excludedIPs":["10.0.0.1","192.168.1.0/24"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ExcludedIP.CreatePhishingCampaignExcludedIPRequest"
              },
              "example": {"excludedIPs":["10.0.0.1","192.168.1.0/24"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignExcludedIP.Dto.PhishingCampaignExcludedIPDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/excluded-ip-list": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the current excluded IP address list for QR phishing (quishing) campaigns, showing all IP addresses and ranges that are excluded from campaign tracking.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignExcludedIP.Dto.PhishingCampaignExcludedIPItemDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/landing-page-template/form-details": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the form details required to create or edit a landing page template for the quishing simulator, including available form fields, capture options, and layout settings.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/landing-page-template": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Creates a new landing page template for the quishing simulator, defining the HTML content, form fields, and data capture configuration that users see after scanning a QR code.",
        "requestBody": {
          "description": "The landing page template creation payload including HTML content, form configuration, and capture settings.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.CreateLandingPageTemplateRequest"
              },
              "example": {"name":"Office 365 Login Page","description":"Simulates a Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.CreateLandingPageTemplateRequest"
              },
              "example": {"name":"Office 365 Login Page","description":"Simulates a Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.CreateLandingPageTemplateRequest"
              },
              "example": {"name":"Office 365 Login Page","description":"Simulates a Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.CreateLandingPageTemplateRequest"
              },
              "example": {"name":"Office 365 Login Page","description":"Simulates a Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.CreateLandingPageTemplateReturnSearch, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/landing-page-template/{resourceId}": {
      "put": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Updates an existing landing page template for the quishing simulator, allowing modification of the HTML content, form fields, or data capture configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the landing page template to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated landing page template payload with modified fields.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.UpdateLandingPageTemplateRequest"
              },
              "example": {"name":"Updated Office 365 Login Page","description":"Updated Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.UpdateLandingPageTemplateRequest"
              },
              "example": {"name":"Updated Office 365 Login Page","description":"Updated Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.UpdateLandingPageTemplateRequest"
              },
              "example": {"name":"Updated Office 365 Login Page","description":"Updated Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.UpdateLandingPageTemplateRequest"
              },
              "example": {"name":"Updated Office 365 Login Page","description":"Updated Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Deletes a landing page template from the quishing simulator by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the landing page template to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the full details of an existing landing page template by its resource ID, including HTML content, form configuration, and capture settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the landing page template to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/landing-page-template/bulk-delete": {
      "delete": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Deletes multiple landing page templates from the quishing simulator in a single bulk operation based on the provided list of identifiers.",
        "requestBody": {
          "description": "The bulk delete payload containing the list of landing page template items to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/landing-page-template/search": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of landing page templates for the quishing simulator, with support for filtering, sorting, and pagination.",
        "requestBody": {
          "description": "Search criteria including pagination, sort order, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"DifficultyTypeId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"DifficultyTypeId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"DifficultyTypeId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"DifficultyTypeId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/landing-page-template/search/export": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Exports the filtered list of landing page templates as a downloadable file in the specified format (e.g., Excel, CSV).",
        "requestBody": {
          "description": "Export criteria including pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/summary/{resourceId}/{instanceGroup}/landing-page-template/{templateResourceId}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the landing page template used in a specific quishing campaign job instance, allowing review of the template as it was configured at the time of the campaign run.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "templateResourceId",
            "in": "path",
            "description": "The unique resource identifier of the landing page template to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/email-templates": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Creates a new email template for the quishing simulator, defining the email subject, body HTML, sender information, and optional attachments used in QR phishing campaigns.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "CategoryResourceId",
                  "Description",
                  "FromAddress",
                  "FromName",
                  "Name",
                  "Subject",
                  "Template"
                ],
                "type": "object",
                "properties": {
                  "IsDuplicated": {
                    "type": "boolean",
                    "description": "Whether this template is being created as a duplicate of an existing one."
                  },
                  "DuplicatedTemplateResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the original template being duplicated."
                  },
                  "Languages": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.CreatePsEmailTemplateLanguageDto"
                    },
                    "description": "Localized language variants of the email template."
                  },
                  "BarrelPayload.Subject": {
                    "type": "string",
                    "description": "Email subject line for the payload."
                  },
                  "BarrelPayload.Template": {
                    "type": "string",
                    "description": "HTML or plain-text body content of the payload email."
                  },
                  "BarrelPayload.PhishingFile": {
                    "type": "string",
                    "description": "Phishing attachment file for the payload email (tracked download).",
                    "format": "binary"
                  },
                  "BarrelPayload.PhishingFileType": {
                    "type": "string",
                    "description": "File type hint for the phishing file (e.g. \"exe\", \"pdf\")."
                  },
                  "BarrelPayload.PhishingFileName": {
                    "type": "string",
                    "description": "Display name for the phishing file."
                  },
                  "BarrelPayload.IsPhishingFileModified": {
                    "type": "boolean",
                    "description": "Update only: true when the phishing file was changed or removed. Sent with no PhishingFile and an\r\nempty PhishingFileName, it removes the payload's phishing file."
                  },
                  "BarrelPayload.AttachmentFiles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "Embedded attachment files for the payload email (not tracked)."
                  },
                  "BarrelPayload.AttachmentFilesToRemove": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Update only: resource ids of the payload's embedded attachments to remove."
                  },
                  "Name": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Display name of the email template."
                  },
                  "Description": {
                    "type": "string",
                    "description": "Description providing context about the template's purpose and content."
                  },
                  "CategoryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the category this template belongs to."
                  },
                  "DifficultyResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the difficulty level assigned to this template."
                  },
                  "LanguageTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the language type for localization."
                  },
                  "Tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of tag labels for categorizing and searching templates."
                  },
                  "Subject": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Email subject line used in the phishing simulation."
                  },
                  "FromName": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Sender display name shown in the email header."
                  },
                  "FromAddress": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Sender email address used in the From field."
                  },
                  "CcAddresses": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of CC (carbon copy) email addresses."
                  },
                  "Template": {
                    "maxLength": 10485760,
                    "type": "string",
                    "description": "HTML or plain-text body content of the email template."
                  },
                  "AvailableForRequests": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
                    },
                    "description": "Visibility and sharing rules that control which entities can access this template."
                  },
                  "AttachmentFiles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "Attachment files included with the phishing simulation email."
                  },
                  "PhishingFile": {
                    "type": "string",
                    "description": "Simulated malicious file attached to the phishing email for payload testing.",
                    "format": "binary"
                  },
                  "PhishingFileType": {
                    "type": "string",
                    "description": "MIME type or extension identifier of the phishing attachment file."
                  },
                  "IsPhishingFileModified": {
                    "type": "boolean",
                    "description": "Whether the phishing attachment file has been modified since the last save."
                  },
                  "PhishingFileName": {
                    "type": "string",
                    "description": "Original file name of the phishing attachment."
                  },
                  "PhishingTypeId": {
                    "type": "integer",
                    "description": "Phishing type identifier classifying the simulation category.",
                    "format": "int32"
                  },
                  "Prompt": {
                    "type": "string",
                    "description": "AI prompt text used when the template content is AI-generated."
                  },
                  "IsAssistedByAI": {
                    "type": "boolean",
                    "description": "Whether this template was generated or refined with AI assistance."
                  },
                  "IsPlainText": {
                    "type": "boolean",
                    "description": "Whether the template body is plain text instead of HTML."
                  },
                  "ToneResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the writing tone applied to the template (e.g., formal, urgent)."
                  }
                }
              },
              "example": {
                "IsDuplicated": false,
                "Name": "IT Password Reset Notice",
                "Description": "Simulates an IT department password reset notification to harvest credentials",
                "CategoryResourceId": "Ct4Kp8mR7xLn",
                "DifficultyResourceId": "Df3Kp8mR7xLv",
                "LanguageTypeResourceId": "Ln2Kp5mR7vWx",
                "Tags": [
                  "password-reset",
                  "credential-harvesting"
                ],
                "Subject": "Action Required: Your Password Will Expire Soon",
                "FromName": "IT Service Desk",
                "FromAddress": "it-support@example-corp.com",
                "Template": "<html><body><p>Your password will expire in 24 hours. <a href='{{phishing_url}}'>Click here</a> to reset it now.</p></body></html>",
                "IsPhishingFileModified": false,
                "PhishingTypeId": 1,
                "IsAssistedByAI": false,
                "IsPlainText": false
              },
              "encoding": {
                "IsDuplicated": {
                  "style": "form"
                },
                "DuplicatedTemplateResourceId": {
                  "style": "form"
                },
                "Languages": {
                  "style": "form"
                },
                "BarrelPayload.Subject": {
                  "style": "form"
                },
                "BarrelPayload.Template": {
                  "style": "form"
                },
                "BarrelPayload.PhishingFile": {
                  "style": "form"
                },
                "BarrelPayload.PhishingFileType": {
                  "style": "form"
                },
                "BarrelPayload.PhishingFileName": {
                  "style": "form"
                },
                "BarrelPayload.IsPhishingFileModified": {
                  "style": "form"
                },
                "BarrelPayload.AttachmentFiles": {
                  "style": "form"
                },
                "BarrelPayload.AttachmentFilesToRemove": {
                  "style": "form"
                },
                "Name": {
                  "style": "form"
                },
                "Description": {
                  "style": "form"
                },
                "CategoryResourceId": {
                  "style": "form"
                },
                "DifficultyResourceId": {
                  "style": "form"
                },
                "LanguageTypeResourceId": {
                  "style": "form"
                },
                "Tags": {
                  "style": "form"
                },
                "Subject": {
                  "style": "form"
                },
                "FromName": {
                  "style": "form"
                },
                "FromAddress": {
                  "style": "form"
                },
                "CcAddresses": {
                  "style": "form"
                },
                "Template": {
                  "style": "form"
                },
                "AvailableForRequests": {
                  "style": "form"
                },
                "AttachmentFiles": {
                  "style": "form"
                },
                "PhishingFile": {
                  "style": "form"
                },
                "PhishingFileType": {
                  "style": "form"
                },
                "IsPhishingFileModified": {
                  "style": "form"
                },
                "PhishingFileName": {
                  "style": "form"
                },
                "PhishingTypeId": {
                  "style": "form"
                },
                "Prompt": {
                  "style": "form"
                },
                "IsAssistedByAI": {
                  "style": "form"
                },
                "IsPlainText": {
                  "style": "form"
                },
                "ToneResourceId": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/email-templates/{resourceId}": {
      "put": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Updates an existing email template for the quishing simulator, allowing modification of the subject, body, sender information, or attachments.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "CategoryResourceId",
                  "Description",
                  "FromAddress",
                  "FromName",
                  "Name",
                  "Subject",
                  "Template"
                ],
                "type": "object",
                "properties": {
                  "Languages": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.UpdatePsEmailTemplateLanguageDto"
                    },
                    "description": "Localized language variants of the email template to update."
                  },
                  "BarrelPayload.Subject": {
                    "type": "string",
                    "description": "Email subject line for the payload."
                  },
                  "BarrelPayload.Template": {
                    "type": "string",
                    "description": "HTML or plain-text body content of the payload email."
                  },
                  "BarrelPayload.PhishingFile": {
                    "type": "string",
                    "description": "Phishing attachment file for the payload email (tracked download).",
                    "format": "binary"
                  },
                  "BarrelPayload.PhishingFileType": {
                    "type": "string",
                    "description": "File type hint for the phishing file (e.g. \"exe\", \"pdf\")."
                  },
                  "BarrelPayload.PhishingFileName": {
                    "type": "string",
                    "description": "Display name for the phishing file."
                  },
                  "BarrelPayload.IsPhishingFileModified": {
                    "type": "boolean",
                    "description": "Update only: true when the phishing file was changed or removed. Sent with no PhishingFile and an\r\nempty PhishingFileName, it removes the payload's phishing file."
                  },
                  "BarrelPayload.AttachmentFiles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "Embedded attachment files for the payload email (not tracked)."
                  },
                  "BarrelPayload.AttachmentFilesToRemove": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Update only: resource ids of the payload's embedded attachments to remove."
                  },
                  "Name": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Display name of the email template."
                  },
                  "Description": {
                    "type": "string",
                    "description": "Description providing context about the template's purpose and content."
                  },
                  "CategoryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the category this template belongs to."
                  },
                  "DifficultyResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the difficulty level assigned to this template."
                  },
                  "LanguageTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the language type for localization."
                  },
                  "Tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of tag labels for categorizing and searching templates."
                  },
                  "Subject": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Email subject line used in the phishing simulation."
                  },
                  "FromName": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Sender display name shown in the email header."
                  },
                  "FromAddress": {
                    "maxLength": 320,
                    "type": "string",
                    "description": "Sender email address used in the From field."
                  },
                  "CcAddresses": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of CC (carbon copy) email addresses."
                  },
                  "Template": {
                    "maxLength": 10485760,
                    "type": "string",
                    "description": "HTML or plain-text body content of the email template."
                  },
                  "AvailableForRequests": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
                    },
                    "description": "Visibility and sharing rules that control which entities can access this template."
                  },
                  "AttachmentFiles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "Attachment files included with the phishing simulation email."
                  },
                  "PhishingFile": {
                    "type": "string",
                    "description": "Simulated malicious file attached to the phishing email for payload testing.",
                    "format": "binary"
                  },
                  "PhishingFileType": {
                    "type": "string",
                    "description": "MIME type or extension identifier of the phishing attachment file."
                  },
                  "IsPhishingFileModified": {
                    "type": "boolean",
                    "description": "Whether the phishing attachment file has been modified since the last save."
                  },
                  "PhishingFileName": {
                    "type": "string",
                    "description": "Original file name of the phishing attachment."
                  },
                  "PhishingTypeId": {
                    "type": "integer",
                    "description": "Phishing type identifier classifying the simulation category.",
                    "format": "int32"
                  },
                  "Prompt": {
                    "type": "string",
                    "description": "AI prompt text used when the template content is AI-generated."
                  },
                  "IsAssistedByAI": {
                    "type": "boolean",
                    "description": "Whether this template was generated or refined with AI assistance."
                  },
                  "IsPlainText": {
                    "type": "boolean",
                    "description": "Whether the template body is plain text instead of HTML."
                  },
                  "ToneResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the writing tone applied to the template (e.g., formal, urgent)."
                  }
                }
              },
              "example": {
                "Name": "Updated IT Password Reset Notice",
                "Description": "Updated phishing simulation for IT password reset notification",
                "CategoryResourceId": "Ct4Kp8mR7xLn",
                "DifficultyResourceId": "Df3Kp8mR7xLv",
                "LanguageTypeResourceId": "Ln2Kp5mR7vWx",
                "Tags": [
                  "password-reset",
                  "credential-harvesting"
                ],
                "Subject": "Urgent: Your Password Will Expire Soon",
                "FromName": "IT Service Desk",
                "FromAddress": "it-support@example-corp.com",
                "Template": "<html><body><p>Your password will expire in 12 hours. <a href='{{phishing_url}}'>Click here</a> to reset it immediately.</p></body></html>",
                "IsPhishingFileModified": false,
                "PhishingTypeId": 1,
                "IsAssistedByAI": false,
                "IsPlainText": false
              },
              "encoding": {
                "Languages": {
                  "style": "form"
                },
                "BarrelPayload.Subject": {
                  "style": "form"
                },
                "BarrelPayload.Template": {
                  "style": "form"
                },
                "BarrelPayload.PhishingFile": {
                  "style": "form"
                },
                "BarrelPayload.PhishingFileType": {
                  "style": "form"
                },
                "BarrelPayload.PhishingFileName": {
                  "style": "form"
                },
                "BarrelPayload.IsPhishingFileModified": {
                  "style": "form"
                },
                "BarrelPayload.AttachmentFiles": {
                  "style": "form"
                },
                "BarrelPayload.AttachmentFilesToRemove": {
                  "style": "form"
                },
                "Name": {
                  "style": "form"
                },
                "Description": {
                  "style": "form"
                },
                "CategoryResourceId": {
                  "style": "form"
                },
                "DifficultyResourceId": {
                  "style": "form"
                },
                "LanguageTypeResourceId": {
                  "style": "form"
                },
                "Tags": {
                  "style": "form"
                },
                "Subject": {
                  "style": "form"
                },
                "FromName": {
                  "style": "form"
                },
                "FromAddress": {
                  "style": "form"
                },
                "CcAddresses": {
                  "style": "form"
                },
                "Template": {
                  "style": "form"
                },
                "AvailableForRequests": {
                  "style": "form"
                },
                "AttachmentFiles": {
                  "style": "form"
                },
                "PhishingFile": {
                  "style": "form"
                },
                "PhishingFileType": {
                  "style": "form"
                },
                "IsPhishingFileModified": {
                  "style": "form"
                },
                "PhishingFileName": {
                  "style": "form"
                },
                "PhishingTypeId": {
                  "style": "form"
                },
                "Prompt": {
                  "style": "form"
                },
                "IsAssistedByAI": {
                  "style": "form"
                },
                "IsPlainText": {
                  "style": "form"
                },
                "ToneResourceId": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the full details of an existing email template for the quishing simulator by its resource ID, including subject, body HTML, sender information, and attachment metadata.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.PsEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Deletes an existing email template from the quishing simulator by its resource ID, removing the template and any associated attachments.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/email-templates/search": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of email templates for the quishing simulator, filtered to QR code phishing type, with support for sorting and pagination.",
        "requestBody": {
          "description": "Search criteria including pagination, sort order, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.Search.PsEmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"IsPlainText","operator":"eq","value":"false"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"phishingTypeId":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.Search.PsEmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"IsPlainText","operator":"eq","value":"false"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"phishingTypeId":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.Search.PsEmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"IsPlainText","operator":"eq","value":"false"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"phishingTypeId":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.Search.PsEmailTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"IsPlainText","operator":"eq","value":"false"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"phishingTypeId":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.SearchPsEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/email-templates/search/export": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Exports the filtered list of quishing simulator email templates as a downloadable file in the specified format (e.g., Excel, CSV).",
        "requestBody": {
          "description": "Export criteria including pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/email-templates/merge-tags": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the available merge tags for quishing email templates, providing dynamic placeholders (e.g., recipient name, company) that can be inserted into the email body.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/email-templates/download-attachment/{resourceId}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Downloads the attachment file associated with a quishing email template, returning the file with its original MIME type and filename.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template whose attachment to download.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/summary/{resourceId}/{instanceGroup}/email-templates/{templateResourceId}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the email template used in a specific quishing campaign job instance, allowing review of the template as it was configured at the time of the campaign run.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "templateResourceId",
            "in": "path",
            "description": "The unique resource identifier of the email template to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.PsEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-scenario/form-details": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the form details required to create or edit a quishing scenario, including available email templates, landing page templates, and configuration options.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-scenario": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Creates a new quishing scenario for the company, combining an email template with a landing page template and QR code configuration to define a complete QR phishing attack simulation.",
        "requestBody": {
          "description": "The quishing scenario creation payload including email template, landing page, and QR code settings.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreateQuishingScenarioRequest"
              },
              "example": {"templateResourceId":"Qt4Rm7vT3nKp","templateType":"Email","name":"QR Code Wi-Fi Phishing Scenario","description":"QR code phishing scenario simulating free Wi-Fi access","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["qr-code","wifi"],"roleResourceIds":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreateQuishingScenarioRequest"
              },
              "example": {"templateResourceId":"Qt4Rm7vT3nKp","templateType":"Email","name":"QR Code Wi-Fi Phishing Scenario","description":"QR code phishing scenario simulating free Wi-Fi access","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["qr-code","wifi"],"roleResourceIds":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreateQuishingScenarioRequest"
              },
              "example": {"templateResourceId":"Qt4Rm7vT3nKp","templateType":"Email","name":"QR Code Wi-Fi Phishing Scenario","description":"QR code phishing scenario simulating free Wi-Fi access","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["qr-code","wifi"],"roleResourceIds":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreateQuishingScenarioRequest"
              },
              "example": {"templateResourceId":"Qt4Rm7vT3nKp","templateType":"Email","name":"QR Code Wi-Fi Phishing Scenario","description":"QR code phishing scenario simulating free Wi-Fi access","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["qr-code","wifi"],"roleResourceIds":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-scenario/{resourceId}": {
      "put": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Updates an existing quishing scenario for the company, allowing modification of the email template, landing page, or QR code configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing scenario to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated quishing scenario payload with modified fields.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdateQuishingScenarioRequest"
              },
              "example": {"templateResourceId":"Qt4Rm7vT3nKp","templateType":"Email","mfaSenderNumberResourceId":"Mf5Tp3kW8xNv","name":"Updated QR Code Phishing Scenario","description":"Updated QR code phishing scenario","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["qr-code","wifi"],"roleResourceIds":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdateQuishingScenarioRequest"
              },
              "example": {"templateResourceId":"Qt4Rm7vT3nKp","templateType":"Email","mfaSenderNumberResourceId":"Mf5Tp3kW8xNv","name":"Updated QR Code Phishing Scenario","description":"Updated QR code phishing scenario","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["qr-code","wifi"],"roleResourceIds":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdateQuishingScenarioRequest"
              },
              "example": {"templateResourceId":"Qt4Rm7vT3nKp","templateType":"Email","mfaSenderNumberResourceId":"Mf5Tp3kW8xNv","name":"Updated QR Code Phishing Scenario","description":"Updated QR code phishing scenario","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["qr-code","wifi"],"roleResourceIds":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdateQuishingScenarioRequest"
              },
              "example": {"templateResourceId":"Qt4Rm7vT3nKp","templateType":"Email","mfaSenderNumberResourceId":"Mf5Tp3kW8xNv","name":"Updated QR Code Phishing Scenario","description":"Updated QR code phishing scenario","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["qr-code","wifi"],"roleResourceIds":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Deletes a quishing scenario by its resource ID, removing the scenario and its template associations.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing scenario to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the full details of an existing quishing scenario by its resource ID, including email template, landing page template, and QR code configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing scenario to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingScenario.QuishingScenarioDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-scenario/bulk-delete": {
      "delete": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Deletes multiple quishing scenarios in a single bulk operation based on the provided list of scenario identifiers.",
        "requestBody": {
          "description": "The bulk delete payload containing the list of quishing scenario items to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-scenario/search": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of quishing scenarios, with support for filtering by template types, sorting, and pagination.",
        "requestBody": {
          "description": "Search criteria including pagination, sort order, template type filters, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingScenario.Dto.QuishingScenarioSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-scenario/search/export": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Exports the filtered list of quishing scenarios as a downloadable file in the specified format (e.g., Excel, CSV), with support for template type filtering.",
        "requestBody": {
          "description": "Export criteria including pagination, filters, template types, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-scenario/preview/{templateType}/{resourceId}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Generates a preview of a quishing scenario by its resource ID and template type, showing how the QR code email and landing page will appear to target users.",
        "parameters": [
          {
            "name": "templateType",
            "in": "path",
            "description": "The type of quishing template to preview (e.g., Email, PDF).",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Enum.QuishingTemplateSearchTypeEnum"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing scenario to preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.QuishingScenarioPreviewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-scenario/print-preview/{resourceId}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Generates a printable preview of a quishing scenario, returning the rendered QR code content as a downloadable file.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing scenario to generate a print preview for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-scenario/preview/{templateType}/{templateResourceId}/{landingPageTemplateResourceId}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Generates a preview of a quishing scenario by combining a specific quishing template and landing page template, showing how they will render together in a campaign.",
        "parameters": [
          {
            "name": "templateType",
            "in": "path",
            "description": "The type of quishing template to preview (e.g., Email, PDF).",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Enum.QuishingTemplateSearchTypeEnum"
            }
          },
          {
            "name": "templateResourceId",
            "in": "path",
            "description": "The resource ID of the quishing template to use in the preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "landingPageTemplateResourceId",
            "in": "path",
            "description": "The resource ID of the landing page template to use in the preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.QuishingScenarioPreviewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-scenario/mfa-phone-number": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the list of available MFA phone numbers for quishing scenarios, used to configure multi-factor authentication bypass simulations in QR phishing campaigns.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmsPhoneNumberDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-templates": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Creates a new quishing template (QR code template) for the quishing simulator, defining the QR code layout, design, and embedded content used in campaigns.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "CategoryResourceId",
                  "Description",
                  "Name",
                  "Template",
                  "Type"
                ],
                "type": "object",
                "properties": {
                  "IsDuplicated": {
                    "type": "boolean",
                    "description": "Indicates whether this template was duplicated from an existing one."
                  },
                  "DuplicatedTemplateResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the original template when duplicating."
                  },
                  "Name": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Template display name."
                  },
                  "Description": {
                    "type": "string",
                    "description": "Description of the template's purpose and content."
                  },
                  "CategoryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the phishing scenario category."
                  },
                  "DifficultyResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the template difficulty level."
                  },
                  "LanguageTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the template language."
                  },
                  "Tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Searchable tags associated with the template."
                  },
                  "Type": {
                    "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Enum.QuishingTemplateTypeEnum"
                  },
                  "Template": {
                    "maxLength": 10485760,
                    "type": "string",
                    "description": "HTML body content of the quishing template."
                  },
                  "AvailableForRequests": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
                    },
                    "description": "Visibility rules controlling which companies or groups can use this template."
                  }
                }
              },
              "example": {
                "IsDuplicated": false,
                "Name": "Corporate Wi-Fi QR Code",
                "Description": "Simulates a QR code leading to a fake corporate Wi-Fi login page",
                "CategoryResourceId": "Ct4Kp8mR7xLn",
                "DifficultyResourceId": "Df3Kp8mR7xLv",
                "LanguageTypeResourceId": "Ln2Kp5mR7vWx",
                "Tags": [
                  "qr-code",
                  "wifi-phishing"
                ],
                "Type": 1,
                "Template": "<html><body><h1>Connect to Corporate Wi-Fi</h1><p>Scan the QR code below to connect.</p></body></html>"
              },
              "encoding": {
                "IsDuplicated": {
                  "style": "form"
                },
                "DuplicatedTemplateResourceId": {
                  "style": "form"
                },
                "Name": {
                  "style": "form"
                },
                "Description": {
                  "style": "form"
                },
                "CategoryResourceId": {
                  "style": "form"
                },
                "DifficultyResourceId": {
                  "style": "form"
                },
                "LanguageTypeResourceId": {
                  "style": "form"
                },
                "Tags": {
                  "style": "form"
                },
                "Type": {
                  "style": "form"
                },
                "Template": {
                  "style": "form"
                },
                "AvailableForRequests": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-templates/{resourceId}": {
      "put": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Updates an existing quishing template for the quishing simulator, allowing modification of the QR code design, layout, or embedded content.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing template to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "CategoryResourceId",
                  "Description",
                  "Name",
                  "Template",
                  "Type"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "maxLength": 64,
                    "type": "string",
                    "description": "Template display name."
                  },
                  "Description": {
                    "type": "string",
                    "description": "Description of the template's purpose and content."
                  },
                  "CategoryResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the phishing scenario category."
                  },
                  "DifficultyResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the template difficulty level."
                  },
                  "LanguageTypeResourceId": {
                    "type": "string",
                    "description": "Resource identifier of the template language."
                  },
                  "Tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Searchable tags associated with the template."
                  },
                  "Type": {
                    "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Enum.QuishingTemplateTypeEnum"
                  },
                  "Template": {
                    "maxLength": 10485760,
                    "type": "string",
                    "description": "HTML body content of the quishing template."
                  },
                  "AvailableForRequests": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
                    },
                    "description": "Visibility rules controlling which companies or groups can use this template."
                  }
                }
              },
              "example": {
                "Name": "Updated Corporate Wi-Fi QR Code",
                "Description": "Updated QR code simulation for corporate Wi-Fi login",
                "CategoryResourceId": "Ct4Kp8mR7xLn",
                "DifficultyResourceId": "Df3Kp8mR7xLv",
                "LanguageTypeResourceId": "Ln2Kp5mR7vWx",
                "Tags": [
                  "qr-code",
                  "wifi-phishing"
                ],
                "Type": 1,
                "Template": "<html><body><h1>Connect to Corporate Wi-Fi</h1><p>Scan the QR code to join the secure network.</p></body></html>"
              },
              "encoding": {
                "Name": {
                  "style": "form"
                },
                "Description": {
                  "style": "form"
                },
                "CategoryResourceId": {
                  "style": "form"
                },
                "DifficultyResourceId": {
                  "style": "form"
                },
                "LanguageTypeResourceId": {
                  "style": "form"
                },
                "Tags": {
                  "style": "form"
                },
                "Type": {
                  "style": "form"
                },
                "Template": {
                  "style": "form"
                },
                "AvailableForRequests": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the full details of an existing quishing template by its resource ID, including QR code design, layout settings, and embedded content configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing template to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingTemplate.Dto.QuishingTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Deletes an existing quishing template from the quishing simulator by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing template to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-templates/bulk-delete": {
      "delete": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Deletes multiple quishing templates in a single bulk operation based on the provided list of template identifiers.",
        "requestBody": {
          "description": "The bulk delete payload containing the list of quishing template items to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-templates/search": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Searches and returns a paginated list of quishing templates for the quishing simulator, with support for filtering by template types, sorting, and pagination.",
        "requestBody": {
          "description": "Search criteria including pagination, sort order, template type filters, and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.QuishingTemplate.Search.QuishingTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":""}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"CategoryResourceId","operator":"eq","value":""}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":["1","2"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.QuishingTemplate.Search.QuishingTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":""}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"CategoryResourceId","operator":"eq","value":""}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":["1","2"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.QuishingTemplate.Search.QuishingTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":""}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"CategoryResourceId","operator":"eq","value":""}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":["1","2"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.QuishingTemplate.Search.QuishingTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":""}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"CategoryResourceId","operator":"eq","value":""}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":["1","2"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingTemplate.Dto.SearchQuishingTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-templates/search/export": {
      "post": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Exports the filtered list of quishing templates as a downloadable file in the specified format (e.g., Excel, CSV), with support for template type filtering.",
        "requestBody": {
          "description": "Export criteria including pagination, filters, template types, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-templates/preview/{resourceId}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Generates a PDF preview of a quishing template, rendering the QR code layout and design as a downloadable document.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing template to preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-templates/merge-tags/{templateType}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the available merge tags for a specific quishing template type, providing dynamic placeholders that can be inserted into the template content.",
        "parameters": [
          {
            "name": "templateType",
            "in": "path",
            "description": "The quishing template type to retrieve merge tags for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Enum.QuishingTemplateTypeEnum"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/quishing-simulator/quishing-campaign-job-report/summary/{resourceId}/{instanceGroup}/quishing-templates/{templateResourceId}": {
      "get": {
        "tags": [
          "QR Phishing (Quishing)"
        ],
        "summary": "Retrieves the quishing template used in a specific quishing campaign job instance, allowing review of the QR code template as it was configured at the time of the campaign run.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number of the campaign job.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "templateResourceId",
            "in": "path",
            "description": "The unique resource identifier of the quishing template to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingTemplate.Dto.QuishingTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/dashboard/widgets": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Creates or saves the user's preferred dashboard widget layout, defining the order and visibility of widgets on the main dashboard.",
        "requestBody": {
          "description": "Widget ordering configuration including widget identifiers and their display positions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DashboardWidgetsOrdering.CreateDashboardWidgetsOrderingRequest"
              },
              "example": {"settings":[{"title":"Phishing Campaign Summary","key":"phishing_summary","x":0,"y":0,"w":6,"h":4},{"title":"Awareness Training Progress","key":"training_progress","x":6,"y":0,"w":6,"h":4}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DashboardWidgetsOrdering.CreateDashboardWidgetsOrderingRequest"
              },
              "example": {"settings":[{"title":"Phishing Campaign Summary","key":"phishing_summary","x":0,"y":0,"w":6,"h":4},{"title":"Awareness Training Progress","key":"training_progress","x":6,"y":0,"w":6,"h":4}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DashboardWidgetsOrdering.CreateDashboardWidgetsOrderingRequest"
              },
              "example": {"settings":[{"title":"Phishing Campaign Summary","key":"phishing_summary","x":0,"y":0,"w":6,"h":4},{"title":"Awareness Training Progress","key":"training_progress","x":6,"y":0,"w":6,"h":4}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DashboardWidgetsOrdering.CreateDashboardWidgetsOrderingRequest"
              },
              "example": {"settings":[{"title":"Phishing Campaign Summary","key":"phishing_summary","x":0,"y":0,"w":6,"h":4},{"title":"Awareness Training Progress","key":"training_progress","x":6,"y":0,"w":6,"h":4}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Dashboard.Dto.DashboardWidgetsOrderingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the current user's saved dashboard widget ordering configuration, defining which widgets are displayed and in what order.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Dashboard.Dto.DashboardWidgetsOrderingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/dashboard/reported-email-trends": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves reported email trend data over time, showing the volume of user-reported suspicious emails grouped by date for dashboard visualization.",
        "requestBody": {
          "description": "Trend query parameters including date range and optional filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Dashboard.GetReportedEmailTrendsRequest"
              },
              "example": {"StartDate":"2026-01-01 00:00:00","EndDate":"2026-03-31 23:59:59"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Dashboard.GetReportedEmailTrendsRequest"
              },
              "example": {"StartDate":"2026-01-01 00:00:00","EndDate":"2026-03-31 23:59:59"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Dashboard.GetReportedEmailTrendsRequest"
              },
              "example": {"StartDate":"2026-01-01 00:00:00","EndDate":"2026-03-31 23:59:59"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Dashboard.GetReportedEmailTrendsRequest"
              },
              "example": {"StartDate":"2026-01-01 00:00:00","EndDate":"2026-03-31 23:59:59"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Search.NotifiedEmailTrendSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/dashboard/reporters": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the top 5 users ranked by email reporting reliability, highlighting the most accurate reporters of suspicious emails within the organization.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Dto.TopReportersDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/dashboard/summary": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves aggregated summary data for all enabled dashboard widgets, including counts and key metrics across phishing campaigns, awareness training, and incident response modules.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.DistributedService.Rest.Models.Dashboard.SummaryDataResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/executive-report/metrics": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves all available executive report metric widgets, including their configuration and data. These metrics define the building blocks used to compose executive reports.",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.ExecutiveReport.Dto.GetExecutiveReportWidgetsServiceResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/executive-report": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Creates a new executive report with the specified widgets, filters, and optional scheduling. If scheduling is provided, a Hangfire recurring job is registered for automated delivery.",
        "requestBody": {
          "description": "Executive report creation details including title, selected widgets, date range, recipients, and optional scheduling configuration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.CreateExecutiveReportServiceRequest"
              },
              "example": {"executiveReport":{"name":"Q1 2026 Security Report","companyName":"Acme Corp","description":"Quarterly executive security overview","dateCreated":"0001-01-01 00:00:00","datePeriod":"Last3Months","startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59"},"scheduling":{"name":"Quarterly Report Schedule","frequency":"Quarterly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"targetGroupResourceIds":[],"managerEmails":[]},"widgetLayouts":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.CreateExecutiveReportServiceRequest"
              },
              "example": {"executiveReport":{"name":"Q1 2026 Security Report","companyName":"Acme Corp","description":"Quarterly executive security overview","dateCreated":"0001-01-01 00:00:00","datePeriod":"Last3Months","startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59"},"scheduling":{"name":"Quarterly Report Schedule","frequency":"Quarterly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"targetGroupResourceIds":[],"managerEmails":[]},"widgetLayouts":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.CreateExecutiveReportServiceRequest"
              },
              "example": {"executiveReport":{"name":"Q1 2026 Security Report","companyName":"Acme Corp","description":"Quarterly executive security overview","dateCreated":"0001-01-01 00:00:00","datePeriod":"Last3Months","startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59"},"scheduling":{"name":"Quarterly Report Schedule","frequency":"Quarterly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"targetGroupResourceIds":[],"managerEmails":[]},"widgetLayouts":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.CreateExecutiveReportServiceRequest"
              },
              "example": {"executiveReport":{"name":"Q1 2026 Security Report","companyName":"Acme Corp","description":"Quarterly executive security overview","dateCreated":"0001-01-01 00:00:00","datePeriod":"Last3Months","startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59"},"scheduling":{"name":"Quarterly Report Schedule","frequency":"Quarterly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"targetGroupResourceIds":[],"managerEmails":[]},"widgetLayouts":[]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/executive-report/{resourceId}": {
      "put": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Updates an existing executive report's configuration, including widgets, filters, recipients, and scheduling. Re-registers the Hangfire recurring job if scheduling is present.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Unique resource identifier of the executive report to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Updated executive report details including title, widgets, date range, recipients, and optional scheduling.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.UpdateExecutiveReportServiceRequest"
              },
              "example": {"executiveReportResourceId":"Er5Kp2mR7xLv","executiveReport":{"name":"Q1 2026 Security Report","companyName":"Acme Corp","description":"Quarterly executive security overview","dateCreated":"0001-01-01 00:00:00","datePeriod":"Last3Months","startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59"},"scheduling":{"name":"Quarterly Report Schedule","frequency":"Quarterly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"targetGroupResourceIds":[],"managerEmails":[]},"widgetLayouts":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.UpdateExecutiveReportServiceRequest"
              },
              "example": {"executiveReportResourceId":"Er5Kp2mR7xLv","executiveReport":{"name":"Q1 2026 Security Report","companyName":"Acme Corp","description":"Quarterly executive security overview","dateCreated":"0001-01-01 00:00:00","datePeriod":"Last3Months","startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59"},"scheduling":{"name":"Quarterly Report Schedule","frequency":"Quarterly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"targetGroupResourceIds":[],"managerEmails":[]},"widgetLayouts":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.UpdateExecutiveReportServiceRequest"
              },
              "example": {"executiveReportResourceId":"Er5Kp2mR7xLv","executiveReport":{"name":"Q1 2026 Security Report","companyName":"Acme Corp","description":"Quarterly executive security overview","dateCreated":"0001-01-01 00:00:00","datePeriod":"Last3Months","startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59"},"scheduling":{"name":"Quarterly Report Schedule","frequency":"Quarterly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"targetGroupResourceIds":[],"managerEmails":[]},"widgetLayouts":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.UpdateExecutiveReportServiceRequest"
              },
              "example": {"executiveReportResourceId":"Er5Kp2mR7xLv","executiveReport":{"name":"Q1 2026 Security Report","companyName":"Acme Corp","description":"Quarterly executive security overview","dateCreated":"0001-01-01 00:00:00","datePeriod":"Last3Months","startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59"},"scheduling":{"name":"Quarterly Report Schedule","frequency":"Quarterly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"targetGroupResourceIds":[],"managerEmails":[]},"widgetLayouts":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Deletes an executive report and removes its associated Hangfire recurring job if one exists.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Unique resource identifier of the executive report to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves a single executive report by its resource identifier, including all widget selections, filter criteria, scheduling, and recipient details.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Unique resource identifier of the executive report to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/executive-report/search": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Searches executive reports with pagination, sorting, and filtering. Returns a list of report summaries matching the provided criteria.",
        "requestBody": {
          "description": "Search parameters including pagination settings and optional filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.SearchExecutiveReportRequest"
              },
              "example": {"name":""}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.SearchExecutiveReportRequest"
              },
              "example": {"name":""}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.SearchExecutiveReportRequest"
              },
              "example": {"name":""}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.SearchExecutiveReportRequest"
              },
              "example": {"name":""}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/executive-report/get-widget-datas": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves computed data for a set of executive report widgets based on the specified parameters, including date ranges and filter criteria. Used to populate widget visualizations in the report builder.",
        "requestBody": {
          "description": "Widget data request parameters including widget identifiers, date range, and filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.GetWidgetDataServiceRequestParameters"
              },
              "example": {"widgetIds":["widget-phishing-overview","widget-training-progress"],"datePeriod":"LastMonth","startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.GetWidgetDataServiceRequestParameters"
              },
              "example": {"widgetIds":["widget-phishing-overview","widget-training-progress"],"datePeriod":"LastMonth","startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.GetWidgetDataServiceRequestParameters"
              },
              "example": {"widgetIds":["widget-phishing-overview","widget-training-progress"],"datePeriod":"LastMonth","startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.GetWidgetDataServiceRequestParameters"
              },
              "example": {"widgetIds":["widget-phishing-overview","widget-training-progress"],"datePeriod":"LastMonth","startDate":"2026-01-01 00:00:00","endDate":"2026-03-31 23:59:59"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportWidgetResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/executive-report/{resourceId}/logo": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the logo image associated with a specific executive report. Returns the image as a PNG file for use in report headers and branding.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Unique resource identifier of the executive report whose logo is requested.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/executive-report/{resourceId}/upload": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Uploads a generated executive report PDF to cloud storage (S3) for archival and distribution. The PDF is associated with the specified executive report.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Unique resource identifier of the executive report to attach the PDF to.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "ExecutiveReportPdf": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "ExecutiveReportPdf": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/is/dashboard/summary": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves summary statistics for the Incident Sharing dashboard, including aggregated counts of shared incidents, threat types, and response metrics filtered by the specified criteria.",
        "requestBody": {
          "description": "Dashboard filter criteria to scope the summary data.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISDashboardRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISDashboardRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISDashboardRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISDashboardRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardSummaryDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/is/dashboard/search-log": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Searches the Incident Sharing dashboard activity log with pagination, sorting, and filtering. Returns a paged list of individual incident sharing events.",
        "requestBody": {
          "description": "Search parameters including pagination settings (page number, page size, sort order) and optional filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISLogSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISLogSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISLogSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISLogSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardLogView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/is/dashboard/search-log/export": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Exports the Incident Sharing dashboard log as a downloadable file (e.g., CSV or Excel) based on the specified export type, pagination, and filter criteria.",
        "requestBody": {
          "description": "Export parameters including pagination, filter criteria, export format, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/is/dashboard/search-stats": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Searches the Incident Sharing dashboard statistics with pagination, sorting, and dual-filter support. Returns aggregated stats per organization or threat type.",
        "requestBody": {
          "description": "Search parameters including pagination, primary filter, and an additional summary filter for cross-referencing.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISStatSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"filterSummary":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISStatSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"filterSummary":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISStatSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"filterSummary":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISStatSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"filterSummary":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardStatView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/is/dashboard/search-stats/export": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Exports the Incident Sharing dashboard statistics as a downloadable file (e.g., CSV or Excel), supporting dual-filter criteria for both primary and summary-level filtering.",
        "requestBody": {
          "description": "Export parameters including pagination, primary and summary filters, export format, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportMultiFilterRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"filterSummary":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportMultiFilterRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"filterSummary":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportMultiFilterRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"filterSummary":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportMultiFilterRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"filterSummary":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pbi/reports/{companyResourceId}": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves all Power BI reports available to the specified company. Returns report metadata such as name, type, and embed identifiers.",
        "parameters": [
          {
            "name": "companyResourceId",
            "in": "path",
            "description": "Unique resource identifier of the company whose Power BI reports are requested.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.PBIReport.Dto.PBIReportDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/pbi/reports/{companyResourceId}/{resourceId}": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the Power BI embed parameters (embed URL, token, and configuration) for a specific report. Includes sub-company data when the caller has the appropriate permission.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Unique resource identifier of the Power BI report to embed.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyResourceId",
            "in": "path",
            "description": "Unique resource identifier of the company that owns the report.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PBIReport.Dto.PBIEmbedParamsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/report-scheduling/{resourceId}": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves a single report scheduling configuration by its resource identifier, including schedule details, recipients, and report type settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Unique resource identifier of the report scheduling to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.ReportScheduling.Models.ReportSchedulingModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Updates an existing report scheduling configuration and re-registers the Hangfire recurring job to reflect the new schedule and parameters.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Unique resource identifier of the report scheduling to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Updated scheduling details including report type, frequency, recipients, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.UpdateReportSchedulingServiceRequest"
              },
              "example": {"reportType":"ExecutiveReport","reportResourceId":"Er5Kp2mR7xLv","name":"Weekly Phishing Report","frequency":"Weekly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"managerEmails":[],"targetGroupResourceIds":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.UpdateReportSchedulingServiceRequest"
              },
              "example": {"reportType":"ExecutiveReport","reportResourceId":"Er5Kp2mR7xLv","name":"Weekly Phishing Report","frequency":"Weekly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"managerEmails":[],"targetGroupResourceIds":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.UpdateReportSchedulingServiceRequest"
              },
              "example": {"reportType":"ExecutiveReport","reportResourceId":"Er5Kp2mR7xLv","name":"Weekly Phishing Report","frequency":"Weekly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"managerEmails":[],"targetGroupResourceIds":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.UpdateReportSchedulingServiceRequest"
              },
              "example": {"reportType":"ExecutiveReport","reportResourceId":"Er5Kp2mR7xLv","name":"Weekly Phishing Report","frequency":"Weekly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"managerEmails":[],"targetGroupResourceIds":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/report-scheduling/target-groups": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the list of target groups available for report scheduling. These groups define which user populations a scheduled report can cover.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.ReportScheduling.Dto.TargetGroup, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/report-scheduling/managers": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the list of managers eligible to receive scheduled reports. Used to populate the recipient selector when configuring report delivery.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.ReportScheduling.Dto.ManagerDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/report-scheduling": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Creates a new report scheduling configuration and registers the corresponding recurring Hangfire job for automated report delivery.",
        "requestBody": {
          "description": "Report scheduling details including report type, frequency, recipients, and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.CreateReportSchedulingServiceRequest"
              },
              "example": {"reportType":"ExecutiveReport","reportResourceId":"Er5Kp2mR7xLv","name":"Weekly Phishing Report","frequency":"Weekly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"managerEmails":[],"targetGroupResourceIds":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.CreateReportSchedulingServiceRequest"
              },
              "example": {"reportType":"ExecutiveReport","reportResourceId":"Er5Kp2mR7xLv","name":"Weekly Phishing Report","frequency":"Weekly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"managerEmails":[],"targetGroupResourceIds":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.CreateReportSchedulingServiceRequest"
              },
              "example": {"reportType":"ExecutiveReport","reportResourceId":"Er5Kp2mR7xLv","name":"Weekly Phishing Report","frequency":"Weekly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"managerEmails":[],"targetGroupResourceIds":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.CreateReportSchedulingServiceRequest"
              },
              "example": {"reportType":"ExecutiveReport","reportResourceId":"Er5Kp2mR7xLv","name":"Weekly Phishing Report","frequency":"Weekly","schedule":"2026-04-01 09:00:00","scheduledDateTimeZoneId":"UTC","isRegionAwareTimeZone":false,"emailAddresses":["admin@example.com"],"managerEmails":[],"targetGroupResourceIds":[]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/report-scheduling/{resourceId}/status/{statusId}": {
      "put": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Updates the active/inactive status of a report scheduling and adjusts the Hangfire recurring job accordingly.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Unique resource identifier of the report scheduling whose status is being changed.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusId",
            "in": "path",
            "description": "New status identifier (e.g., active or inactive).",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/report-scheduling/{resourceId}/{reportType}": {
      "delete": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Deletes a report scheduling configuration and removes its associated Hangfire recurring job so no further reports are generated.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "Unique resource identifier of the report scheduling to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reportType",
            "in": "path",
            "description": "The report type used to scope the deletion.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.ReportType"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/report-scheduling/search": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Searches report scheduling configurations with pagination, sorting, and filtering. Returns a paged list of scheduling summaries.",
        "requestBody": {
          "description": "Search parameters including pagination settings (page number, page size, sort order) and optional filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.SearchReportSchedulingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":5,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.SearchReportSchedulingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":5,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.SearchReportSchedulingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":5,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.SearchReportSchedulingRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":5,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.ReportScheduling.Models.SearchReportSchedulingView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/report-scheduling/search/export": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Exports the report scheduling list as a downloadable file (e.g., CSV or Excel) based on the specified export type, pagination, and filter criteria.",
        "requestBody": {
          "description": "Export parameters including pagination, filter criteria, export format, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/sbm-behaviour/nudges": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Queues a behaviour nudge to one target user, rendered from the company's template and citing behaviour events already recorded for that person.",
        "requestBody": {
          "description": "Who to nudge, which template to use, which behaviour events the message is about, and an idempotency key.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmBehaviourNudge.SendBehaviourNudgeRequest"
              },
              "example": {"targetUserResourceId":"Cp4Wn8mT2xRv","channel":"Email","templateKey":"BehaviourCoaching","eventIds":[-25729710,4705],"agentMessage":"You clicked a link in a simulated phishing email last week. A short refresher is on the way.","requestKey":"ai-run-7f3a91c4","dryRun":false,"previewHash":"3F8A0C9E5B7D21446A0E9C3B5D7F1A2C4E6B8D0F1A3C5E7B9D1F3A5C7E9B1D3F"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmBehaviourNudge.SendBehaviourNudgeRequest"
              },
              "example": {"targetUserResourceId":"Cp4Wn8mT2xRv","channel":"Email","templateKey":"BehaviourCoaching","eventIds":[-25729710,4705],"agentMessage":"You clicked a link in a simulated phishing email last week. A short refresher is on the way.","requestKey":"ai-run-7f3a91c4","dryRun":false,"previewHash":"3F8A0C9E5B7D21446A0E9C3B5D7F1A2C4E6B8D0F1A3C5E7B9D1F3A5C7E9B1D3F"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmBehaviourNudge.SendBehaviourNudgeRequest"
              },
              "example": {"targetUserResourceId":"Cp4Wn8mT2xRv","channel":"Email","templateKey":"BehaviourCoaching","eventIds":[-25729710,4705],"agentMessage":"You clicked a link in a simulated phishing email last week. A short refresher is on the way.","requestKey":"ai-run-7f3a91c4","dryRun":false,"previewHash":"3F8A0C9E5B7D21446A0E9C3B5D7F1A2C4E6B8D0F1A3C5E7B9D1F3A5C7E9B1D3F"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmBehaviourNudge.SendBehaviourNudgeRequest"
              },
              "example": {"targetUserResourceId":"Cp4Wn8mT2xRv","channel":"Email","templateKey":"BehaviourCoaching","eventIds":[-25729710,4705],"agentMessage":"You clicked a link in a simulated phishing email last week. A short refresher is on the way.","requestKey":"ai-run-7f3a91c4","dryRun":false,"previewHash":"3F8A0C9E5B7D21446A0E9C3B5D7F1A2C4E6B8D0F1A3C5E7B9D1F3A5C7E9B1D3F"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/sbm-behaviour/nudges/eligibility": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Reports whether a target user can be nudged right now, and when the cooldown expires if one is running.",
        "parameters": [
          {
            "name": "targetUserResourceId",
            "in": "query",
            "description": "The unique resource identifier of the target user to check.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channel",
            "in": "query",
            "description": "Optional. 1 for email, 2 for Teams. Defaults to email. Asking about Teams also reports a\r\ncompany with no Teams integration and a person the directory does not know.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/sbm-dashboard/widgets": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Saves the current user's arrangement of the Secure Behaviour Dashboard's widgets, replacing any arrangement previously stored for them.",
        "requestBody": {
          "description": "The widgets on the dashboard with the grid position each was left in.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmDashboardWidgetsOrdering.CreateSbmDashboardWidgetsOrderingRequest"
              },
              "example": {"settings":[{"title":"Users at Risk","key":"sbmUsers","x":0,"y":0,"w":6,"h":8},{"title":"Behaviours","key":"sbmBehaviours","x":6,"y":0,"w":6,"h":8},{"title":"Departments","key":"sbmDepartments","x":0,"y":8,"w":6,"h":8},{"title":"Severity Distribution","key":"sbmSeverityDistribution","x":6,"y":8,"w":3,"h":8},{"title":"Integration Health","key":"sbmIntegrationHealth","x":9,"y":8,"w":3,"h":8}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmDashboardWidgetsOrdering.CreateSbmDashboardWidgetsOrderingRequest"
              },
              "example": {"settings":[{"title":"Users at Risk","key":"sbmUsers","x":0,"y":0,"w":6,"h":8},{"title":"Behaviours","key":"sbmBehaviours","x":6,"y":0,"w":6,"h":8},{"title":"Departments","key":"sbmDepartments","x":0,"y":8,"w":6,"h":8},{"title":"Severity Distribution","key":"sbmSeverityDistribution","x":6,"y":8,"w":3,"h":8},{"title":"Integration Health","key":"sbmIntegrationHealth","x":9,"y":8,"w":3,"h":8}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmDashboardWidgetsOrdering.CreateSbmDashboardWidgetsOrderingRequest"
              },
              "example": {"settings":[{"title":"Users at Risk","key":"sbmUsers","x":0,"y":0,"w":6,"h":8},{"title":"Behaviours","key":"sbmBehaviours","x":6,"y":0,"w":6,"h":8},{"title":"Departments","key":"sbmDepartments","x":0,"y":8,"w":6,"h":8},{"title":"Severity Distribution","key":"sbmSeverityDistribution","x":6,"y":8,"w":3,"h":8},{"title":"Integration Health","key":"sbmIntegrationHealth","x":9,"y":8,"w":3,"h":8}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SbmDashboardWidgetsOrdering.CreateSbmDashboardWidgetsOrderingRequest"
              },
              "example": {"settings":[{"title":"Users at Risk","key":"sbmUsers","x":0,"y":0,"w":6,"h":8},{"title":"Behaviours","key":"sbmBehaviours","x":6,"y":0,"w":6,"h":8},{"title":"Departments","key":"sbmDepartments","x":0,"y":8,"w":6,"h":8},{"title":"Severity Distribution","key":"sbmSeverityDistribution","x":6,"y":8,"w":3,"h":8},{"title":"Integration Health","key":"sbmIntegrationHealth","x":9,"y":8,"w":3,"h":8}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the current user's saved arrangement of the Secure Behaviour Dashboard's widgets.",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/securitygrowthdashboard/top-performance": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the top 3 performers from last month's gamification leaderboard. If the current user is not in the top 3, their ranking is appended to the result for comparison.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Object, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/securitygrowthdashboard/top-department-performance": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the top 3 departments ranked by average performance over the last month.\r\nIf the current user's department is not in the top 3, it is appended as a 4th entry.\r\nIf the user has no department, only the top 3 are returned.\r\nIf no departments exist in the company, an empty list is returned.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.DepartmentLeaderboardResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/securitygrowthdashboard/top-department-user-performance": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the top 3 performers within the current user's department for the last month.\r\nRankings are scoped to the department (rank 1 = best in department, not company-wide).\r\nIf the current user is not in the top 3, their ranking is appended as a 4th entry.\r\nIf the user has no department, an empty list is returned.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationViewResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/securitygrowthdashboard/user-timeline": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the current user's activity timeline from the gamification leaderboard for the last month, showing security-related events such as phishing test results and training completions.",
        "requestBody": {
          "description": "Timeline request parameters including pagination and optional filtering.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineRequestParameter"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth","pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false},"showOnlyFailedEvents":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineRequestParameter"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth","pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false},"showOnlyFailedEvents":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineRequestParameter"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth","pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false},"showOnlyFailedEvents":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineRequestParameter"
              },
              "example": {"targetUserResourceId":"Tu5Kp2mR7xLv","datePeriod":"LastMonth","pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false},"showOnlyFailedEvents":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationUserTimeLineViewResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/securitygrowthdashboard/phishing-result": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves a summary of the current user's phishing test results, including pass/fail counts and overall success rate across all campaigns.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.PhishingTestResultSummaryDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/securitygrowthdashboard/my-learning": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the current user's learning progress, including assigned training modules, completion status, and scores from awareness education programs.",
        "requestBody": {
          "description": "Learning request parameters including pagination and optional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningRequestParameter"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningRequestParameter"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningRequestParameter"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningRequestParameter"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]}]},"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/securitygrowthdashboard/my-certificates": {
      "post": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the current user's earned certificates from completed awareness training courses, including certificate metadata and issuance dates.",
        "requestBody": {
          "description": "Certificate request parameters including pagination and optional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.UserCertificateRequestParameter"
              },
              "example": {"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.UserCertificateRequestParameter"
              },
              "example": {"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.UserCertificateRequestParameter"
              },
              "example": {"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.UserCertificateRequestParameter"
              },
              "example": {"pagination":{"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.UserCertificateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/securitygrowthdashboard/user-info": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves profile information for the currently authenticated target user, including email, department, phone number, and preferred language settings.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Object, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/securitygrowthdashboard/certificate-download/{enrollmentId}": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Downloads a training completion certificate as a PDF file. The certificate HTML is fetched from the Awareness Educator service and converted to PDF using the configured page layout.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "Unique identifier of the training enrollment whose certificate is being downloaded.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/securitygrowthdashboard/my-badges": {
      "get": {
        "tags": [
          "Reports & Analytics"
        ],
        "summary": "Retrieves the gamification badges earned by the current user, including badge type, name, and award criteria based on their security awareness activities.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.BadgeInfoDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign/form-details": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the form details required to create or edit an SMS phishing (smishing) campaign, including available options and default values.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign/search": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Searches and returns a paginated list of smishing campaigns for the current company, with support for filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination, sorting, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"awareness","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"StatusId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreatedDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Creates a new SMS phishing (smishing) campaign for the current company with the specified target groups, scenarios, and scheduling options.",
        "requestBody": {
          "description": "The smishing campaign creation payload including name, target groups, scenario, and schedule configuration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreateSmishingCampaignRequest"
              },
              "example": {"smsProviderNumberResourceIds":["Sp3Nm7vR2kLx"],"smishingScenarios":[{"phishingScenarioResourceId":"Ss6Wp4mT8nKv","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"smishingScenarioResourceIds":["Ss6Wp4mT8nKv"],"useTargetUserTimeZone":false,"name":"Q1 2026 SMS Phishing Test","description":"SMS-based social engineering simulation for finance department","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":7,"distributionStartTypeId":1,"distributionTypeId":3,"distributionDelayEvery":10,"distributionDelayTimeTypeId":2,"sendingLimit":30,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","awardCertificate":false,"categoryDistributionType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreateSmishingCampaignRequest"
              },
              "example": {"smsProviderNumberResourceIds":["Sp3Nm7vR2kLx"],"smishingScenarios":[{"phishingScenarioResourceId":"Ss6Wp4mT8nKv","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"smishingScenarioResourceIds":["Ss6Wp4mT8nKv"],"useTargetUserTimeZone":false,"name":"Q1 2026 SMS Phishing Test","description":"SMS-based social engineering simulation for finance department","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":7,"distributionStartTypeId":1,"distributionTypeId":3,"distributionDelayEvery":10,"distributionDelayTimeTypeId":2,"sendingLimit":30,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","awardCertificate":false,"categoryDistributionType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreateSmishingCampaignRequest"
              },
              "example": {"smsProviderNumberResourceIds":["Sp3Nm7vR2kLx"],"smishingScenarios":[{"phishingScenarioResourceId":"Ss6Wp4mT8nKv","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"smishingScenarioResourceIds":["Ss6Wp4mT8nKv"],"useTargetUserTimeZone":false,"name":"Q1 2026 SMS Phishing Test","description":"SMS-based social engineering simulation for finance department","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":7,"distributionStartTypeId":1,"distributionTypeId":3,"distributionDelayEvery":10,"distributionDelayTimeTypeId":2,"sendingLimit":30,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","awardCertificate":false,"categoryDistributionType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreateSmishingCampaignRequest"
              },
              "example": {"smsProviderNumberResourceIds":["Sp3Nm7vR2kLx"],"smishingScenarios":[{"phishingScenarioResourceId":"Ss6Wp4mT8nKv","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"smishingScenarioResourceIds":["Ss6Wp4mT8nKv"],"useTargetUserTimeZone":false,"name":"Q1 2026 SMS Phishing Test","description":"SMS-based social engineering simulation for finance department","scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":7,"distributionStartTypeId":1,"distributionTypeId":3,"distributionDelayEvery":10,"distributionDelayTimeTypeId":2,"sendingLimit":30,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"frequency":"OneTime","awardCertificate":false,"categoryDistributionType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign/{resourceId}": {
      "put": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Updates an existing SMS phishing (smishing) campaign identified by its resource ID with the provided configuration changes.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated smishing campaign payload including modified fields.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdateSmishingCampaignRequest"
              },
              "example": {"smsProviderNumberResourceIds":["Sp3Nm7vR2kLx"],"smishingScenarios":[{"phishingScenarioResourceId":"Ss6Wp4mT8nKv","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"smishingScenarioResourceIds":["Ss6Wp4mT8nKv"],"useTargetUserTimeZone":false,"resourceId":"Sc6Wn3mR8vTp","name":"Q2 2026 Updated SMS Phishing Campaign","description":"Updated SMS phishing simulation for finance department","distributionStartTypeId":1,"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":7,"sendingLimit":30,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionTypeId":3,"distributionDelayEvery":10,"distributionDelayTimeTypeId":2,"distributionEmailOver":50,"distributionEmailOverTimeTypeId":2,"awardCertificate":false,"categoryDistributionType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdateSmishingCampaignRequest"
              },
              "example": {"smsProviderNumberResourceIds":["Sp3Nm7vR2kLx"],"smishingScenarios":[{"phishingScenarioResourceId":"Ss6Wp4mT8nKv","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"smishingScenarioResourceIds":["Ss6Wp4mT8nKv"],"useTargetUserTimeZone":false,"resourceId":"Sc6Wn3mR8vTp","name":"Q2 2026 Updated SMS Phishing Campaign","description":"Updated SMS phishing simulation for finance department","distributionStartTypeId":1,"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":7,"sendingLimit":30,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionTypeId":3,"distributionDelayEvery":10,"distributionDelayTimeTypeId":2,"distributionEmailOver":50,"distributionEmailOverTimeTypeId":2,"awardCertificate":false,"categoryDistributionType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdateSmishingCampaignRequest"
              },
              "example": {"smsProviderNumberResourceIds":["Sp3Nm7vR2kLx"],"smishingScenarios":[{"phishingScenarioResourceId":"Ss6Wp4mT8nKv","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"smishingScenarioResourceIds":["Ss6Wp4mT8nKv"],"useTargetUserTimeZone":false,"resourceId":"Sc6Wn3mR8vTp","name":"Q2 2026 Updated SMS Phishing Campaign","description":"Updated SMS phishing simulation for finance department","distributionStartTypeId":1,"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":7,"sendingLimit":30,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionTypeId":3,"distributionDelayEvery":10,"distributionDelayTimeTypeId":2,"distributionEmailOver":50,"distributionEmailOverTimeTypeId":2,"awardCertificate":false,"categoryDistributionType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdateSmishingCampaignRequest"
              },
              "example": {"smsProviderNumberResourceIds":["Sp3Nm7vR2kLx"],"smishingScenarios":[{"phishingScenarioResourceId":"Ss6Wp4mT8nKv","awardCertificate":false,"enrollmentSendTypeId":"StartTrainingImmediately","certificateConfigSendType":"SendOnFirstAttempt","sendTemplatesInPreferredLanguage":false}],"smishingScenarioResourceIds":["Ss6Wp4mT8nKv"],"useTargetUserTimeZone":false,"resourceId":"Sc6Wn3mR8vTp","name":"Q2 2026 Updated SMS Phishing Campaign","description":"Updated SMS phishing simulation for finance department","distributionStartTypeId":1,"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","duration":7,"sendingLimit":30,"excludeFromReports":false,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"targetGroupResourceIds":["Tg7Kp2mR4xLn"],"distributionTypeId":3,"distributionDelayEvery":10,"distributionDelayTimeTypeId":2,"distributionEmailOver":50,"distributionEmailOverTimeTypeId":2,"awardCertificate":false,"categoryDistributionType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Deletes an SMS phishing (smishing) campaign identified by its resource ID, removing all associated configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the full details of an existing SMS phishing (smishing) campaign by its resource ID, including scenarios, target groups, and schedule.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign/preview/{resourceId}": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Generates a preview of a smishing campaign, showing the SMS content and landing page as they would appear to target users.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign to preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignPreviewListDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign/search/export": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Exports the smishing campaign list to a downloadable file (CSV, Excel, or PDF) based on the current search and filter criteria.",
        "requestBody": {
          "description": "Export parameters including pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign/phone-number": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the list of available SMS phone numbers that can be used as sender numbers in smishing scenarios.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmsPhoneNumberDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign/calculate-sending-info": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Calculates the estimated sending information for a smishing campaign, including total SMS count, cost, and delivery timeline.",
        "requestBody": {
          "description": "The campaign parameters used to calculate sending estimates, such as target groups and scenarios.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.SmishingCalculateSendingInfoRequest"
              },
              "example": {"distributionTypeId":3,"distributionDelayEvery":10,"distributionDelayTimeTypeId":2,"sendingLimit":30,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":150}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.SmishingCalculateSendingInfoRequest"
              },
              "example": {"distributionTypeId":3,"distributionDelayEvery":10,"distributionDelayTimeTypeId":2,"sendingLimit":30,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":150}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.SmishingCalculateSendingInfoRequest"
              },
              "example": {"distributionTypeId":3,"distributionDelayEvery":10,"distributionDelayTimeTypeId":2,"sendingLimit":30,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":150}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.SmishingCalculateSendingInfoRequest"
              },
              "example": {"distributionTypeId":3,"distributionDelayEvery":10,"distributionDelayTimeTypeId":2,"sendingLimit":30,"sendOnlyActiveUsers":true,"sendRandomlyUsers":false,"sendRandomlyUsersCount":0,"sendRandomlyUsersCalculateTypeId":1,"totalTargetUserCount":150}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignSendingInfoViewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign/calculate-schedule-info": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Calculates the schedule information for a smishing campaign, estimating delivery windows and completion times based on the provided parameters.",
        "requestBody": {
          "description": "The scheduling parameters including target groups, frequency, and time zone settings.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.SmishingCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"smishingScenarioResourceIds":["Ss6Wp4mT8nKv"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.SmishingCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"smishingScenarioResourceIds":["Ss6Wp4mT8nKv"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.SmishingCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"smishingScenarioResourceIds":["Ss6Wp4mT8nKv"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.SmishingCalculateScheduleInfoRequest"
              },
              "example": {"scheduleTypeId":3,"scheduledDate":"2026-10-26 12:13:31","scheduledDateTimeZoneId":"Europe/London","frequency":1,"smishingScenarioResourceIds":["Ss6Wp4mT8nKv"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignScheduleInfoViewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job/form-details": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the form details required to configure a smishing campaign job, including available instance groups and scheduling options.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job/start/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Starts an existing smishing campaign job instance for the specified campaign and instance group, beginning SMS delivery to target users.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number identifying which job run to start.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job/start/{resourceId}": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Creates a new smishing campaign job instance and immediately starts SMS delivery for the specified campaign.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign to create and start a job for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Optional campaign instance configuration overrides.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignInstance"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-20 12:13:31","scheduledDateTimeZoneId":"UTC","scheduleTypeId":1,"targetGroupResourceIds":["Qw4Rt6yU8iOp"],"distributionStartTypeId":1,"sendingLimit":100,"distributionDelayTimeTypeId":1,"distributionDelayEvery":0,"useTargetUserTimeZone":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignInstance"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-20 12:13:31","scheduledDateTimeZoneId":"UTC","scheduleTypeId":1,"targetGroupResourceIds":["Qw4Rt6yU8iOp"],"distributionStartTypeId":1,"sendingLimit":100,"distributionDelayTimeTypeId":1,"distributionDelayEvery":0,"useTargetUserTimeZone":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignInstance"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-20 12:13:31","scheduledDateTimeZoneId":"UTC","scheduleTypeId":1,"targetGroupResourceIds":["Qw4Rt6yU8iOp"],"distributionStartTypeId":1,"sendingLimit":100,"distributionDelayTimeTypeId":1,"distributionDelayEvery":0,"useTargetUserTimeZone":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignInstance"
              },
              "example": {"excludeFromReports":false,"scheduledDate":"2026-10-20 12:13:31","scheduledDateTimeZoneId":"UTC","scheduleTypeId":1,"targetGroupResourceIds":["Qw4Rt6yU8iOp"],"distributionStartTypeId":1,"sendingLimit":100,"distributionDelayTimeTypeId":1,"distributionDelayEvery":0,"useTargetUserTimeZone":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job/stop/{resourceId}/{instanceGroup}": {
      "patch": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Stops a running smishing campaign job, halting further SMS delivery to remaining target users in the specified instance group.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number identifying which job run to stop.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job/{resourceId}/{instanceGroup}": {
      "delete": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Deletes a smishing campaign job instance and its associated tracking data for the specified campaign and instance group.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number identifying which job run to delete.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job/resend/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Resends SMS messages to target users filtered by activity type (e.g., not clicked, not submitted) within the specified campaign job instance.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number identifying which job run to resend from.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The resend criteria specifying which user activity types to target for re-delivery.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersRequest"
              },
              "example": {"types":["NoResponse"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersRequest"
              },
              "example": {"types":["NoResponse"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersRequest"
              },
              "example": {"types":["NoResponse"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersRequest"
              },
              "example": {"types":["NoResponse"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job/resend/list/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Resends SMS messages to a specific list of target users within the specified campaign job instance, with support for select-all and exclusion logic.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number identifying which job run to resend from.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The resend criteria including specific user selections, exclusions, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest"
              },
              "example": {"items":["Tu3Kp8mR7xLv","Tu6Wn4vT9nQs"],"selectAll":false,"excludedItems":[],"searchType":"NoResponse"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/summary/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the summary details of a smishing campaign job, including delivery statistics, click rates, and submission counts for the specified instance group.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number identifying the specific job run.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/summary/training/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the training-focused summary details of a smishing campaign job, including awareness training completion metrics for the specified instance group.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number identifying the specific job run.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/summary/target-groups/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the target groups and their user breakdown for a smishing campaign job, showing group-level delivery and response statistics.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number identifying the specific job run.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignTargetGroupsResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/{resourceId}/search": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Searches and returns a paginated list of campaign job instances belonging to a specific smishing campaign, with support for filtering by frequency group.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the parent smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sorting, frequency group filter, and additional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.SearchSmishingCampaignJobRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"smishingCampaignFrequencyGroup":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.SearchSmishingCampaignJobRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"smishingCampaignFrequencyGroup":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.SearchSmishingCampaignJobRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"smishingCampaignFrequencyGroup":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.SearchSmishingCampaignJobRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false,"smishingCampaignFrequencyGroup":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Search.SmishingCampaignJobSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/search": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Searches and returns a paginated list of all smishing campaign job reports across campaigns, with support for filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination, sorting, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobReportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobReportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobReportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobReportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreatedDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Search.SmishingCampaignJobReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/search/export": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Exports the smishing campaign job report list to a downloadable file (CSV, Excel, or PDF) based on the current search and filter criteria.",
        "requestBody": {
          "description": "Export parameters including pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/{resourceId}/search/export": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Exports the campaign job instances list for a specific smishing campaign to a downloadable file, with support for frequency group filtering.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the parent smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Export parameters including pagination, filters, export type, and frequency group filter.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SmishingCampaignJob.ExportSmishingCampaignJobRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","smishingCampaignFrequencyGroup":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SmishingCampaignJob.ExportSmishingCampaignJobRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","smishingCampaignFrequencyGroup":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SmishingCampaignJob.ExportSmishingCampaignJobRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","smishingCampaignFrequencyGroup":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SmishingCampaignJob.ExportSmishingCampaignJobRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel","smishingCampaignFrequencyGroup":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/{searchType}/search/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Searches and returns a paginated list of target users for a smishing campaign job, filtered by activity type (e.g., sent, clicked, submitted).",
        "parameters": [
          {
            "name": "searchType",
            "in": "path",
            "description": "The user search category such as sent, clicked, or submitted.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number identifying the specific job run. Must be greater than 0.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sorting, activity type filter, and additional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/{searchType}/search/export/{resourceId}/{instanceGroup}": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Exports the target users list for a smishing campaign job to a downloadable file, filtered by activity type (e.g., sent, clicked, submitted).",
        "parameters": [
          {
            "name": "searchType",
            "in": "path",
            "description": "The user search category such as sent, clicked, or submitted.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number identifying the specific job run. Must be greater than 0.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Export parameters including pagination, filters, export type, and activity type.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/search-sms-clicked/{resourceId}": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Searches and returns a paginated list of SMS link click events for a specific campaign job user, showing click timestamps and source details.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign job user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sorting, activity type filter, and additional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsClickedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/search-sms-submitted/{resourceId}": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Searches and returns a paginated list of landing page form submission events for a specific campaign job user, showing submitted data details.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign job user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sorting, and additional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsSubmittedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/search-sms-all/{resourceId}": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Searches and returns a paginated list of all SMS activity events for a specific campaign job user, combining click, submission, and other interaction data.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign job user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sorting, and additional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsAllSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/export/{resourceId}/{instanceGroup}": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Exports a detailed Excel report for a smishing campaign job, including comprehensive delivery, click, and submission statistics for all target users.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number identifying the specific job run.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/search-mfa-submitted/{resourceId}": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Searches and returns a paginated list of MFA (multi-factor authentication) code submission events for a specific campaign job user.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign job user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination, sorting, and additional filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"Email","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsMfaSubmittedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/dns-services/form-details": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the form details required to create or edit a DNS service provider configuration, including available provider types and default values.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DnsService.Dto.DnsServiceFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/dns-services": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Creates a new DNS service provider configuration for the current company, used to manage domain records for smishing landing pages.",
        "requestBody": {
          "description": "The DNS service provider creation payload including provider type, API credentials, and configuration details.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.CreateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.CreateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.CreateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.CreateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/dns-services/{resourceId}": {
      "put": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Updates an existing DNS service provider configuration identified by its resource ID with the provided changes.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DNS service provider to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated DNS service provider payload including modified fields.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.UpdateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production Updated","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.UpdateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production Updated","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.UpdateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production Updated","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.UpdateDnsServiceProviderRequest"
              },
              "example": {"dnsServiceProviderTypeId":1,"dnsServiceProviderName":"Cloudflare Production Updated","username":"api-key@example.com","password":"api-secret-token","recordTypeId":1,"dnsRecord":"192.0.2.1","availableForRequests":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Deletes a DNS service provider configuration identified by its resource ID, removing the provider and its associated settings.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DNS service provider to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the full details of an existing DNS service provider configuration by its resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DNS service provider to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DnsService.Dto.DnsServiceProviderDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/dns-services/search": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Searches and returns a paginated list of DNS service providers for the current company, with support for filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination, sorting, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.DnServiceProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.DnServiceProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.DnServiceProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.DnServiceProviderSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.DnsService.Search.DnsServiceProviderSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/dns-services/search/export": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Exports the DNS service provider list to a downloadable file (CSV, Excel, or PDF) based on the current search and filter criteria.",
        "requestBody": {
          "description": "Export parameters including pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/smishing-simulator/dns-services/{resourceId}/test": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Tests the connectivity and credentials of a DNS service provider by attempting to communicate with the provider's API using the stored configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the DNS service provider to test.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The test parameters including any provider-specific settings to validate.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.TestDnsServiceProviderRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","dnsServiceProviderTypeId":1,"username":"api-key@example.com","password":"api-secret-token"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.TestDnsServiceProviderRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","dnsServiceProviderTypeId":1,"username":"api-key@example.com","password":"api-secret-token"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.TestDnsServiceProviderRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","dnsServiceProviderTypeId":1,"username":"api-key@example.com","password":"api-secret-token"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DnsService.TestDnsServiceProviderRequest"
              },
              "example": {"resourceId":"65BVv1136Vnp","dnsServiceProviderTypeId":1,"username":"api-key@example.com","password":"api-secret-token"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/domain-records/form-details": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the form details required to create or edit a domain record, including available DNS service providers and record type options.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/domain-records/test": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Tests the validity of a DNS zone ID by verifying it against the associated DNS service provider's API.",
        "requestBody": {
          "description": "The test parameters including zone ID and DNS provider reference to validate.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.TestDomainRecordRequest"
              },
              "example": {"dnsServiceProviderId":1,"zoneId":"abc123def456"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.TestDomainRecordRequest"
              },
              "example": {"dnsServiceProviderId":1,"zoneId":"abc123def456"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.TestDomainRecordRequest"
              },
              "example": {"dnsServiceProviderId":1,"zoneId":"abc123def456"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.TestDomainRecordRequest"
              },
              "example": {"dnsServiceProviderId":1,"zoneId":"abc123def456"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/domain-records": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Creates a new domain record for the current company, linking a domain to a DNS service provider for use in smishing landing pages.",
        "requestBody": {
          "description": "The domain record creation payload including domain name, zone ID, and DNS provider reference.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+CreateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.50","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+CreateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.50","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+CreateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.50","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+CreateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.50","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/domain-records/{resourceId}": {
      "put": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Updates an existing domain record identified by its resource ID with the provided configuration changes.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the domain record to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated domain record payload including modified fields.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+UpdateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.51","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+UpdateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.51","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+UpdateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.51","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+UpdateDomainRecordRequest"
              },
              "example": {"domain":"phishing-sim.acme.com","recordTypeId":1,"dnsServiceProviderId":1,"dnsRecord":"203.0.113.51","proxyStatusId":1,"urlSchemaTypeId":2,"zoneId":"zone-abc123def456","isActive":true,"availableForRequests":[{"type":"Company","resourceId":"a1b2c3d4e5f6"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Deletes a domain record identified by its resource ID, removing the domain association from the smishing simulator.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the domain record to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the full details of an existing domain record by its resource ID, including domain name, zone ID, and DNS provider configuration.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the domain record to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/domain-records/search": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Searches and returns a paginated list of domain records for the current company, with support for filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination, sorting, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+DomainRecordSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+DomainRecordSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+DomainRecordSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+DomainRecordSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":10,"orderBy":"CreateTime","ascending":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/domain-records/search/export": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Exports the domain record list to a downloadable file (CSV, Excel, or PDF) based on the current search and filter criteria.",
        "requestBody": {
          "description": "Export parameters including pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/smishing-simulator/excluded-ip": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Creates or updates the excluded IP address list for smishing campaigns, preventing landing page tracking for requests originating from the specified IPs.",
        "requestBody": {
          "description": "The excluded IP list payload containing IP addresses or CIDR ranges to exclude from campaign tracking.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ExcludedIP.CreatePhishingCampaignExcludedIPRequest"
              },
              "example": {"excludedIPs":["10.0.0.1","192.168.1.0/24"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ExcludedIP.CreatePhishingCampaignExcludedIPRequest"
              },
              "example": {"excludedIPs":["10.0.0.1","192.168.1.0/24"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ExcludedIP.CreatePhishingCampaignExcludedIPRequest"
              },
              "example": {"excludedIPs":["10.0.0.1","192.168.1.0/24"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.ExcludedIP.CreatePhishingCampaignExcludedIPRequest"
              },
              "example": {"excludedIPs":["10.0.0.1","192.168.1.0/24"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignExcludedIP.Dto.PhishingCampaignExcludedIPDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/excluded-ip-list": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the current list of excluded IP addresses configured for smishing campaigns, which are ignored during landing page interaction tracking.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignExcludedIP.Dto.PhishingCampaignExcludedIPItemDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/landing-page-template/form-details": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the form details required to create or edit a smishing landing page template, including available field types and layout options.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/landing-page-template": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Creates a new smishing landing page template for the current company, defining the HTML content and form fields displayed when a target user clicks an SMS link.",
        "requestBody": {
          "description": "The landing page template creation payload including name, HTML content, and form field configuration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.CreateLandingPageTemplateRequest"
              },
              "example": {"name":"Office 365 Login Page","description":"Simulates a Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.CreateLandingPageTemplateRequest"
              },
              "example": {"name":"Office 365 Login Page","description":"Simulates a Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.CreateLandingPageTemplateRequest"
              },
              "example": {"name":"Office 365 Login Page","description":"Simulates a Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.CreateLandingPageTemplateRequest"
              },
              "example": {"name":"Office 365 Login Page","description":"Simulates a Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.CreateLandingPageTemplateReturnSearch, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/landing-page-template/{resourceId}": {
      "put": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Updates an existing smishing landing page template identified by its resource ID with the provided content and configuration changes.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the landing page template to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated landing page template payload including modified HTML content and form fields.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.UpdateLandingPageTemplateRequest"
              },
              "example": {"name":"Updated Office 365 Login Page","description":"Updated Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.UpdateLandingPageTemplateRequest"
              },
              "example": {"name":"Updated Office 365 Login Page","description":"Updated Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.UpdateLandingPageTemplateRequest"
              },
              "example": {"name":"Updated Office 365 Login Page","description":"Updated Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.UpdateLandingPageTemplateRequest"
              },
              "example": {"name":"Updated Office 365 Login Page","description":"Updated Microsoft 365 sign-in page for credential harvesting","methodTypeId":1,"difficultyTypeId":1,"urlSchemaTypeId":1,"subDomain":"login","domainRecordId":1,"autoRotate":false,"pathTypeId":1,"extensionTypeId":1,"parameterTypeId":1,"landingPages":[{"resourceId":"Lp3Kx7mN2wRt","name":"Login Page","order":1,"content":"<html><body><h1>Login</h1></body></html>","languageType":0}],"tags":["credential-harvesting","office365"],"languageTypeResourceId":"Ln2Kp5mR7vWx","isAssistedByAI":false,"isInvisibleCaptchaEnabled":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Deletes a smishing landing page template identified by its resource ID, removing it from available templates for SMS phishing scenarios.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the landing page template to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the full details of an existing smishing landing page template by its resource ID, including HTML content and form field definitions.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the landing page template to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/landing-page-template/bulk-delete": {
      "delete": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Deletes multiple smishing landing page templates in a single operation based on the provided list of resource identifiers.",
        "requestBody": {
          "description": "The bulk delete payload containing a list of landing page template resource identifiers to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/landing-page-template/search": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Searches and returns a paginated list of smishing landing page templates for the current company, with support for filtering and sorting.",
        "requestBody": {
          "description": "Search criteria including pagination, sorting, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"DifficultyTypeId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"DifficultyTypeId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"DifficultyTypeId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageTemplateSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"MethodTypeId","operator":"eq","value":"1"}],"filterGroups":[]},{"condition":"AND","filterItems":[{"fieldName":"DifficultyTypeId","operator":"eq","value":"1"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/landing-page-template/search/export": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Exports the smishing landing page template list to a downloadable file (CSV, Excel, or PDF) based on the current search and filter criteria.",
        "requestBody": {
          "description": "Export parameters including pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-campaign-job-report/summary/{resourceId}/{instanceGroup}/landing-page-template/{templateResourceId}": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the landing page template used in a specific smishing campaign job, identified by the campaign resource ID, instance group, and template resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing campaign.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instanceGroup",
            "in": "path",
            "description": "The instance group number identifying the specific campaign job run.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "templateResourceId",
            "in": "path",
            "description": "The unique resource identifier of the landing page template to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-scenario/form-details": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the form details required to create or edit a smishing scenario, including available categories, languages, and template options.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-scenario": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Creates a new smishing scenario for the current company, defining the SMS text template, landing page, and category used in smishing campaigns.",
        "requestBody": {
          "description": "The smishing scenario creation payload including name, SMS text template, landing page template, and category.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreateSmishingScenarioRequest"
              },
              "example": {"textTemplateId":1,"name":"SMS Package Delivery Scenario","description":"SMS phishing scenario simulating package delivery notification","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["sms","delivery"],"roleResourceIds":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreateSmishingScenarioRequest"
              },
              "example": {"textTemplateId":1,"name":"SMS Package Delivery Scenario","description":"SMS phishing scenario simulating package delivery notification","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["sms","delivery"],"roleResourceIds":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreateSmishingScenarioRequest"
              },
              "example": {"textTemplateId":1,"name":"SMS Package Delivery Scenario","description":"SMS phishing scenario simulating package delivery notification","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["sms","delivery"],"roleResourceIds":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreateSmishingScenarioRequest"
              },
              "example": {"textTemplateId":1,"name":"SMS Package Delivery Scenario","description":"SMS phishing scenario simulating package delivery notification","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["sms","delivery"],"roleResourceIds":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-scenario/{resourceId}": {
      "put": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Updates an existing smishing scenario identified by its resource ID with the provided content and configuration changes.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing scenario to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated smishing scenario payload including modified SMS text, landing page, and category fields.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdateSmishingScenarioRequest"
              },
              "example": {"textTemplateId":2,"name":"Updated SMS Package Delivery Scenario","description":"Updated SMS phishing scenario","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["sms","delivery"],"roleResourceIds":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdateSmishingScenarioRequest"
              },
              "example": {"textTemplateId":2,"name":"Updated SMS Package Delivery Scenario","description":"Updated SMS phishing scenario","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["sms","delivery"],"roleResourceIds":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdateSmishingScenarioRequest"
              },
              "example": {"textTemplateId":2,"name":"Updated SMS Package Delivery Scenario","description":"Updated SMS phishing scenario","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["sms","delivery"],"roleResourceIds":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdateSmishingScenarioRequest"
              },
              "example": {"textTemplateId":2,"name":"Updated SMS Package Delivery Scenario","description":"Updated SMS phishing scenario","methodTypeId":1,"landingPageTemplateId":1,"categoryId":1,"languageTypeResourceId":"Lt2Wn5vT9nQs","tags":["sms","delivery"],"roleResourceIds":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Deletes a smishing scenario identified by its resource ID, removing it from available scenarios for SMS phishing campaigns.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing scenario to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the full details of an existing smishing scenario by its resource ID, including SMS text template, landing page template, and category.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing scenario to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingScenario.SmishingScenarioDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-scenario/bulk-delete": {
      "delete": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Deletes multiple smishing scenarios in a single operation based on the provided list of resource identifiers.",
        "requestBody": {
          "description": "The bulk delete payload containing a list of smishing scenario resource identifiers to remove.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.GlobalDeleteRequest"
              },
              "example": {"items":["Rs5Kp2mR7xLv","Rs8Wp3nQ5vXm"],"selectAll":false,"excludedItems":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-scenario/search": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Searches and returns a paginated list of smishing scenarios for the current company, with support for filtering, sorting, and optional campaign association.",
        "requestBody": {
          "description": "Search criteria including pagination, sorting, filter parameters, and optional campaign resource ID for association filtering.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"templateTypes":[],"roleResourceIds":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingScenario.Dto.SmishingScenarioSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-scenario/search/export": {
      "post": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Exports the smishing scenario list to a downloadable file (CSV, Excel, or PDF) based on the current search and filter criteria.",
        "requestBody": {
          "description": "Export parameters including pagination, filters, export type, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-scenario/preview/{resourceId}": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Generates a preview of a smishing scenario by its resource ID, showing the SMS text and landing page as they would appear to target users.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the smishing scenario to preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmishingScenarioPreviewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-scenario/preview/{textTemplateResourceId}/{landingPageTemplateResourceId}": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Generates a preview of a smishing scenario by combining a specific SMS text template and landing page template, without requiring a saved scenario.",
        "parameters": [
          {
            "name": "textTemplateResourceId",
            "in": "path",
            "description": "The unique resource identifier of the SMS text template to use for the preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "landingPageTemplateResourceId",
            "in": "path",
            "description": "The unique resource identifier of the landing page template to use for the preview.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmishingScenarioPreviewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/smishing-simulator/smishing-scenario/mfa-phone-number": {
      "get": {
        "tags": [
          "SMS Phishing (Smishing)"
        ],
        "summary": "Retrieves the list of available MFA (multi-factor authentication) phone numbers that can be used in smishing scenarios for MFA code capture simulations.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmsPhoneNumberDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/allow-list": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Creates a new allow-list entry (domain or IP) for the current company. Allow-listed domains are trusted for phishing simulation delivery and bypass email security filters.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "Domain": {
                    "type": "string",
                    "description": "Domain name to be added to the allow list."
                  },
                  "TxtRecord": {
                    "type": "string",
                    "description": "DNS TXT record value used for domain ownership verification."
                  }
                }
              },
              "example": {
                "Domain": "example.com",
                "TxtRecord": "keepnet-verify=abc123def456"
              },
              "encoding": {
                "Domain": {
                  "style": "form"
                },
                "TxtRecord": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "System"
        ],
        "summary": "Deletes one or more allow-list entries by their resource IDs. Removing an entry revokes the domain's trusted status for simulation campaigns.",
        "requestBody": {
          "description": "The request containing a list of resource IDs to delete.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AllowList.DeleteAllowListRequest"
              },
              "example": {"resourceIds":["65BVv1136Vnp","Kp3mR5xLn7Wq"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AllowList.DeleteAllowListRequest"
              },
              "example": {"resourceIds":["65BVv1136Vnp","Kp3mR5xLn7Wq"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AllowList.DeleteAllowListRequest"
              },
              "example": {"resourceIds":["65BVv1136Vnp","Kp3mR5xLn7Wq"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AllowList.DeleteAllowListRequest"
              },
              "example": {"resourceIds":["65BVv1136Vnp","Kp3mR5xLn7Wq"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/allow-list/search": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Searches allow-list entries with filtering and pagination. Returns domain/IP entries along with their verification status for the current company.",
        "requestBody": {
          "description": "Search criteria including pagination parameters (page number, page size, sort order) and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AllowList.SearchAllowListRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AllowList.SearchAllowListRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AllowList.SearchAllowListRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AllowList.SearchAllowListRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AllowList.Search.SearchAllowListDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/allow-list/search/export": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Exports the allow-list search results to a downloadable file. Supports multiple export formats (e.g., CSV, Excel) for compliance reporting and auditing.",
        "requestBody": {
          "description": "Export parameters including pagination, filters, export format, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/allow-list/txt-record": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Generates a DNS TXT record value for the current company's domain verification. The returned value must be added as a TXT record in the company's DNS to prove domain ownership.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/allow-list/verify/{resourceId}": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Verifies a specific allow-list entry by checking the DNS TXT record or other verification mechanism. Once verified, the domain is trusted for phishing simulation campaigns.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the allow-list entry to verify.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.AllowList.Dto.AllowListDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/allow-list/search/unverified": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves all unverified allow-list entries for the current company. These are domains/IPs that have been added but have not yet passed DNS or ownership verification.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/allow-list/search/verified": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves all verified allow-list entries for the current company. These domains/IPs have passed verification and are trusted for phishing simulation delivery.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/allow-list/mark-as-verified/{resourceId}": {
      "put": {
        "tags": [
          "System"
        ],
        "summary": "Manually marks an allow-list domain as verified without DNS validation. This is an administrative override for cases where automated verification cannot be performed.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the allow-list entry to mark as verified.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/audit": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Creates a new audit log entry to record a user or system action. Audit logs provide a tamper-evident trail of administrative and security-relevant operations.",
        "requestBody": {
          "description": "Audit log details including the action type, affected entity, and contextual metadata.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Audit.CreateAuditLogRequest"
              },
              "example": {"application":"KeepnetLabs","module":"PhishingSimulation","url":"/api/phishing/campaigns","clientIp":"192.168.1.100","username":"admin","email":"admin@example.com","logMessage":"Created a new phishing campaign","correlationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","browserInfo":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)","extraLogMessage":"","action":"Create","duration":"150ms","parameter":"{\"campaignName\":\"Q1 Security Test\"}","changeSet":""}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Audit.CreateAuditLogRequest"
              },
              "example": {"application":"KeepnetLabs","module":"PhishingSimulation","url":"/api/phishing/campaigns","clientIp":"192.168.1.100","username":"admin","email":"admin@example.com","logMessage":"Created a new phishing campaign","correlationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","browserInfo":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)","extraLogMessage":"","action":"Create","duration":"150ms","parameter":"{\"campaignName\":\"Q1 Security Test\"}","changeSet":""}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Audit.CreateAuditLogRequest"
              },
              "example": {"application":"KeepnetLabs","module":"PhishingSimulation","url":"/api/phishing/campaigns","clientIp":"192.168.1.100","username":"admin","email":"admin@example.com","logMessage":"Created a new phishing campaign","correlationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","browserInfo":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)","extraLogMessage":"","action":"Create","duration":"150ms","parameter":"{\"campaignName\":\"Q1 Security Test\"}","changeSet":""}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Audit.CreateAuditLogRequest"
              },
              "example": {"application":"KeepnetLabs","module":"PhishingSimulation","url":"/api/phishing/campaigns","clientIp":"192.168.1.100","username":"admin","email":"admin@example.com","logMessage":"Created a new phishing campaign","correlationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","browserInfo":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)","extraLogMessage":"","action":"Create","duration":"150ms","parameter":"{\"campaignName\":\"Q1 Security Test\"}","changeSet":""}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/audit-logs": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Returns a paginated list of audit logs for the current company, ordered by the specified criteria. Provides a chronological record of administrative and security actions.",
        "requestBody": {
          "description": "Pagination parameters including page number, page size, sort field, and sort direction.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AuditLog.GetAuditLogRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AuditLog.GetAuditLogRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AuditLog.GetAuditLogRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AuditLog.GetAuditLogRequest"
              },
              "example": {"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AuditLog.Dto.AuditLogDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/audit-logs/search": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Searches audit logs with advanced filtering and pagination. Supports filtering by action type, user, date range, and other criteria for compliance investigations.",
        "requestBody": {
          "description": "Search criteria including pagination parameters and filter conditions (e.g., action type, date range, user).",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AuditLog.AuditLogSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LogDate","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AuditLog.AuditLogSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LogDate","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AuditLog.AuditLogSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LogDate","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AuditLog.AuditLogSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"LogDate","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AuditLog.Search.AuditLogSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/audit-logs/search/export": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Exports audit logs to a downloadable file for compliance and reporting purposes. Supports multiple formats (e.g., CSV, Excel) and optional filtering.",
        "requestBody": {
          "description": "Export parameters including pagination, filters, export format, and whether to include all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/available-for/search": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Searches for companies and company groups that are visible to the current company. Used to populate \"available for\" selectors when sharing templates, campaigns, or resources across multi-tenant company hierarchies.",
        "requestBody": {
          "description": "Search criteria including pagination, optional name filter, and a list of already-selected company/group entries.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.AvailableForSearchRequest"
              },
              "example": {"name":"","pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false,"selectedCompanyGroup":[{"resourceId":"65BVv1136Vnp","typeName":"Company"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.AvailableForSearchRequest"
              },
              "example": {"name":"","pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false,"selectedCompanyGroup":[{"resourceId":"65BVv1136Vnp","typeName":"Company"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.AvailableForSearchRequest"
              },
              "example": {"name":"","pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false,"selectedCompanyGroup":[{"resourceId":"65BVv1136Vnp","typeName":"Company"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.Search.AvailableForSearchRequest"
              },
              "example": {"name":"","pageNumber":1,"pageSize":20,"orderBy":"Name","ascending":false,"selectedCompanyGroup":[{"resourceId":"65BVv1136Vnp","typeName":"Company"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchCompanyGroupResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/diagnostic": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Submits diagnostic data from the phishing reporter Outlook add-in. This data is used to troubleshoot add-in connectivity, configuration issues, and report submission failures.",
        "requestBody": {
          "description": "Diagnostic payload containing add-in version, environment details, and error information.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Diagnostic.DiagnosticRequest"
              },
              "example": {"emails":["user@example.com"],"hostName":"WORKSTATION-01","companyId":"65BVv1136Vnp","operatingSystemInformation":{"edition":"Windows 10 Enterprise","version":"10.0.19045","buildNumber":"19045","language":"en-US"},"addInInformation":{"isAddInInstalled":true,"addInVersion":"3.5.0","hklmLoadBehaviorValue":"3","bootTime":"2026-03-10T08:00:00Z","outlookVersion":"16.0.17928.20114","outlookArchitecture":"x64","isOutlookRunning":true,"outlookLastStartupTime":"2026-03-10T08:05:00Z","addInDisabledInformation":{}},"osAccounts":[{"sId":"S-1-5-21-1234567890-1234567890-1234567890-1001","loadBehaviorValue":"3","isAddInInDisabledItems":false,"logonName":"DOMAIN\\user","emails":[{"email":"user@example.com","emailServiceName":"Exchange"}]}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Diagnostic.DiagnosticRequest"
              },
              "example": {"emails":["user@example.com"],"hostName":"WORKSTATION-01","companyId":"65BVv1136Vnp","operatingSystemInformation":{"edition":"Windows 10 Enterprise","version":"10.0.19045","buildNumber":"19045","language":"en-US"},"addInInformation":{"isAddInInstalled":true,"addInVersion":"3.5.0","hklmLoadBehaviorValue":"3","bootTime":"2026-03-10T08:00:00Z","outlookVersion":"16.0.17928.20114","outlookArchitecture":"x64","isOutlookRunning":true,"outlookLastStartupTime":"2026-03-10T08:05:00Z","addInDisabledInformation":{}},"osAccounts":[{"sId":"S-1-5-21-1234567890-1234567890-1234567890-1001","loadBehaviorValue":"3","isAddInInDisabledItems":false,"logonName":"DOMAIN\\user","emails":[{"email":"user@example.com","emailServiceName":"Exchange"}]}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Diagnostic.DiagnosticRequest"
              },
              "example": {"emails":["user@example.com"],"hostName":"WORKSTATION-01","companyId":"65BVv1136Vnp","operatingSystemInformation":{"edition":"Windows 10 Enterprise","version":"10.0.19045","buildNumber":"19045","language":"en-US"},"addInInformation":{"isAddInInstalled":true,"addInVersion":"3.5.0","hklmLoadBehaviorValue":"3","bootTime":"2026-03-10T08:00:00Z","outlookVersion":"16.0.17928.20114","outlookArchitecture":"x64","isOutlookRunning":true,"outlookLastStartupTime":"2026-03-10T08:05:00Z","addInDisabledInformation":{}},"osAccounts":[{"sId":"S-1-5-21-1234567890-1234567890-1234567890-1001","loadBehaviorValue":"3","isAddInInDisabledItems":false,"logonName":"DOMAIN\\user","emails":[{"email":"user@example.com","emailServiceName":"Exchange"}]}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Diagnostic.DiagnosticRequest"
              },
              "example": {"emails":["user@example.com"],"hostName":"WORKSTATION-01","companyId":"65BVv1136Vnp","operatingSystemInformation":{"edition":"Windows 10 Enterprise","version":"10.0.19045","buildNumber":"19045","language":"en-US"},"addInInformation":{"isAddInInstalled":true,"addInVersion":"3.5.0","hklmLoadBehaviorValue":"3","bootTime":"2026-03-10T08:00:00Z","outlookVersion":"16.0.17928.20114","outlookArchitecture":"x64","isOutlookRunning":true,"outlookLastStartupTime":"2026-03-10T08:05:00Z","addInDisabledInformation":{}},"osAccounts":[{"sId":"S-1-5-21-1234567890-1234567890-1234567890-1001","loadBehaviorValue":"3","isAddInInDisabledItems":false,"logonName":"DOMAIN\\user","emails":[{"email":"user@example.com","emailServiceName":"Exchange"}]}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notify/url": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Submits a URL indicator for threat notification analysis. The URL is checked against configured threat intelligence sources and the results are stored for incident response.",
        "requestBody": {
          "description": "The notification payload containing the suspicious URL to analyze.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedUrlRequest"
              },
              "example": {"name":"Suspicious login page link","url":"https://malicious-domain.com/login?redirect=acme"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedUrlRequest"
              },
              "example": {"name":"Suspicious login page link","url":"https://malicious-domain.com/login?redirect=acme"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedUrlRequest"
              },
              "example": {"name":"Suspicious login page link","url":"https://malicious-domain.com/login?redirect=acme"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedUrlRequest"
              },
              "example": {"name":"Suspicious login page link","url":"https://malicious-domain.com/login?redirect=acme"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/notify/attachment-hash": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Submits an attachment hash indicator for threat notification analysis. The hash is checked against threat intelligence databases to determine if the file is known-malicious.",
        "requestBody": {
          "description": "The notification payload containing the file hash (e.g., SHA-256) to analyze.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedHashRequest"
              },
              "example": {"name":"invoice_q1_2026.pdf","md5":"d41d8cd98f00b204e9800998ecf8427e","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","contentType":"application/pdf"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedHashRequest"
              },
              "example": {"name":"invoice_q1_2026.pdf","md5":"d41d8cd98f00b204e9800998ecf8427e","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","contentType":"application/pdf"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedHashRequest"
              },
              "example": {"name":"invoice_q1_2026.pdf","md5":"d41d8cd98f00b204e9800998ecf8427e","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","contentType":"application/pdf"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedHashRequest"
              },
              "example": {"name":"invoice_q1_2026.pdf","md5":"d41d8cd98f00b204e9800998ecf8427e","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","contentType":"application/pdf"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/notify/result": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Queries the analysis result for a previously submitted threat indicator. Returns the aggregated verdict and detailed findings from all configured analysis engines.",
        "requestBody": {
          "description": "The request containing the indicator identifier to query results for.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedIndicatorResultRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","scanType":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedIndicatorResultRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","scanType":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedIndicatorResultRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","scanType":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedIndicatorResultRequest"
              },
              "example": {"resourceId":"Ht4Wn8kL2mXq","scanType":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/feedback": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Submits user feedback to the Keepnet support team. Allows platform users to report issues, suggest improvements, or provide general comments directly from the application.",
        "requestBody": {
          "description": "The feedback payload containing the user's message text.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Feedback.SendFeedbackRequest"
              },
              "example": {"text":"The phishing simulation dashboard could benefit from a timeline view for campaign results."}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Feedback.SendFeedbackRequest"
              },
              "example": {"text":"The phishing simulation dashboard could benefit from a timeline view for campaign results."}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Feedback.SendFeedbackRequest"
              },
              "example": {"text":"The phishing simulation dashboard could benefit from a timeline view for campaign results."}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Feedback.SendFeedbackRequest"
              },
              "example": {"text":"The phishing simulation dashboard could benefit from a timeline view for campaign results."}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/file/{resourceId}": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Downloads a file by its resource ID. Returns the physical file with the appropriate MIME type. This endpoint is publicly accessible and does not require authentication.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the file to download.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/file/all": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves all files associated with the current company, including both uploaded and system-generated files such as exports and reports.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.FileItem.Dto.FileItemDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/file/upload": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Uploads one or more files for the current company. Supports multipart form data for batch file uploads used in templates, campaigns, or attachments.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "Files": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "Collection of files to upload."
                  }
                }
              },
              "encoding": {
                "Files": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/file/delete": {
      "delete": {
        "tags": [
          "System"
        ],
        "summary": "Deletes one or more files belonging to the current company by their resource IDs. Permanently removes the files from storage.",
        "requestBody": {
          "description": "The request containing a list of file resource IDs to delete.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.File.DeleteFilesRequest"
              },
              "example": {"resourceIdList":["65BVv1136Vnp","Kp3mR5xLn7Wq"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.File.DeleteFilesRequest"
              },
              "example": {"resourceIdList":["65BVv1136Vnp","Kp3mR5xLn7Wq"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.File.DeleteFilesRequest"
              },
              "example": {"resourceIdList":["65BVv1136Vnp","Kp3mR5xLn7Wq"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.File.DeleteFilesRequest"
              },
              "example": {"resourceIdList":["65BVv1136Vnp","Kp3mR5xLn7Wq"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/file/uploaded": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves only the files that were manually uploaded by users for the current company, excluding system-generated files like exports.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/file/compress-html": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Compresses and minifies HTML content, converting RGBA color values to HEX format. Used to optimize email templates and landing page HTML before storage.",
        "requestBody": {
          "description": "The request containing the raw HTML content to compress.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.File.CompressHtmlRequest"
              },
              "example": {"htmlContent":"<html><head><title>Landing Page</title></head><body><h1>Welcome</h1></body></html>"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.File.CompressHtmlRequest"
              },
              "example": {"htmlContent":"<html><head><title>Landing Page</title></head><body><h1>Welcome</h1></body></html>"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.File.CompressHtmlRequest"
              },
              "example": {"htmlContent":"<html><head><title>Landing Page</title></head><body><h1>Welcome</h1></body></html>"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.File.CompressHtmlRequest"
              },
              "example": {"htmlContent":"<html><head><title>Landing Page</title></head><body><h1>Welcome</h1></body></html>"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/file/parse-email-file": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Parses an uploaded email file (.eml or .msg) and extracts its components including subject, body, headers, and attachments. Maximum file size is 5 MB.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "File": {
                    "type": "string",
                    "description": "Email file to be parsed.",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "File": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.FileItem.Dto.ParsedEmailDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/heartbeat": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Sends a heartbeat signal from the incident responder client. The server responds with any pending investigations and remediation actions that the client should process.",
        "requestBody": {
          "description": "Heartbeat payload containing the client's current status, version, and capabilities.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Heartbeat.HeartbeatRequest"
              },
              "example": {"email":"user@example.com","hostName":"WORKSTATION-01","addInVersion":"3.5.0","osVersion":"Windows 10 Enterprise 10.0.19045","osLanguage":"en-US","outlookVersion":"16.0.17928.20114","osAccountSid":"S-1-5-21-1234567890-1234567890-1234567890-1001"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Heartbeat.HeartbeatRequest"
              },
              "example": {"email":"user@example.com","hostName":"WORKSTATION-01","addInVersion":"3.5.0","osVersion":"Windows 10 Enterprise 10.0.19045","osLanguage":"en-US","outlookVersion":"16.0.17928.20114","osAccountSid":"S-1-5-21-1234567890-1234567890-1234567890-1001"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Heartbeat.HeartbeatRequest"
              },
              "example": {"email":"user@example.com","hostName":"WORKSTATION-01","addInVersion":"3.5.0","osVersion":"Windows 10 Enterprise 10.0.19045","osLanguage":"en-US","outlookVersion":"16.0.17928.20114","osAccountSid":"S-1-5-21-1234567890-1234567890-1234567890-1001"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Heartbeat.HeartbeatRequest"
              },
              "example": {"email":"user@example.com","hostName":"WORKSTATION-01","addInVersion":"3.5.0","osVersion":"Windows 10 Enterprise 10.0.19045","osLanguage":"en-US","outlookVersion":"16.0.17928.20114","osAccountSid":"S-1-5-21-1234567890-1234567890-1234567890-1001"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Heartbeat.Dto.HeartbeatServiceResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Returns all background jobs for the current company — target-user import jobs and\r\ndata-region migration jobs — so the customer can monitor the status and progress of\r\nbulk user imports and PII region migrations on a single page.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Job.Dto.JobResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{resourceId}": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves detailed information for a specific background job, including progress, error\r\ncounts, and processing statistics. For a data-region migration job, returns the native\r\nmigration detail (source/target region and row counts) with no row-level process steps.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the job to retrieve details for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Job.Dto.JobDetailResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/lookups/{typeId}": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves lookup values for a specific lookup type. Use the /codetypes endpoint to discover available type IDs (e.g., 21 for languages, 24 for scenario categories).",
        "parameters": [
          {
            "name": "typeId",
            "in": "path",
            "description": "The numeric identifier of the lookup type (GenericCodeTypeId) whose values should be returned.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Lookup.Dto.LookupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/lookups": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves lookup values for multiple lookup types in a single request. Use this for batch-loading dropdowns or filter options on the client side.",
        "requestBody": {
          "description": "A request containing a list of lookup type IDs to retrieve.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Lookup.LookupRequest"
              },
              "example": {"typeName":"Language","typeIdList":[21]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Lookup.LookupRequest"
              },
              "example": {"typeName":"Language","typeIdList":[21]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Lookup.LookupRequest"
              },
              "example": {"typeName":"Language","typeIdList":[21]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Lookup.LookupRequest"
              },
              "example": {"typeName":"Language","typeIdList":[21]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Lookup.Dto.LookupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/codetypes": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves the full list of generic code types (lookup categories). Each code type has an ID that can be used with the /lookups/{typeId} endpoint to fetch its values.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Lookup.Dto.GenericCodeTypeDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/languages": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves the list of supported languages in the platform. Used for localization settings, content translation, and language-specific template selection.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Lookup.Dto.LanguageDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/lookups/licenses": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves the available license tiers and their associated feature modules. Useful for displaying plan comparison or checking feature availability.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Lookup.Dto.License, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/lookups/phishing-scenario-roles": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves the available phishing scenario roles as a lookup list. These roles define the sender persona used in phishing simulation campaigns.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Lookup.Dto.LookupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/lookups/country-timezones": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves country-to-timezone mappings. Returns a list of countries with their associated timezone information, used for scheduling and localization.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Lookup.Dto.CountryTimeZoneInfoDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notifications/render": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Returns pre-rendered HTML content for a Teams notification using a signed render token.\r\nCalled by Keepnet.html when the user opens a Teams notification (useRenderedHtml flow).\r\nThe token is an opaque, tamper-proof value produced by the server at notification send time\r\nand contains the notification log ID, target user ID and tenant ID.",
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "description": "Signed render token received from the Teams deep link context.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.ApplicationService.Notifications.NotificationRenderResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/notifications/{enrollmentId}/search": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Searches notification activity logs for a specific enrollment, with filtering and pagination. Returns delivery status, timestamps, and channel information for each notification sent.",
        "parameters": [
          {
            "name": "enrollmentId",
            "in": "path",
            "description": "The enrollment identifier to scope the notification log search to.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Search criteria including pagination parameters and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Notifications.SearchNotificationActivityLogRequest"
              },
              "example": {"companyId":0,"enrollmentId":"Rn5Wq8xK3mLp","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"status":"Success","type":"TeamsTrainingActivity","pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Notifications.SearchNotificationActivityLogRequest"
              },
              "example": {"companyId":0,"enrollmentId":"Rn5Wq8xK3mLp","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"status":"Success","type":"TeamsTrainingActivity","pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Notifications.SearchNotificationActivityLogRequest"
              },
              "example": {"companyId":0,"enrollmentId":"Rn5Wq8xK3mLp","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"status":"Success","type":"TeamsTrainingActivity","pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Notifications.SearchNotificationActivityLogRequest"
              },
              "example": {"companyId":0,"enrollmentId":"Rn5Wq8xK3mLp","filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"status":"Success","type":"TeamsTrainingActivity","pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.ApplicationService.Notifications.NotificationActivityLogDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-info/version": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves the current API assembly version. Use this endpoint for health checks or to verify the deployed release version.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-info/summary": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Retrieves a combined system summary including API version, company license status, and company details. Useful for dashboard initialization and system health overview.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.DistributedService.Rest.Models.SystemInfo.SystemInfoSummaryData, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/tags/search": {
      "post": {
        "tags": [
          "System"
        ],
        "summary": "Searches tags with filtering and pagination. Tags are used to categorize and organize platform entities such as campaigns, templates, and users.",
        "requestBody": {
          "description": "Search criteria including pagination parameters (page number, page size, sort order) and optional filter conditions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Tag.SearchTagRequest"
              },
              "example": {"filter":{"searchInputTextValue":"phishing","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":"phishing"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":5,"orderBy":"Name","ascending":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Tag.SearchTagRequest"
              },
              "example": {"filter":{"searchInputTextValue":"phishing","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":"phishing"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":5,"orderBy":"Name","ascending":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Tag.SearchTagRequest"
              },
              "example": {"filter":{"searchInputTextValue":"phishing","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":"phishing"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":5,"orderBy":"Name","ascending":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Tag.SearchTagRequest"
              },
              "example": {"filter":{"searchInputTextValue":"phishing","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Name","operator":"contains","value":"phishing"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":5,"orderBy":"Name","ascending":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Tag.Dto.SearchTagDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/timezone/timezones": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Returns the list of all supported system timezones. Used when configuring campaign schedules, user preferences, or company-level timezone settings.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.TimeZone.Dto.GetTimeZonesServiceResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/permissions/all": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the complete list of all available system permissions that can be assigned to roles for access control.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.SystemPermission.Dto.GetSystemPermissionDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/roles/{resourceId}": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the details of a specific system role by its unique resource identifier, including assigned permissions.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the system role to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SystemRole.Dto.GetSystemRoleDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Management"
        ],
        "summary": "Updates the properties and permission set of an existing system role identified by its resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the system role to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated role data including name and permissions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemRole.UpdateSystemRoleRequest"
              },
              "example": {"name":"Senior Campaign Manager","description":"Can create, manage, and approve phishing simulation campaigns","permissionResourceIdList":["Pm8Kn4vR2wLx","Pm9Wp5nR3xKv","Pm2Rn6mK4wLx"],"availableForRequests":[{"type":"Company","resourceId":"Hs7Kp2mR4xLn"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemRole.UpdateSystemRoleRequest"
              },
              "example": {"name":"Senior Campaign Manager","description":"Can create, manage, and approve phishing simulation campaigns","permissionResourceIdList":["Pm8Kn4vR2wLx","Pm9Wp5nR3xKv","Pm2Rn6mK4wLx"],"availableForRequests":[{"type":"Company","resourceId":"Hs7Kp2mR4xLn"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemRole.UpdateSystemRoleRequest"
              },
              "example": {"name":"Senior Campaign Manager","description":"Can create, manage, and approve phishing simulation campaigns","permissionResourceIdList":["Pm8Kn4vR2wLx","Pm9Wp5nR3xKv","Pm2Rn6mK4wLx"],"availableForRequests":[{"type":"Company","resourceId":"Hs7Kp2mR4xLn"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemRole.UpdateSystemRoleRequest"
              },
              "example": {"name":"Senior Campaign Manager","description":"Can create, manage, and approve phishing simulation campaigns","permissionResourceIdList":["Pm8Kn4vR2wLx","Pm9Wp5nR3xKv","Pm2Rn6mK4wLx"],"availableForRequests":[{"type":"Company","resourceId":"Hs7Kp2mR4xLn"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User Management"
        ],
        "summary": "Permanently deletes a system role by its resource identifier. Users assigned to this role will lose its permissions.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the system role to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/roles": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Creates a new system role with the specified name and permission set for role-based access control.",
        "requestBody": {
          "description": "The role creation payload including role name and associated permissions.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemRole.CreateSystemRoleRequest"
              },
              "example": {"name":"Campaign Manager","description":"Can create and manage phishing simulation campaigns","permissionResourceIdList":["Pm8Kn4vR2wLx","Pm9Wp5nR3xKv"],"availableForRequests":[{"type":"MyCompanyOnly","resourceId":"Hs7Kp2mR4xLn"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemRole.CreateSystemRoleRequest"
              },
              "example": {"name":"Campaign Manager","description":"Can create and manage phishing simulation campaigns","permissionResourceIdList":["Pm8Kn4vR2wLx","Pm9Wp5nR3xKv"],"availableForRequests":[{"type":"MyCompanyOnly","resourceId":"Hs7Kp2mR4xLn"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemRole.CreateSystemRoleRequest"
              },
              "example": {"name":"Campaign Manager","description":"Can create and manage phishing simulation campaigns","permissionResourceIdList":["Pm8Kn4vR2wLx","Pm9Wp5nR3xKv"],"availableForRequests":[{"type":"MyCompanyOnly","resourceId":"Hs7Kp2mR4xLn"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemRole.CreateSystemRoleRequest"
              },
              "example": {"name":"Campaign Manager","description":"Can create and manage phishing simulation campaigns","permissionResourceIdList":["Pm8Kn4vR2wLx","Pm9Wp5nR3xKv"],"availableForRequests":[{"type":"MyCompanyOnly","resourceId":"Hs7Kp2mR4xLn"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves all system roles defined for the current company as a flat list without pagination.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.SystemRole.Dto.SystemRoleDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/roles/search": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Searches and returns a paginated list of system roles matching the specified filter and sort criteria.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemRole.SearchSystemRoleRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"RoleName","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemRole.SearchSystemRoleRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"RoleName","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemRole.SearchSystemRoleRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"RoleName","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemRole.SearchSystemRoleRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"RoleName","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SystemRole.Dto.SystemRoleSearchDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/roleswithavailable": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves all system roles for the current company along with their availability status for assignment.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.SystemRole.Dto.SystemRoleDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Creates a new system user (administrator) account in the current company with the specified role and permissions.",
        "requestBody": {
          "description": "The system user creation payload including email, name, role, and initial settings.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.CreateSystemUserRequest"
              },
              "example": {"firstName":"John","lastName":"Doe","email":"john.doe@acme.com","phoneNumber":"+14155551234","statusId":1,"roleResourceIdList":["Rl8Kp4nR6mWx"],"companyResourceId":"Hs7Kp2mR4xLn","bypassSsoRedirect":false,"bypassMfa":false,"bypassIpRestriction":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.CreateSystemUserRequest"
              },
              "example": {"firstName":"John","lastName":"Doe","email":"john.doe@acme.com","phoneNumber":"+14155551234","statusId":1,"roleResourceIdList":["Rl8Kp4nR6mWx"],"companyResourceId":"Hs7Kp2mR4xLn","bypassSsoRedirect":false,"bypassMfa":false,"bypassIpRestriction":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.CreateSystemUserRequest"
              },
              "example": {"firstName":"John","lastName":"Doe","email":"john.doe@acme.com","phoneNumber":"+14155551234","statusId":1,"roleResourceIdList":["Rl8Kp4nR6mWx"],"companyResourceId":"Hs7Kp2mR4xLn","bypassSsoRedirect":false,"bypassMfa":false,"bypassIpRestriction":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.CreateSystemUserRequest"
              },
              "example": {"firstName":"John","lastName":"Doe","email":"john.doe@acme.com","phoneNumber":"+14155551234","statusId":1,"roleResourceIdList":["Rl8Kp4nR6mWx"],"companyResourceId":"Hs7Kp2mR4xLn","bypassSsoRedirect":false,"bypassMfa":false,"bypassIpRestriction":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/{resourceId}": {
      "put": {
        "tags": [
          "User Management"
        ],
        "summary": "Updates the properties of an existing system user, such as name, email, role, and notification preferences.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the system user to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated system user data.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.UpdateSystemUserRequest"
              },
              "example": {"firstName":"John","lastName":"Doe","email":"john.doe@acme.com","phoneNumber":"+14155551234","statusId":1,"roleResourceIdList":["Rl8Kp4nR6mWx","Rl9Wp5vR7nKx"],"bypassSsoRedirect":false,"bypassMfa":false,"bypassIpRestriction":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.UpdateSystemUserRequest"
              },
              "example": {"firstName":"John","lastName":"Doe","email":"john.doe@acme.com","phoneNumber":"+14155551234","statusId":1,"roleResourceIdList":["Rl8Kp4nR6mWx","Rl9Wp5vR7nKx"],"bypassSsoRedirect":false,"bypassMfa":false,"bypassIpRestriction":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.UpdateSystemUserRequest"
              },
              "example": {"firstName":"John","lastName":"Doe","email":"john.doe@acme.com","phoneNumber":"+14155551234","statusId":1,"roleResourceIdList":["Rl8Kp4nR6mWx","Rl9Wp5vR7nKx"],"bypassSsoRedirect":false,"bypassMfa":false,"bypassIpRestriction":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.UpdateSystemUserRequest"
              },
              "example": {"firstName":"John","lastName":"Doe","email":"john.doe@acme.com","phoneNumber":"+14155551234","statusId":1,"roleResourceIdList":["Rl8Kp4nR6mWx","Rl9Wp5vR7nKx"],"bypassSsoRedirect":false,"bypassMfa":false,"bypassIpRestriction":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User Management"
        ],
        "summary": "Permanently deletes a system user account by its resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the system user to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/{resourceId}/send-information-email": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Sends an information email to a system user containing their account details and login instructions.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the system user to send the information email to.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/{resourceId}/role": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Assigns a system user to a specific role, granting them the permissions associated with that role.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the system user to assign the role to.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The role assignment payload containing the role resource identifier.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.AddToRoleRequest"
              },
              "example": {"userResourceId":"Hs7Kp2mR4xLn","roleResourceId":"Rt6Wn3xK8mLp"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.AddToRoleRequest"
              },
              "example": {"userResourceId":"Hs7Kp2mR4xLn","roleResourceId":"Rt6Wn3xK8mLp"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.AddToRoleRequest"
              },
              "example": {"userResourceId":"Hs7Kp2mR4xLn","roleResourceId":"Rt6Wn3xK8mLp"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.AddToRoleRequest"
              },
              "example": {"userResourceId":"Hs7Kp2mR4xLn","roleResourceId":"Rt6Wn3xK8mLp"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/{userResourceId}/role/{roleResourceId}": {
      "delete": {
        "tags": [
          "User Management"
        ],
        "summary": "Removes a system user from a specific role, revoking the permissions associated with that role.",
        "parameters": [
          {
            "name": "userResourceId",
            "in": "path",
            "description": "The unique resource identifier of the system user to remove from the role.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "roleResourceId",
            "in": "path",
            "description": "The unique resource identifier of the role to remove the user from.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/change-password": {
      "put": {
        "tags": [
          "User Management"
        ],
        "summary": "Changes the password of the currently authenticated system user after verifying the current password.",
        "requestBody": {
          "description": "The password change payload containing the current password and the new password.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ChangePasswordRequest"
              },
              "example": {"currentPassword":"OldP@ssw0rd!","newPassword":"NewP@ssw0rd!2026","confirmNewPassword":"NewP@ssw0rd!2026"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ChangePasswordRequest"
              },
              "example": {"currentPassword":"OldP@ssw0rd!","newPassword":"NewP@ssw0rd!2026","confirmNewPassword":"NewP@ssw0rd!2026"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ChangePasswordRequest"
              },
              "example": {"currentPassword":"OldP@ssw0rd!","newPassword":"NewP@ssw0rd!2026","confirmNewPassword":"NewP@ssw0rd!2026"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ChangePasswordRequest"
              },
              "example": {"currentPassword":"OldP@ssw0rd!","newPassword":"NewP@ssw0rd!2026","confirmNewPassword":"NewP@ssw0rd!2026"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/search": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Searches and returns a paginated list of system users matching the specified filter and sort criteria.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SearchSystemUserRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SearchSystemUserRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SearchSystemUserRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SearchSystemUserRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserSearchDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/search/export": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Exports the list of system users matching the specified filter criteria to a downloadable file format.",
        "requestBody": {
          "description": "The export request containing pagination, filter, export type (CSV/Excel), and whether to export all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ExportSystemUserRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ExportSystemUserRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ExportSystemUserRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ExportSystemUserRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":20,"orderBy":"CreateTime","ascending":false,"reportAllPages":true,"exportType":"Excel"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/system-users/send-reset-password-link": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Sends a password reset link to the specified system user's email address. This endpoint is publicly accessible.",
        "requestBody": {
          "description": "The request containing the email address of the system user who needs a password reset.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SendPasswordResetLinkRequest"
              },
              "example": {"email":"john.doe@acme.com"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SendPasswordResetLinkRequest"
              },
              "example": {"email":"john.doe@acme.com"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SendPasswordResetLinkRequest"
              },
              "example": {"email":"john.doe@acme.com"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SendPasswordResetLinkRequest"
              },
              "example": {"email":"john.doe@acme.com"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/reset-password": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Resets a system user's password using a previously issued reset token. This endpoint is publicly accessible.",
        "requestBody": {
          "description": "The request containing the reset token and the new password.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ResetPasswordRequest"
              },
              "example": {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp...","newPassword":"N3wSecureP@ss!","confirmNewPassword":"N3wSecureP@ss!"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ResetPasswordRequest"
              },
              "example": {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp...","newPassword":"N3wSecureP@ss!","confirmNewPassword":"N3wSecureP@ss!"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ResetPasswordRequest"
              },
              "example": {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp...","newPassword":"N3wSecureP@ss!","confirmNewPassword":"N3wSecureP@ss!"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ResetPasswordRequest"
              },
              "example": {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp...","newPassword":"N3wSecureP@ss!","confirmNewPassword":"N3wSecureP@ss!"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/create-password": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Creates an initial password for a new system user account using a one-time setup token. This endpoint is publicly accessible.",
        "requestBody": {
          "description": "The request containing the setup token and the desired password.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.CreatePasswordRequest"
              },
              "example": {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp...","newPassword":"NewP@ssw0rd!2026","confirmNewPassword":"NewP@ssw0rd!2026"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.CreatePasswordRequest"
              },
              "example": {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp...","newPassword":"NewP@ssw0rd!2026","confirmNewPassword":"NewP@ssw0rd!2026"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.CreatePasswordRequest"
              },
              "example": {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp...","newPassword":"NewP@ssw0rd!2026","confirmNewPassword":"NewP@ssw0rd!2026"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.CreatePasswordRequest"
              },
              "example": {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp...","newPassword":"NewP@ssw0rd!2026","confirmNewPassword":"NewP@ssw0rd!2026"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.CreatePasswordServiceResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/notification-setting": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the notification setting configuration for the currently authenticated user for a given notification type.",
        "requestBody": {
          "description": "The request specifying the notification type to retrieve settings for.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.GetNotificationSettingRequest"
              },
              "example": {"entityResourceId":"En5Kp2mR7xLv","typeId":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.GetNotificationSettingRequest"
              },
              "example": {"entityResourceId":"En5Kp2mR7xLv","typeId":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.GetNotificationSettingRequest"
              },
              "example": {"entityResourceId":"En5Kp2mR7xLv","typeId":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.GetNotificationSettingRequest"
              },
              "example": {"entityResourceId":"En5Kp2mR7xLv","typeId":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserNotificationSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Management"
        ],
        "summary": "Updates the notification setting configuration for the currently authenticated user for a given notification type.",
        "requestBody": {
          "description": "The request containing the notification type and the updated preference (enabled/disabled).",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetNotificationSettingRequest"
              },
              "example": {"entityResourceId":"Hs7Kp2mR4xLn","typeId":1,"isSMSEnabled":false,"isEmailEnabled":true,"isDashboardEnabled":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetNotificationSettingRequest"
              },
              "example": {"entityResourceId":"Hs7Kp2mR4xLn","typeId":1,"isSMSEnabled":false,"isEmailEnabled":true,"isDashboardEnabled":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetNotificationSettingRequest"
              },
              "example": {"entityResourceId":"Hs7Kp2mR4xLn","typeId":1,"isSMSEnabled":false,"isEmailEnabled":true,"isDashboardEnabled":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetNotificationSettingRequest"
              },
              "example": {"entityResourceId":"Hs7Kp2mR4xLn","typeId":1,"isSMSEnabled":false,"isEmailEnabled":true,"isDashboardEnabled":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/mfa": {
      "put": {
        "tags": [
          "User Management"
        ],
        "summary": "Enables or disables multifactor authentication (MFA) for a system user after verifying the TOTP code. This endpoint is publicly accessible.",
        "requestBody": {
          "description": "The request containing the MFA configuration and verification code.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetMfaRequest"
              },
              "example": {"email":"john.doe@acme.com","password":"MyP@ssw0rd!","code":"482957"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetMfaRequest"
              },
              "example": {"email":"john.doe@acme.com","password":"MyP@ssw0rd!","code":"482957"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetMfaRequest"
              },
              "example": {"email":"john.doe@acme.com","password":"MyP@ssw0rd!","code":"482957"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetMfaRequest"
              },
              "example": {"email":"john.doe@acme.com","password":"MyP@ssw0rd!","code":"482957"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the MFA setup QR code and secret key for a system user by verifying their credentials. This endpoint is publicly accessible.",
        "requestBody": {
          "description": "The request containing the user's email and password for credential verification.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.GetMfaRequest"
              },
              "example": {"email":"admin@example.com","password":"********"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.GetMfaRequest"
              },
              "example": {"email":"admin@example.com","password":"********"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.GetMfaRequest"
              },
              "example": {"email":"admin@example.com","password":"********"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.GetMfaRequest"
              },
              "example": {"email":"admin@example.com","password":"********"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserMfaDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/mfa/disable": {
      "put": {
        "tags": [
          "User Management"
        ],
        "summary": "Temporarily disables multifactor authentication for a specific system user, typically used by administrators for account recovery.",
        "requestBody": {
          "description": "The request containing the system user identifier whose MFA should be disabled.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.DisableMfaRequest"
              },
              "example": {"code":"482957"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.DisableMfaRequest"
              },
              "example": {"code":"482957"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.DisableMfaRequest"
              },
              "example": {"code":"482957"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.DisableMfaRequest"
              },
              "example": {"code":"482957"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/mfa/setup": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the MFA setup QR code and secret key for the currently authenticated system user.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserMfaDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/mfa/resync": {
      "put": {
        "tags": [
          "User Management"
        ],
        "summary": "Resynchronizes the MFA time-based counter for a system user by verifying two consecutive TOTP codes.",
        "requestBody": {
          "description": "The request containing two consecutive TOTP codes for time synchronization.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ResyncMfaRequest"
              },
              "example": {"code":"173926"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ResyncMfaRequest"
              },
              "example": {"code":"173926"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ResyncMfaRequest"
              },
              "example": {"code":"173926"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.ResyncMfaRequest"
              },
              "example": {"code":"173926"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/mfa/send-recovery-sms": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Sends an SMS with a recovery code to the system user's registered phone number for MFA reset. This endpoint is publicly accessible.",
        "requestBody": {
          "description": "The request containing the user's credentials for identity verification before sending the SMS.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SendMfaRecoverySmsRequest"
              },
              "example": {"email":"john.doe@acme.com","password":"MyP@ssw0rd!"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SendMfaRecoverySmsRequest"
              },
              "example": {"email":"john.doe@acme.com","password":"MyP@ssw0rd!"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SendMfaRecoverySmsRequest"
              },
              "example": {"email":"john.doe@acme.com","password":"MyP@ssw0rd!"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SendMfaRecoverySmsRequest"
              },
              "example": {"email":"john.doe@acme.com","password":"MyP@ssw0rd!"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserMfaDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/mfa/status": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the current MFA enrollment status for the authenticated system user, indicating whether MFA is enabled and configured.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserMfaDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/settings": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the personal settings of the currently authenticated system user, such as language and timezone preferences.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserSettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Management"
        ],
        "summary": "Updates the personal settings of the currently authenticated system user, such as language and timezone preferences.",
        "requestBody": {
          "description": "The request containing the updated settings values.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetSystemUserSettingsRequest"
              },
              "example": {"timeZoneId":"Europe/Istanbul","dateFormat":"dd/MM/yyyy","timeFormat":"HH:mm"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetSystemUserSettingsRequest"
              },
              "example": {"timeZoneId":"Europe/Istanbul","dateFormat":"dd/MM/yyyy","timeFormat":"HH:mm"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetSystemUserSettingsRequest"
              },
              "example": {"timeZoneId":"Europe/Istanbul","dateFormat":"dd/MM/yyyy","timeFormat":"HH:mm"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetSystemUserSettingsRequest"
              },
              "example": {"timeZoneId":"Europe/Istanbul","dateFormat":"dd/MM/yyyy","timeFormat":"HH:mm"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/bulk-delete": {
      "delete": {
        "tags": [
          "User Management"
        ],
        "summary": "Deletes multiple system users in a single operation based on selected resource identifiers.",
        "requestBody": {
          "description": "The bulk delete request containing the list of system user resource identifiers to delete.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SystemUserDeleteRequest"
              },
              "example": {"items":["Us4Rm8vT2nKp"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SystemUserDeleteRequest"
              },
              "example": {"items":["Us4Rm8vT2nKp"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SystemUserDeleteRequest"
              },
              "example": {"items":["Us4Rm8vT2nKp"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemUser.SystemUserDeleteRequest"
              },
              "example": {"items":["Us4Rm8vT2nKp"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/system-users/session-model": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the current session model containing the authenticated user's profile, company, role, and permission details.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Common.Domain.Entity.SessionModel, KeepnetLabs.Common.Domain, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-groups": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves all target groups belonging to the current company as a flat list.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Creates a new target group in the current company for organizing target users.",
        "requestBody": {
          "description": "The target group creation payload including name and optional description.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.CreateTargetGroupRequest"
              },
              "example": {"name":"Engineering Team","priority":"Medium"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.CreateTargetGroupRequest"
              },
              "example": {"name":"Engineering Team","priority":"Medium"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.CreateTargetGroupRequest"
              },
              "example": {"name":"Engineering Team","priority":"Medium"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.CreateTargetGroupRequest"
              },
              "example": {"name":"Engineering Team","priority":"Medium"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-groups/{resourceId}": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the details of a specific target group by its unique resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the target group to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Management"
        ],
        "summary": "Updates the properties of an existing target group identified by its resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the target group to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated target group data including name and description.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.UpdateTargetGroupRequest"
              },
              "example": {"name":"Engineering Team - Updated","priority":"High","isActive":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.UpdateTargetGroupRequest"
              },
              "example": {"name":"Engineering Team - Updated","priority":"High","isActive":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.UpdateTargetGroupRequest"
              },
              "example": {"name":"Engineering Team - Updated","priority":"High","isActive":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.UpdateTargetGroupRequest"
              },
              "example": {"name":"Engineering Team - Updated","priority":"High","isActive":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User Management"
        ],
        "summary": "Permanently deletes a target group by its resource identifier. Users in the group are not deleted.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the target group to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-groups/upload": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Uploads a file containing a list of users to be added to a target group during bulk import.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "File": {
                    "type": "string",
                    "description": "File containing the list of users to import.",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "File": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TransactionDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-groups/upload/{transactionId}": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the summary and content of a previously uploaded user list file by its transaction identifier.",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The unique transaction identifier returned from the upload step.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUploadedFileDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-groups/upload/{transactionId}/search": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the data from a specific sheet within a previously uploaded Excel file by transaction and sheet name.",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The unique transaction identifier returned from the upload step.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sheetName",
            "in": "query",
            "description": "The name of the Excel sheet to retrieve data from.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUploadedFileDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-groups/search-name": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Searches for target groups by name and returns a paginated result list.",
        "requestBody": {
          "description": "The request containing the group name to search for, along with pagination and sorting parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.GetTargetGroupByNameRequest"
              },
              "example": {"groupName":"Engineering","pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.GetTargetGroupByNameRequest"
              },
              "example": {"groupName":"Engineering","pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.GetTargetGroupByNameRequest"
              },
              "example": {"groupName":"Engineering","pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.GetTargetGroupByNameRequest"
              },
              "example": {"groupName":"Engineering","pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-groups/search": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Searches and returns a paginated list of target groups matching the specified filter and sort criteria.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, filter, and optional flags for including user resource IDs and system-generated groups.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true,"selectTargetUserResourceIds":"","systemGeneratedGroups":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true,"selectTargetUserResourceIds":"","systemGeneratedGroups":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true,"selectTargetUserResourceIds":"","systemGeneratedGroups":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true,"selectTargetUserResourceIds":"","systemGeneratedGroups":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-groups/search/all": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Searches and returns a paginated list of target groups for the current company and all its child companies.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true,"selectTargetUserResourceIds":"","systemGeneratedGroups":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true,"selectTargetUserResourceIds":"","systemGeneratedGroups":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true,"selectTargetUserResourceIds":"","systemGeneratedGroups":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true,"selectTargetUserResourceIds":"","systemGeneratedGroups":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchForOwnerCompanyView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-groups/search/current-company": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Searches and returns a paginated list of target groups scoped to the current company only (excluding child companies).",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true,"selectTargetUserResourceIds":"","systemGeneratedGroups":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true,"selectTargetUserResourceIds":"","systemGeneratedGroups":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true,"selectTargetUserResourceIds":"","systemGeneratedGroups":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"eq","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true,"selectTargetUserResourceIds":"","systemGeneratedGroups":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchCompanyModel, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-groups/search/export": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Exports the list of target groups matching the specified filter criteria to a downloadable file format.",
        "requestBody": {
          "description": "The export request containing pagination, filter, export type (CSV/Excel), and whether to export all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/target-groups/{resourceId}/users": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Searches and returns a paginated list of target users within a specific target group, with optional exclusion filter.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the target group whose users are being queried.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination, sorting, filter, and an option to exclude current group members.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupUsersSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true,"excludeGroupUsers":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupUsersSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true,"excludeGroupUsers":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupUsersSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true,"excludeGroupUsers":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupUsersSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true,"excludeGroupUsers":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetUser.Search.TargetUserSearchView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User Management"
        ],
        "summary": "Removes one or more target users from a specific target group. The users themselves are not deleted.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the target group to remove users from.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The request containing the list of target user resource IDs to remove from the group.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.DeleteTargetGroupUsersRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp3nR8wLx","Tu6Wn4mR9vKx"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.DeleteTargetGroupUsersRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp3nR8wLx","Tu6Wn4mR9vKx"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.DeleteTargetGroupUsersRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp3nR8wLx","Tu6Wn4mR9vKx"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.DeleteTargetGroupUsersRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp3nR8wLx","Tu6Wn4mR9vKx"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-groups/{resourceId}/users/export": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Exports the list of target users within a specific target group to a downloadable file format.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the target group whose users are being exported.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The export request containing pagination, filter, export type, and an option to exclude current group members.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.TargetGroupUsersExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true,"reportAllPages":true,"exportType":"Excel","excludeGroupUsers":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.TargetGroupUsersExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true,"reportAllPages":true,"exportType":"Excel","excludeGroupUsers":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.TargetGroupUsersExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true,"reportAllPages":true,"exportType":"Excel","excludeGroupUsers":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.TargetGroupUsersExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true,"reportAllPages":true,"exportType":"Excel","excludeGroupUsers":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/target-groups/users": {
      "put": {
        "tags": [
          "User Management"
        ],
        "summary": "Assigns target users to one or more target groups, supporting both individual selection and select-all with exclusion filters.",
        "requestBody": {
          "description": "The request containing target user resource IDs, target group resource IDs, and optional select-all configuration.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.CreateTargetGroupUsersRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp3nR8wLx","Tu6Wn4mR9vKx"],"targetGroupResourceIds":["Tg5Rp2nK8wLx"],"selectAll":false,"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"excludedResourceIdList":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.CreateTargetGroupUsersRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp3nR8wLx","Tu6Wn4mR9vKx"],"targetGroupResourceIds":["Tg5Rp2nK8wLx"],"selectAll":false,"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"excludedResourceIdList":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.CreateTargetGroupUsersRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp3nR8wLx","Tu6Wn4mR9vKx"],"targetGroupResourceIds":["Tg5Rp2nK8wLx"],"selectAll":false,"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"excludedResourceIdList":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.CreateTargetGroupUsersRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp3nR8wLx","Tu6Wn4mR9vKx"],"targetGroupResourceIds":["Tg5Rp2nK8wLx"],"selectAll":false,"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"excludedResourceIdList":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-groups/targetgroupusercountdetailext": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves a detailed user count breakdown per target group with extended filters including scenario and language preferences.",
        "requestBody": {
          "description": "The request containing target group resource IDs, optional scenario resource IDs, language preference, and category filter.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.GetTargetGroupUserCountDetailRequest"
              },
              "example": {"targetGroupResourceIds":["Tg5Rp2nK8wLx","Tg6Wn3pK9vLx"],"scenarioResourceIds":["Sn3Kp8mR5wLx"],"sendUserPreferredLanguage":"SendInManually"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.GetTargetGroupUserCountDetailRequest"
              },
              "example": {"targetGroupResourceIds":["Tg5Rp2nK8wLx","Tg6Wn3pK9vLx"],"scenarioResourceIds":["Sn3Kp8mR5wLx"],"sendUserPreferredLanguage":"SendInManually"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.GetTargetGroupUserCountDetailRequest"
              },
              "example": {"targetGroupResourceIds":["Tg5Rp2nK8wLx","Tg6Wn3pK9vLx"],"scenarioResourceIds":["Sn3Kp8mR5wLx"],"sendUserPreferredLanguage":"SendInManually"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.GetTargetGroupUserCountDetailRequest"
              },
              "example": {"targetGroupResourceIds":["Tg5Rp2nK8wLx","Tg6Wn3pK9vLx"],"scenarioResourceIds":["Sn3Kp8mR5wLx"],"sendUserPreferredLanguage":"SendInManually"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUserCountDetailDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-groups/targetgroupusercountdetail": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the user count breakdown per target group by their resource identifiers.",
        "requestBody": {
          "description": "A list of target group resource identifiers to retrieve user count details for.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUserCountDetailDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/{resourceId}": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the details of an existing target user by their unique resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.TargetUser.Core.Dto.TargetUserDto, KeepnetLabs.TargetUser.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Management"
        ],
        "summary": "Updates the properties of an existing target user identified by their resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated target user data including name, email, department, and custom fields.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.UpdateTargetUserRequest"
              },
              "example": {"email":"jane.smith@acme.com","firstName":"Jane","lastName":"Smith","department":"Security","priority":"High","isActive":true,"customFields":[{"resourceId":"Cf8Rn5vK2mWx","name":"EmployeeId","dataType":"string","value":"EMP-10042"}],"phoneNumber":"+14155559876","targetGroupResourceIds":["Tg5Rp2nK8wLx","Tg6Wn3pK9vLx"],"timeZoneId":"America/New_York","preferredLanguageId":"0","managerFirstName":"Robert","managerLastName":"Johnson","managerEmail":"robert.johnson@acme.com"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.UpdateTargetUserRequest"
              },
              "example": {"email":"jane.smith@acme.com","firstName":"Jane","lastName":"Smith","department":"Security","priority":"High","isActive":true,"customFields":[{"resourceId":"Cf8Rn5vK2mWx","name":"EmployeeId","dataType":"string","value":"EMP-10042"}],"phoneNumber":"+14155559876","targetGroupResourceIds":["Tg5Rp2nK8wLx","Tg6Wn3pK9vLx"],"timeZoneId":"America/New_York","preferredLanguageId":"0","managerFirstName":"Robert","managerLastName":"Johnson","managerEmail":"robert.johnson@acme.com"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.UpdateTargetUserRequest"
              },
              "example": {"email":"jane.smith@acme.com","firstName":"Jane","lastName":"Smith","department":"Security","priority":"High","isActive":true,"customFields":[{"resourceId":"Cf8Rn5vK2mWx","name":"EmployeeId","dataType":"string","value":"EMP-10042"}],"phoneNumber":"+14155559876","targetGroupResourceIds":["Tg5Rp2nK8wLx","Tg6Wn3pK9vLx"],"timeZoneId":"America/New_York","preferredLanguageId":"0","managerFirstName":"Robert","managerLastName":"Johnson","managerEmail":"robert.johnson@acme.com"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.UpdateTargetUserRequest"
              },
              "example": {"email":"jane.smith@acme.com","firstName":"Jane","lastName":"Smith","department":"Security","priority":"High","isActive":true,"customFields":[{"resourceId":"Cf8Rn5vK2mWx","name":"EmployeeId","dataType":"string","value":"EMP-10042"}],"phoneNumber":"+14155559876","targetGroupResourceIds":["Tg5Rp2nK8wLx","Tg6Wn3pK9vLx"],"timeZoneId":"America/New_York","preferredLanguageId":"0","managerFirstName":"Robert","managerLastName":"Johnson","managerEmail":"robert.johnson@acme.com"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User Management"
        ],
        "summary": "Permanently deletes a target user from the current company by their resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Creates a new target user in the current company and optionally assigns them to one or more target groups.",
        "requestBody": {
          "description": "The target user creation payload including name, email, and optional target group resource IDs.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.CreateTargetUserRequest"
              },
              "example": {"email":"jane.smith@acme.com","firstName":"Jane","lastName":"Smith","department":"Engineering","priority":"Medium","isActive":true,"customFields":[{"resourceId":"Cf8Rn5vK2mWx","name":"EmployeeId","dataType":"string","value":"EMP-10042"}],"phoneNumber":"+14155559876","targetGroupResourceIds":["Tg5Rp2nK8wLx"],"timeZoneId":"America/New_York","preferredLanguageId":"0","managerFirstName":"Robert","managerLastName":"Johnson","managerEmail":"robert.johnson@acme.com"}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.CreateTargetUserRequest"
              },
              "example": {"email":"jane.smith@acme.com","firstName":"Jane","lastName":"Smith","department":"Engineering","priority":"Medium","isActive":true,"customFields":[{"resourceId":"Cf8Rn5vK2mWx","name":"EmployeeId","dataType":"string","value":"EMP-10042"}],"phoneNumber":"+14155559876","targetGroupResourceIds":["Tg5Rp2nK8wLx"],"timeZoneId":"America/New_York","preferredLanguageId":"0","managerFirstName":"Robert","managerLastName":"Johnson","managerEmail":"robert.johnson@acme.com"}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.CreateTargetUserRequest"
              },
              "example": {"email":"jane.smith@acme.com","firstName":"Jane","lastName":"Smith","department":"Engineering","priority":"Medium","isActive":true,"customFields":[{"resourceId":"Cf8Rn5vK2mWx","name":"EmployeeId","dataType":"string","value":"EMP-10042"}],"phoneNumber":"+14155559876","targetGroupResourceIds":["Tg5Rp2nK8wLx"],"timeZoneId":"America/New_York","preferredLanguageId":"0","managerFirstName":"Robert","managerLastName":"Johnson","managerEmail":"robert.johnson@acme.com"}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.CreateTargetUserRequest"
              },
              "example": {"email":"jane.smith@acme.com","firstName":"Jane","lastName":"Smith","department":"Engineering","priority":"Medium","isActive":true,"customFields":[{"resourceId":"Cf8Rn5vK2mWx","name":"EmployeeId","dataType":"string","value":"EMP-10042"}],"phoneNumber":"+14155559876","targetGroupResourceIds":["Tg5Rp2nK8wLx"],"timeZoneId":"America/New_York","preferredLanguageId":"0","managerFirstName":"Robert","managerLastName":"Johnson","managerEmail":"robert.johnson@acme.com"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/search": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Searches and returns a paginated list of target users matching the specified filter and sort criteria.",
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.TargetUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"=","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true,"newVersion":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.TargetUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"=","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true,"newVersion":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.TargetUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"=","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true,"newVersion":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.TargetUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"IsActive","operator":"=","value":"true"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true,"newVersion":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetUser.Search.TargetUserSearchView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/count-summary": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Returns a count summary of target users broken down by status (active, inactive, deleted) and monthly active users.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Object, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/search/export": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Exports the list of target users matching the specified filter criteria to a downloadable file format.",
        "requestBody": {
          "description": "The export request containing pagination, filter, export type (CSV/Excel), and whether to export all pages.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/target-users/search-email": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Searches for target users by email address and returns a paginated result list.",
        "requestBody": {
          "description": "The request containing the email address to search for, along with pagination and sorting parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.GetTargetUserByEmailRequest"
              },
              "example": {"email":"jane.smith@acme.com","pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.GetTargetUserByEmailRequest"
              },
              "example": {"email":"jane.smith@acme.com","pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.GetTargetUserByEmailRequest"
              },
              "example": {"email":"jane.smith@acme.com","pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.GetTargetUserByEmailRequest"
              },
              "example": {"email":"jane.smith@acme.com","pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.TargetUser.Core.Dto.TargetUserDto, KeepnetLabs.TargetUser.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/example-file": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Downloads an example user list file that serves as a template for bulk target user import.",
        "requestBody": {
          "description": "The export request specifying the desired file format (CSV/Excel).",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/target-users/upload": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Uploads a file containing a list of target users for bulk import processing.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "File": {
                    "type": "string",
                    "description": "File containing the list of users to import.",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "File": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.TargetUser.Core.Dto.UploadFileDto, KeepnetLabs.TargetUser.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/upload/{transactionId}": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves a summary of a previously uploaded target user list file, including row counts and detected columns.",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The unique transaction identifier returned from the upload step.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.TargetUser.Core.Dto.TargetUserUploadedFileDto, KeepnetLabs.TargetUser.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/create-mapping": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Creates a field mapping job that maps columns in an uploaded file to target user fields for a given transaction.",
        "requestBody": {
          "description": "The mapping configuration specifying how file columns map to target user properties.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.CreateTargetUserFieldMappingRequest"
              },
              "example": {"transactionId":"txn-a1b2c3d4-e5f6-7890","targetGroupResourceIds":["Tg5Rp2nK8wLx"],"fieldMappings":[{"excelColumnName":"Email Address","fieldName":"Email"},{"excelColumnName":"Full Name","fieldName":"FirstName"}]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.CreateTargetUserFieldMappingRequest"
              },
              "example": {"transactionId":"txn-a1b2c3d4-e5f6-7890","targetGroupResourceIds":["Tg5Rp2nK8wLx"],"fieldMappings":[{"excelColumnName":"Email Address","fieldName":"Email"},{"excelColumnName":"Full Name","fieldName":"FirstName"}]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.CreateTargetUserFieldMappingRequest"
              },
              "example": {"transactionId":"txn-a1b2c3d4-e5f6-7890","targetGroupResourceIds":["Tg5Rp2nK8wLx"],"fieldMappings":[{"excelColumnName":"Email Address","fieldName":"Email"},{"excelColumnName":"Full Name","fieldName":"FirstName"}]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.CreateTargetUserFieldMappingRequest"
              },
              "example": {"transactionId":"txn-a1b2c3d4-e5f6-7890","targetGroupResourceIds":["Tg5Rp2nK8wLx"],"fieldMappings":[{"excelColumnName":"Email Address","fieldName":"Email"},{"excelColumnName":"Full Name","fieldName":"FirstName"}]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/mapping-job/{resourceId}": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the current status of a field mapping job to track its progress during bulk user import.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the mapping job.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/{transactionId}/search": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Searches and returns a paginated list of temporary target users staged for import within a given transaction.",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The transaction identifier from the upload step that groups the staged users.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TmpTargetUser.TmpTargetUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Email","operator":"Contains","value":"acme.com"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TmpTargetUser.TmpTargetUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Email","operator":"Contains","value":"acme.com"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TmpTargetUser.TmpTargetUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Email","operator":"Contains","value":"acme.com"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TmpTargetUser.TmpTargetUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"acme.com","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[{"fieldName":"Email","operator":"Contains","value":"acme.com"}],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"Email","ascending":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetUser.Dto.SearchTmpTargetUserServiceResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/{transactionId}/search/export": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Exports the list of temporary target users staged for import to a downloadable file format.",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The transaction identifier grouping the staged users to export.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The export request containing pagination, filter, and export type (CSV/Excel).",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[{"condition":"AND","filterItems":[],"filterGroups":[]},{"condition":"OR","filterItems":[],"filterGroups":[]}]},"pageNumber":1,"pageSize":25,"orderBy":"CreateTime","ascending":false,"reportAllPages":false,"exportType":"Excel","phishingTypeId":0,"tempalateType":0}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/target-users/{transactionId}/import": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Initiates the import of staged temporary target users into the system as permanent target users.",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The transaction identifier grouping the temporary users to import.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The import request specifying import options such as target group assignments.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TmpTargetUser.TmpTargetUserImportRequest"
              },
              "example": {"importType":"merge","selectedResourceIds":["Tu3Kp7mR4xLn","Tu9Lv2nQ8jHf"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TmpTargetUser.TmpTargetUserImportRequest"
              },
              "example": {"importType":"merge","selectedResourceIds":["Tu3Kp7mR4xLn","Tu9Lv2nQ8jHf"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TmpTargetUser.TmpTargetUserImportRequest"
              },
              "example": {"importType":"merge","selectedResourceIds":["Tu3Kp7mR4xLn","Tu9Lv2nQ8jHf"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TmpTargetUser.TmpTargetUserImportRequest"
              },
              "example": {"importType":"merge","selectedResourceIds":["Tu3Kp7mR4xLn","Tu9Lv2nQ8jHf"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/{resourceId}/groups": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Returns a paginated list of target groups that a specific target user belongs to.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the target user whose groups are being queried.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The search request containing pagination, sorting, and filter parameters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.SearchTargetGroupsByUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.SearchTargetGroupsByUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.SearchTargetGroupsByUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.SearchTargetGroupsByUserSearchRequest"
              },
              "example": {"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]},"pageNumber":1,"pageSize":25,"orderBy":"Name","ascending":true}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetUser.Search.TargetUserSearchView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/{transactionId}/update": {
      "put": {
        "tags": [
          "User Management"
        ],
        "summary": "Refreshes and returns a new transaction identifier for an ongoing bulk import session.",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The current transaction identifier to be updated.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.TargetUser.Core.Dto.TransactionIdDto, KeepnetLabs.TargetUser.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/bulk-delete": {
      "delete": {
        "tags": [
          "User Management"
        ],
        "summary": "Deletes multiple target users in a single operation based on selected items or a select-all filter.",
        "requestBody": {
          "description": "The bulk delete request containing selected resource IDs, excluded IDs, and optional select-all filter.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.TargetUserDeleteRequest"
              },
              "example": {"items":["a1b2c3d4-e5f6-7890-abcd-ef1234567890","b2c3d4e5-f6a7-8901-bcde-f12345678901"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.TargetUserDeleteRequest"
              },
              "example": {"items":["a1b2c3d4-e5f6-7890-abcd-ef1234567890","b2c3d4e5-f6a7-8901-bcde-f12345678901"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.TargetUserDeleteRequest"
              },
              "example": {"items":["a1b2c3d4-e5f6-7890-abcd-ef1234567890","b2c3d4e5-f6a7-8901-bcde-f12345678901"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUser.TargetUserDeleteRequest"
              },
              "example": {"items":["a1b2c3d4-e5f6-7890-abcd-ef1234567890","b2c3d4e5-f6a7-8901-bcde-f12345678901"],"selectAll":false,"excludedItems":[],"filter":{"searchInputTextValue":"","condition":"AND","filterGroups":[]}}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/scorm-email": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves a target user by their company ID and email address, used for SCORM awareness education integration.",
        "requestBody": {
          "description": "The request containing the company ID and email address to look up.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForScormRequest"
              },
              "example": {"email":"user@example.com","companyId":1}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForScormRequest"
              },
              "example": {"email":"user@example.com","companyId":1}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForScormRequest"
              },
              "example": {"email":"user@example.com","companyId":1}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForScormRequest"
              },
              "example": {"email":"user@example.com","companyId":1}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.TargetUser.Core.Dto.TargetUserDto, KeepnetLabs.TargetUser.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/enrollment-emails": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves a list of target users eligible for enrollment notification emails based on target group and campaign criteria.",
        "requestBody": {
          "description": "The request specifying target group resource IDs, condition types, and optional phishing campaign filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForEnrollmentRequest"
              },
              "example": {"withTargetGroups":true,"targetGroupResourceIds":["Tg8Wp3nQ5vXm"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForEnrollmentRequest"
              },
              "example": {"withTargetGroups":true,"targetGroupResourceIds":["Tg8Wp3nQ5vXm"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForEnrollmentRequest"
              },
              "example": {"withTargetGroups":true,"targetGroupResourceIds":["Tg8Wp3nQ5vXm"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForEnrollmentRequest"
              },
              "example": {"withTargetGroups":true,"targetGroupResourceIds":["Tg8Wp3nQ5vXm"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.TargetUserEmailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/enrollment-emails/count": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Returns the count of target users eligible for enrollment notification emails based on target group and campaign criteria.",
        "requestBody": {
          "description": "The request specifying target group resource IDs, condition types, and optional phishing campaign filters.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForEnrollmentRequest"
              },
              "example": {"withTargetGroups":true,"targetGroupResourceIds":["Tg8Wp3nQ5vXm"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForEnrollmentRequest"
              },
              "example": {"withTargetGroups":true,"targetGroupResourceIds":["Tg8Wp3nQ5vXm"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForEnrollmentRequest"
              },
              "example": {"withTargetGroups":true,"targetGroupResourceIds":["Tg8Wp3nQ5vXm"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForEnrollmentRequest"
              },
              "example": {"withTargetGroups":true,"targetGroupResourceIds":["Tg8Wp3nQ5vXm"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.TargetUserEmailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/by-resource-ids": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves a list of target users by their resource identifiers, excluding soft-deleted records.",
        "requestBody": {
          "description": "The request containing a list of target user resource identifiers to look up.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUsersByResourceIdsRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp2mR7xLv","Tu8Wp3nQ5vXm"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUsersByResourceIdsRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp2mR7xLv","Tu8Wp3nQ5vXm"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUsersByResourceIdsRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp2mR7xLv","Tu8Wp3nQ5vXm"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUsersByResourceIdsRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp2mR7xLv","Tu8Wp3nQ5vXm"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.TargetUserEmailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/target-users/include-deleted/by-resource-ids": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves a list of target users by their resource identifiers, including soft-deleted records.",
        "requestBody": {
          "description": "The request containing a list of target user resource identifiers to look up.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUsersByResourceIdsRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp2mR7xLv","Tu8Wp3nQ5vXm"]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUsersByResourceIdsRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp2mR7xLv","Tu8Wp3nQ5vXm"]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUsersByResourceIdsRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp2mR7xLv","Tu8Wp3nQ5vXm"]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUsersByResourceIdsRequest"
              },
              "example": {"targetUserResourceIds":["Tu5Kp2mR7xLv","Tu8Wp3nQ5vXm"]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.TargetUserEmailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/custom-fields/{resourceId}": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves the details of a specific target user custom field by its unique resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the custom field to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.TargetUserCustomField.Dto.TargetUserCustomFieldDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Management"
        ],
        "summary": "Updates the properties of an existing target user custom field identified by its resource identifier.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the custom field to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated custom field data including name, type, and validation rules.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.UpdateTargetUserCustomFieldRequest"
              },
              "example": {"resourceId":"Cf5Kp2mR7xLv","name":"Department Code","fieldDataType":"String","isActive":true,"sortOrder":1,"isRequired":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.UpdateTargetUserCustomFieldRequest"
              },
              "example": {"resourceId":"Cf5Kp2mR7xLv","name":"Department Code","fieldDataType":"String","isActive":true,"sortOrder":1,"isRequired":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.UpdateTargetUserCustomFieldRequest"
              },
              "example": {"resourceId":"Cf5Kp2mR7xLv","name":"Department Code","fieldDataType":"String","isActive":true,"sortOrder":1,"isRequired":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.UpdateTargetUserCustomFieldRequest"
              },
              "example": {"resourceId":"Cf5Kp2mR7xLv","name":"Department Code","fieldDataType":"String","isActive":true,"sortOrder":1,"isRequired":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/custom-fields": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Creates a new custom field definition for target users in the current company.",
        "requestBody": {
          "description": "The custom field creation payload including field name, type, and validation rules.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.CreateTargetUserCustomFieldRequest"
              },
              "example": {"name":"Department Code","ownerType":"Company","fieldDataType":"String","isActive":true,"sortOrder":1,"isRequired":false}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.CreateTargetUserCustomFieldRequest"
              },
              "example": {"name":"Department Code","ownerType":"Company","fieldDataType":"String","isActive":true,"sortOrder":1,"isRequired":false}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.CreateTargetUserCustomFieldRequest"
              },
              "example": {"name":"Department Code","ownerType":"Company","fieldDataType":"String","isActive":true,"sortOrder":1,"isRequired":false}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.CreateTargetUserCustomFieldRequest"
              },
              "example": {"name":"Department Code","ownerType":"Company","fieldDataType":"String","isActive":true,"sortOrder":1,"isRequired":false}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/custom-fields/bulk-update": {
      "post": {
        "tags": [
          "User Management"
        ],
        "summary": "Performs a bulk operation to create, update, and delete multiple target user custom fields in a single request.",
        "requestBody": {
          "description": "The bulk update payload containing lists of custom fields to create, update, and delete.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.BulkUpdateTargetUserCustomFieldRequest"
              },
              "example": {"targetUserCustomFields":[]}
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.BulkUpdateTargetUserCustomFieldRequest"
              },
              "example": {"targetUserCustomFields":[]}
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.BulkUpdateTargetUserCustomFieldRequest"
              },
              "example": {"targetUserCustomFields":[]}
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.BulkUpdateTargetUserCustomFieldRequest"
              },
              "example": {"targetUserCustomFields":[]}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/custom-fields/groups/{resourceId}": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves all custom fields that belong to a specific custom field group identified by the group resource ID.",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique resource identifier of the custom field group.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.TargetUserCustomField.Dto.TargetUserCustomFieldDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/api/custom-fields/company": {
      "get": {
        "tags": [
          "User Management"
        ],
        "summary": "Retrieves all custom field definitions configured for the current company.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.TargetUserCustomField.Dto.TargetUserCustomFieldDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
                }
              }
            }
          }
        }
      }
    },
    "/connect/token": {
      "post": {
        "summary": "Obtain an access token",
        "description": "Exchange client credentials for a JWT access token.",
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "required": [
                  "grant_type",
                  "client_id",
                  "client_secret"
                ],
                "type": "object",
                "properties": {
                  "grant_type": {
                    "type": "string",
                    "default": "client_credentials"
                  },
                  "client_id": {
                    "type": "string"
                  },
                  "client_secret": {
                    "type": "string"
                  },
                  "scope": {
                    "type": "string",
                    "default": "api1"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Token issued successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "access_token": {
                      "type": "string"
                    },
                    "expires_in": {
                      "type": "integer",
                      "format": "int32"
                    },
                    "token_type": {
                      "type": "string",
                      "default": "Bearer"
                    },
                    "scope": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid client credentials or grant type"
          }
        },
        "x-scalar-ignore": true
      }
    }
  },
  "components": {
    "schemas": {
      "KeepnetLabs.ApplicationService.AddInUser.Dto.HeartbeatInvestigationDeleteActionDto": {
        "type": "object",
        "properties": {
          "isPermanentDelete": {
            "type": "boolean"
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "investigationId": {
            "type": "string",
            "nullable": true
          },
          "emailId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AddInUser.Dto.HeartbeatInvestigationDeleteAndNotifyActionDto": {
        "type": "object",
        "properties": {
          "isPermanentDelete": {
            "type": "boolean"
          },
          "warningMessage": {
            "type": "string",
            "nullable": true
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "investigationId": {
            "type": "string",
            "nullable": true
          },
          "emailId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AddInUser.Dto.HeartbeatInvestigationDto": {
        "type": "object",
        "properties": {
          "investigationId": {
            "type": "string",
            "nullable": true
          },
          "investigationType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.InvestigationType"
          },
          "investigationScanTypeId": {
            "type": "string",
            "nullable": true
          },
          "expireDate": {
            "type": "string",
            "format": "date-time"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "isScanEnterpriseVault": {
            "type": "boolean"
          },
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationHeaderDto"
            },
            "nullable": true
          },
          "bodies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationBodyDto"
            },
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationAttachmentDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.InvestigationStatus"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AddInUser.Dto.HeartbeatInvestigationWarningActionDto": {
        "type": "object",
        "properties": {
          "warningMessage": {
            "type": "string",
            "nullable": true
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "investigationId": {
            "type": "string",
            "nullable": true
          },
          "emailId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AgenticAI.Dto.ApproveBatchRequest": {
        "type": "object",
        "properties": {
          "batchResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AgenticAI.Dto.RejectBatchRequest": {
        "type": "object",
        "properties": {
          "batchResourceId": {
            "type": "string",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "declineForRetry": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AllowList.Dto.AllowListDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "domain": {
            "type": "string",
            "nullable": true
          },
          "txtRecord": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "lastCheckTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "verifyTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "verifyType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AllowList.Search.SearchAllowListDto": {
        "type": "object",
        "properties": {
          "allowListResourceId": {
            "type": "string",
            "nullable": true
          },
          "domain": {
            "type": "string",
            "nullable": true
          },
          "txtRecord": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.AllowListEnum+Status"
          },
          "lastCheckTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "verifyTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "verifyType": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineDetailDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "isSendUrl": {
            "type": "boolean"
          },
          "isSendFileHash": {
            "type": "boolean"
          },
          "isSendFile": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineDto": {
        "type": "object",
        "properties": {
          "analysisEngineTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "apiUrl": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "isSendUrl": {
            "type": "boolean"
          },
          "isSendIp": {
            "type": "boolean"
          },
          "isHideUrlParameter": {
            "type": "boolean"
          },
          "isSendFileHash": {
            "type": "boolean"
          },
          "isUploadExecutableFile": {
            "type": "boolean"
          },
          "isUploadOtherFileType": {
            "type": "boolean"
          },
          "proxyResourceId": {
            "type": "string",
            "nullable": true
          },
          "isCachingEnabled": {
            "type": "boolean"
          },
          "cacheDuration": {
            "type": "integer",
            "format": "int32"
          },
          "cacheQueryCount": {
            "type": "integer",
            "format": "int32"
          },
          "detectionThreshold": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "uploadFileTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "apiCredentials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AnalysisEngine.Dto.ApiCredentialDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineFormDetailsDto": {
        "type": "object",
        "properties": {
          "engineTypes": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineTypeDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
          },
          "lookups": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Lookup.Dto.LookupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
          },
          "proxies": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.ProxySetting.Dto.SearchProxySettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineTypeDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "isSendUrl": {
            "type": "boolean"
          },
          "isSendFileHash": {
            "type": "boolean"
          },
          "isSendFile": {
            "type": "boolean"
          },
          "isSendIp": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisExclusionDto": {
        "type": "object",
        "properties": {
          "exclusionItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisExclusionItemDto"
            },
            "nullable": true
          },
          "exclusionTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "attacmentExtensionTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisExclusionItemDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "nullable": true
          },
          "exclusionType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.AnalysisEngine.AnalysisExclusionType"
          },
          "attachmentExtensionType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.AnalysisEngine.AttachmentExtensionType"
          },
          "isEditable": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AnalysisEngine.Dto.ApiCredentialDto": {
        "type": "object",
        "properties": {
          "apiKey": {
            "type": "string",
            "nullable": true
          },
          "userName": {
            "type": "string",
            "nullable": true
          },
          "password": {
            "type": "string",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AnalysisEngine.Search.AnalysisEngineSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "analysisEngineName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "isSendUrl": {
            "type": "boolean"
          },
          "isSendFileHash": {
            "type": "boolean"
          },
          "isSendFile": {
            "type": "boolean"
          },
          "isSendIp": {
            "type": "boolean"
          },
          "analysisEngineType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineTypeDto"
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AuditLog.Dto.AuditLogDto": {
        "type": "object",
        "properties": {
          "logId": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32"
          },
          "logDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "entityResourceId": {
            "type": "string",
            "nullable": true
          },
          "entityName": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "operation": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.AuditLog.AuditLogOperation"
          },
          "oldValue": {
            "type": "string",
            "nullable": true
          },
          "newValue": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.AuditLog.Search.AuditLogSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "userName": {
            "type": "string",
            "nullable": true
          },
          "entityResourceId": {
            "type": "string",
            "nullable": true
          },
          "entityName": {
            "type": "string",
            "nullable": true
          },
          "oldValue": {
            "type": "string",
            "nullable": true
          },
          "newValue": {
            "type": "string",
            "nullable": true
          },
          "operation": {
            "type": "string",
            "nullable": true
          },
          "ip": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "auditDescription": {
            "type": "string",
            "nullable": true
          },
          "logDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Dto.CallbackCampaignScenarioDto": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "trainingName": {
            "type": "string",
            "nullable": true
          },
          "trainingLanguageIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Dto.CallbackCampaignScheduleInfoScenarioDto": {
        "type": "object",
        "properties": {
          "scheduleDate": {
            "type": "string",
            "nullable": true
          },
          "scenarioName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Enums.CallbackCampaignJobUserSearchType": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallBackCampaignScheduleInfoModel": {
        "type": "object",
        "properties": {
          "scenarioList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Dto.CallbackCampaignScheduleInfoScenarioDto"
            },
            "nullable": true
          },
          "isStarting": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignFormDetailsModel": {
        "type": "object",
        "properties": {
          "distributionEmailOverTimeTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "distributionSmtpDelayTimeTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "distributionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "scheduleTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "sendRandomlyUsersCalculateTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "status": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobFormDetailsModel": {
        "type": "object",
        "properties": {
          "statuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "passwordComplexityTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "userStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobSearchModel": {
        "type": "object",
        "properties": {
          "instanceGroup": {
            "type": "integer",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "totalTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "frequencyGroup": {
            "type": "integer",
            "format": "int32"
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          },
          "frequencyDescription": {
            "type": "string",
            "nullable": true
          },
          "frequencyCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUserEmailSearchOpenedModel": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          },
          "openedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "systemSandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "activityType": {
            "type": "string",
            "nullable": true
          },
          "systemActivityType": {
            "type": "string",
            "nullable": true
          },
          "isChangedActivity": {
            "type": "boolean",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUserSearchEmailReportedModel": {
        "type": "object",
        "properties": {
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "reportedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUsersSearchModel": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "scenarioName": {
            "type": "string",
            "nullable": true
          },
          "openedCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastOpenedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "calledCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastCalledTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "enteredCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastEnteredTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "callbackNumber": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "lastSendingTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "reportedCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastReportedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "emailDelivery": {
            "type": "string",
            "nullable": true
          },
          "activityType": {
            "type": "string",
            "nullable": true
          },
          "systemActivityType": {
            "type": "string",
            "nullable": true
          },
          "targetUserId": {
            "type": "integer",
            "format": "int32"
          },
          "barrelEmailRole": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignModel": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "phishingScenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Dto.CallbackCampaignScenarioDto"
            },
            "nullable": true
          },
          "smtpSetting": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
          },
          "directEmailSetting": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
          },
          "emailDeliverySettingType": {
            "type": "integer",
            "format": "int32"
          },
          "scheduleTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "format": "int32"
          },
          "distributionStartTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "distributionTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionEmailOver": {
            "type": "integer",
            "format": "int32"
          },
          "distributionEmailOverTimeTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "distributionDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sendingLimit": {
            "type": "integer",
            "format": "int32"
          },
          "excludeFromReports": {
            "type": "boolean"
          },
          "sendOnlyActiveUsers": {
            "type": "boolean"
          },
          "sendRandomlyUsers": {
            "type": "boolean"
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "targetGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignPreviewModel": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "campaignName": {
            "type": "string",
            "nullable": true
          },
          "smtpSettingDto": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SMTPSetting.Dto.SmtpSettingDto"
          },
          "directEmailSettingDto": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.DirectEmailSettingDto"
          },
          "callbackScenarioPreviews": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioPreview"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSearchModel": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "scenarioCount": {
            "type": "string",
            "nullable": true
          },
          "instanceCount": {
            "type": "string",
            "nullable": true
          },
          "targetUsers": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastLaunch": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "emailDelivery": {
            "type": "string",
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSendingInfoModel": {
        "type": "object",
        "properties": {
          "batchUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "batchEverySendSecond": {
            "type": "integer",
            "format": "int32"
          },
          "totalUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalSendSecond": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSummaryModel": {
        "type": "object",
        "properties": {
          "campaignResourceId": {
            "type": "string",
            "nullable": true
          },
          "campaignName": {
            "type": "string",
            "nullable": true
          },
          "campaignInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackResultCampaignInfo"
          },
          "settings": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackResultSettings"
          },
          "targetUsers": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackResultTargetUsers"
          },
          "stats": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackResultStats"
          },
          "scenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackResultScenario"
            },
            "nullable": true
          },
          "campaignDurationExpired": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignTargetGroupModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "usersCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackNumberAvailableModel": {
        "type": "object",
        "properties": {
          "providerNumberId": {
            "type": "integer",
            "format": "int32"
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "region": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackResultCampaignInfo": {
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "scheduledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "totalTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "emailDeliveredUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "emailNotDeliveredUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "emailDeliveryStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "emailDeliveryEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          },
          "emailDeliveryDuration": {
            "type": "string",
            "nullable": true
          },
          "scheduleTypeId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackResultScenario": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "difficultyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "languageShortCode": {
            "type": "string",
            "nullable": true
          },
          "emailTemplateResourceId": {
            "type": "string",
            "nullable": true
          },
          "callbackTemplateResourceId": {
            "type": "string",
            "nullable": true
          },
          "callbackNumber": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackResultSettings": {
        "type": "object",
        "properties": {
          "excludeFromReports": {
            "type": "boolean"
          },
          "duration": {
            "type": "integer",
            "format": "int32"
          },
          "smtpName": {
            "type": "string",
            "nullable": true
          },
          "directEmailSettingName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackResultStats": {
        "type": "object",
        "properties": {
          "openedEmail": {
            "type": "integer",
            "format": "int64"
          },
          "calledBack": {
            "type": "integer",
            "format": "int64"
          },
          "enteredDigits": {
            "type": "integer",
            "format": "int64"
          },
          "reportedEmail": {
            "type": "integer",
            "format": "int64"
          },
          "noResponseEmail": {
            "type": "integer",
            "format": "int64"
          },
          "notDelivered": {
            "type": "integer",
            "format": "int64"
          },
          "failedToSend": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackResultTargetUsers": {
        "type": "object",
        "properties": {
          "randomlyUsersCount": {
            "type": "integer",
            "format": "int32"
          },
          "targetGroupsCount": {
            "type": "integer",
            "format": "int32"
          },
          "sendRandomlyUsers": {
            "type": "boolean"
          },
          "sendOnlyActiveUsers": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioModel": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "difficultyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "emailTemplateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "emailTemplateResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto"
            },
            "nullable": true
          },
          "callbackTemplateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "callbackTemplateResourceId": {
            "type": "string",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioPreview": {
        "type": "object",
        "properties": {
          "emailTemplate": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.PsEmailTemplateDto"
          },
          "callbackTemplate": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Vishing.Dto.VishingTemplatePreviewDto"
          },
          "scenarioName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioPreviewModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "difficultyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "methodTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "emailTemplate": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.PsEmailTemplateDto"
          },
          "callbackTemplate": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Vishing.Dto.VishingTemplatePreviewDto"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioSearchModel": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "method": {
            "type": "string",
            "nullable": true
          },
          "difficulty": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          },
          "isSelected": {
            "type": "boolean"
          },
          "voice": {
            "type": "string",
            "nullable": true
          },
          "languageCode": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackSearchCompanyPoolModel": {
        "type": "object",
        "properties": {
          "providerNumberId": {
            "type": "integer",
            "format": "int32"
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "region": {
            "type": "string",
            "nullable": true
          },
          "isUsing": {
            "type": "boolean"
          },
          "campaignName": {
            "type": "string",
            "nullable": true
          },
          "scenarioName": {
            "type": "string",
            "nullable": true
          },
          "freeOnDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Callback.Model.CallbackUsageModel": {
        "type": "object",
        "properties": {
          "companyCount": {
            "type": "integer",
            "format": "int32"
          },
          "usedCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CallbackTemplate.Dto.SearchCallbackTemplateDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "nullable": true
          },
          "difficultyName": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "quishingType": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "languageTypeCode": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Community.Dto.CommunityDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "industryResourceId": {
            "type": "string",
            "nullable": true
          },
          "industryName": {
            "type": "string",
            "nullable": true
          },
          "privacyStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "privacyStatusName": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "ownerCompanyResourceId": {
            "type": "string",
            "nullable": true
          },
          "ownerCompanyName": {
            "type": "string",
            "nullable": true
          },
          "memberCount": {
            "type": "integer",
            "format": "int32"
          },
          "incidentCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastPostTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "myMembershipStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "myMembershipStatusName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Community.Dto.CommunityInvitationDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "memberCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastPostTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "privacyStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "privacyStatusName": {
            "type": "string",
            "nullable": true
          },
          "industryId": {
            "type": "integer",
            "format": "int32"
          },
          "industryName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Community.Dto.InvitationCountDto": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Community.Dto.InviteToCommunityDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "result": {
            "type": "string",
            "nullable": true
          },
          "resultText": {
            "type": "string",
            "nullable": true
          },
          "systemUserId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Community.Dto.MembershipRequestCountDto": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityDto": {
        "type": "object",
        "properties": {
          "communityName": {
            "type": "string",
            "nullable": true
          },
          "communityResourceId": {
            "type": "string",
            "nullable": true
          },
          "communityDescription": {
            "type": "string",
            "nullable": true
          },
          "industryName": {
            "type": "string",
            "nullable": true
          },
          "industryResourceId": {
            "type": "string",
            "nullable": true
          },
          "privacyStatusName": {
            "type": "string",
            "nullable": true
          },
          "privacyStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "memberCount": {
            "type": "integer",
            "format": "int32"
          },
          "membershipStatusName": {
            "type": "string",
            "nullable": true
          },
          "membershipStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "membershipResourceId": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastPostTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityMembershipResultDto": {
        "type": "object",
        "properties": {
          "communityRequestResourceId": {
            "type": "string",
            "nullable": true
          },
          "communityResourceId": {
            "type": "string",
            "nullable": true
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "logoUrl": {
            "type": "string",
            "nullable": true
          },
          "logoFileName": {
            "type": "string",
            "nullable": true
          },
          "postCount": {
            "type": "integer",
            "format": "int32"
          },
          "userCount": {
            "type": "integer",
            "format": "int32"
          },
          "industryResourceId": {
            "type": "string",
            "nullable": true
          },
          "industryName": {
            "type": "string",
            "nullable": true
          },
          "membershipStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "membershipStatusName": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Community.Dto.SuggestedCommunityDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "communityName": {
            "type": "string",
            "nullable": true
          },
          "privacyStatusName": {
            "type": "string",
            "nullable": true
          },
          "industryName": {
            "type": "string",
            "nullable": true
          },
          "memberCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CommunityPost.Dto.CommunityPostCommentDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "commenterFullName": {
            "type": "string",
            "nullable": true
          },
          "commenterCompanyName": {
            "type": "string",
            "nullable": true
          },
          "comment": {
            "type": "string",
            "nullable": true
          },
          "commentTime": {
            "type": "string",
            "format": "date-time"
          },
          "canEdit": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CommunityPost.Dto.CommunityPostEmailAttachmentDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "sha512": {
            "type": "string",
            "nullable": true
          },
          "md5": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "isHidden": {
            "type": "boolean"
          },
          "isFlagged": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CommunityPost.Dto.CommunityPostEmailDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "initialBody": {
            "type": "string",
            "nullable": true
          },
          "editableBody": {
            "type": "string",
            "nullable": true
          },
          "visibleBody": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "isFromHidden": {
            "type": "boolean"
          },
          "isFromFlagged": {
            "type": "boolean"
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "isSubjectHidden": {
            "type": "boolean"
          },
          "isSubjectFlagged": {
            "type": "boolean"
          },
          "to": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isToHidden": {
            "type": "boolean"
          },
          "isToFlagged": {
            "type": "boolean"
          },
          "cc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isCcHidden": {
            "type": "boolean"
          },
          "isCcFlagged": {
            "type": "boolean"
          },
          "bcc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isBccHidden": {
            "type": "boolean"
          },
          "isBccFlagged": {
            "type": "boolean"
          },
          "sentTime": {
            "type": "string",
            "format": "date-time"
          },
          "urls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CommunityPost.Dto.CommunityPostEmailUrlDto"
            },
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CommunityPost.Dto.CommunityPostEmailAttachmentDto"
            },
            "nullable": true
          },
          "emailTexts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CommunityPost.Dto.CommunityPostEmailTextDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CommunityPost.Dto.CommunityPostEmailTextDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string",
            "nullable": true
          },
          "isHidden": {
            "type": "boolean"
          },
          "isFlagged": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CommunityPost.Dto.CommunityPostEmailUrlDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "isHidden": {
            "type": "boolean"
          },
          "isFlagged": {
            "type": "boolean"
          },
          "orderNumber": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CommunityPost.Dto.CreateCommunityPostEmailAttachmentDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "sha512": {
            "type": "string",
            "nullable": true
          },
          "md5": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "isHidden": {
            "type": "boolean"
          },
          "isFlagged": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CommunityPost.Dto.CreateCommunityPostEmailDto": {
        "type": "object",
        "properties": {
          "initialBody": {
            "type": "string",
            "nullable": true
          },
          "editableBody": {
            "type": "string",
            "nullable": true
          },
          "visibleBody": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "isFromHidden": {
            "type": "boolean"
          },
          "isFromFlagged": {
            "type": "boolean"
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "isSubjectHidden": {
            "type": "boolean"
          },
          "isSubjectFlagged": {
            "type": "boolean"
          },
          "to": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isToHidden": {
            "type": "boolean"
          },
          "isToFlagged": {
            "type": "boolean"
          },
          "cc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isCcHidden": {
            "type": "boolean"
          },
          "isCcFlagged": {
            "type": "boolean"
          },
          "bcc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isBccHidden": {
            "type": "boolean"
          },
          "isBccFlagged": {
            "type": "boolean"
          },
          "sentTime": {
            "type": "string",
            "format": "date-time"
          },
          "urls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CommunityPost.Dto.CreateCommunityPostEmailUrlDto"
            },
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CommunityPost.Dto.CreateCommunityPostEmailAttachmentDto"
            },
            "nullable": true
          },
          "emailTexts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CommunityPost.Dto.CreateCommunityPostEmailTextDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CommunityPost.Dto.CreateCommunityPostEmailTextDto": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "nullable": true
          },
          "isHidden": {
            "type": "boolean"
          },
          "isFlagged": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CommunityPost.Dto.CreateCommunityPostEmailUrlDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "orderNumber": {
            "type": "integer",
            "format": "int32"
          },
          "isHidden": {
            "type": "boolean"
          },
          "isFlagged": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CommunityPost.Dto.GetCommunityPostDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "categoryResourceIdArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "discoveryAndDetection": {
            "type": "string",
            "nullable": true
          },
          "affectArea": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "scope": {
            "type": "string",
            "nullable": true
          },
          "isAnonymous": {
            "type": "boolean"
          },
          "harmfulItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "hasAttachment": {
            "type": "boolean"
          },
          "likeCount": {
            "type": "integer",
            "format": "int32"
          },
          "commentCount": {
            "type": "integer",
            "format": "int32"
          },
          "isLikedByUser": {
            "type": "boolean"
          },
          "postedUserFullName": {
            "type": "string",
            "nullable": true
          },
          "postedUserCompanyName": {
            "type": "string",
            "nullable": true
          },
          "securityLabelResourceIdArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isPostedByMe": {
            "type": "boolean"
          },
          "myMembershipStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "myMembershipStatusName": {
            "type": "string",
            "nullable": true
          },
          "communityResourceId": {
            "type": "string",
            "nullable": true
          },
          "communityName": {
            "type": "string",
            "nullable": true
          },
          "communityPrivacyStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "communityPrivacyStatusName": {
            "type": "string",
            "nullable": true
          },
          "communityPostEmail": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CommunityPost.Dto.CommunityPostEmailDto"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CommunityPost.Dto.GetTopPostsDto": {
        "type": "object",
        "properties": {
          "communityPostResourceId": {
            "type": "string",
            "nullable": true
          },
          "communityResourceId": {
            "type": "string",
            "nullable": true
          },
          "postTitle": {
            "type": "string",
            "nullable": true
          },
          "communityName": {
            "type": "string",
            "nullable": true
          },
          "likeCount": {
            "type": "integer",
            "format": "int32"
          },
          "commentCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CommunityPost.Dto.GetUsersLastPostDto": {
        "type": "object",
        "properties": {
          "communityPostResourceId": {
            "type": "string",
            "nullable": true
          },
          "communityResourceId": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "communityName": {
            "type": "string",
            "nullable": true
          },
          "likeCount": {
            "type": "integer",
            "format": "int32"
          },
          "commentCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CommunityPost.Dto.SearchCommunityPostDto": {
        "type": "object",
        "properties": {
          "communityPostResourceId": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "discoveryAndDetection": {
            "type": "string",
            "nullable": true
          },
          "scope": {
            "type": "string",
            "nullable": true
          },
          "categoryResourceIdArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isPostedByMe": {
            "type": "boolean"
          },
          "postedUserFullName": {
            "type": "string",
            "nullable": true
          },
          "postedUserCompanyName": {
            "type": "string",
            "nullable": true
          },
          "postedTime": {
            "type": "string",
            "format": "date-time"
          },
          "likeCount": {
            "type": "integer",
            "format": "int32"
          },
          "commentCount": {
            "type": "integer",
            "format": "int32"
          },
          "harmfulItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "hasAttachment": {
            "type": "boolean"
          },
          "communityResourceId": {
            "type": "string",
            "nullable": true
          },
          "communityName": {
            "type": "string",
            "nullable": true
          },
          "communityPrivacyStatusName": {
            "type": "string",
            "nullable": true
          },
          "communityPrivacyStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "myMembershipStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "myMembershipStatusName": {
            "type": "string",
            "nullable": true
          },
          "securityLabelResourceIdArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.CheckCompanyLicenseDto": {
        "type": "object",
        "properties": {
          "isLimited": {
            "type": "boolean"
          },
          "licenseLimit": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "activeUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "isLicenseExceeded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.ClientCredentialDto": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "clientSecret": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.ClientDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "clientSecret": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "hasIpAddressRestriction": {
            "type": "boolean"
          },
          "allowedIpAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "roleResourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.CompanyDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "industryResourceId": {
            "type": "string",
            "nullable": true
          },
          "industryName": {
            "type": "string",
            "nullable": true
          },
          "countryResourceId": {
            "type": "string",
            "nullable": true
          },
          "countryName": {
            "type": "string",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "websiteUrl": {
            "type": "string",
            "nullable": true
          },
          "logoUrl": {
            "type": "string",
            "nullable": true
          },
          "licenseTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "licenseTypeName": {
            "type": "string",
            "nullable": true
          },
          "licensePeriodTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "licensePeriodTypeName": {
            "type": "string",
            "nullable": true
          },
          "licenseStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "licenseEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isNumberOfUsersLimited": {
            "type": "boolean"
          },
          "numberOfUsers": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "notificationTemplateTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "notificationTemplateTypeName": {
            "type": "string",
            "nullable": true
          },
          "trainingContentTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "trainingContentTypeName": {
            "type": "string",
            "nullable": true
          },
          "smtpConfigurationTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "smtpConfigurationTypeName": {
            "type": "string",
            "nullable": true
          },
          "preferredLanguageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "preferredLanguageTypeName": {
            "type": "string",
            "nullable": true
          },
          "isVersionVisible": {
            "type": "boolean"
          },
          "isReleaseNotesVisible": {
            "type": "boolean"
          },
          "releaseNotesUrl": {
            "type": "string",
            "nullable": true
          },
          "companyGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CompanyGroup.Dto.GetCompanyGroupDto"
            },
            "nullable": true
          },
          "parentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "baseManHourCost": {
            "type": "integer",
            "format": "int32"
          },
          "baseManHour": {
            "type": "integer",
            "format": "int32"
          },
          "statusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "licenseModules": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "targetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "timeZoneId": {
            "type": "string",
            "nullable": true
          },
          "callBackNumberBookingCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "dateFormat": {
            "type": "string",
            "nullable": true
          },
          "timeFormat": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "readOnly": true
          },
          "hasAgenticAILicense": {
            "type": "boolean"
          },
          "regionCode": {
            "type": "string",
            "nullable": true
          },
          "latestMigrationStatus": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "latestMigrationStatusName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.CompanyModuleDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.GetCommunityCompaniesDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.GetCompanyAISettingsDto": {
        "type": "object",
        "properties": {
          "psEmailTemplateGenerationAssistant": {
            "type": "boolean"
          },
          "landingPageTemplateGenerationAssistant": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.GetCompanyAgenticAISettingsDto": {
        "type": "object",
        "properties": {
          "agenticAIEnabled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.GetCompanyLicenseExpiryDateDto": {
        "type": "object",
        "properties": {
          "licenseExpiryDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.GetCompanyLicenseExpiryDateRequest": {
        "type": "object",
        "properties": {
          "licenseStartDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.GetCompanyLogoServiceResponse": {
        "type": "object",
        "properties": {
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "fileContent": {
            "type": "string",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.GetCompanyPrivacyDto": {
        "type": "object",
        "properties": {
          "privacyDurationId": {
            "type": "integer",
            "format": "int32"
          },
          "privacyDurationStartTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "privacyDurationEndTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.GetCompanyPrivacyPentesterMaskDto": {
        "type": "object",
        "properties": {
          "pentesterMasked": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.GetMyCompaniesDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "logoUrl": {
            "type": "string",
            "nullable": true
          },
          "privacyDurationId": {
            "type": "integer",
            "format": "int32"
          },
          "licenceExpired": {
            "type": "boolean"
          },
          "privacyDurationStartTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "privacyDurationEndTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.GetMyCompaniesDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.RoiSettingsDto": {
        "type": "object",
        "properties": {
          "baseManHourCost": {
            "type": "integer",
            "format": "int32"
          },
          "baseManHour": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.SearchClientDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "clientName": {
            "type": "string",
            "nullable": true
          },
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "statusName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.SearchCompanyDto": {
        "type": "object",
        "properties": {
          "modules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.CompanyModuleDto"
            },
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "resellerName": {
            "type": "string",
            "nullable": true
          },
          "industryName": {
            "type": "string",
            "nullable": true
          },
          "industryResourceId": {
            "type": "string",
            "nullable": true
          },
          "licenseTypeName": {
            "type": "string",
            "nullable": true
          },
          "licenseTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "isNumberOfUsersLimited": {
            "type": "boolean"
          },
          "numberOfUsers": {
            "type": "string",
            "nullable": true
          },
          "privacyDurationId": {
            "type": "integer",
            "format": "int32"
          },
          "licenceExpired": {
            "type": "boolean"
          },
          "licenseEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "targetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.SearchCompanyDto"
            },
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "deletedTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "inactiveTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "monthlyActiveUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "monthlyEnrolled": {
            "type": "integer",
            "format": "int32"
          },
          "monthlyConsumption": {
            "type": "integer",
            "format": "int32"
          },
          "consumptionCompleted": {
            "type": "integer",
            "format": "int32"
          },
          "consumptionInProgress": {
            "type": "integer",
            "format": "int32"
          },
          "enrolledVendorNames": {
            "type": "string",
            "nullable": true
          },
          "consumptionVendorNames": {
            "type": "string",
            "nullable": true
          },
          "enrolledVendorNamesDistribution": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "clusterCompanyCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.SearchMyCompaniesServiceRequest": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Company.Dto.SetCompanyPrivacyPentesterMaskRequest": {
        "type": "object",
        "properties": {
          "pentesterMasked": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CompanyAILimit.Dto.CompanyAILimitResponse": {
        "type": "object",
        "properties": {
          "remainingBalance": {
            "type": "integer",
            "format": "int32"
          },
          "totalBalance": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CompanyGroup.Dto.CompanyGroupDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "addedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "companyCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CompanyGroup.Dto.GetCompanyGroupDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchCompanyGroupDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "companyCount": {
            "type": "integer",
            "format": "int32"
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchCompanyGroupResultDto": {
        "type": "object",
        "properties": {
          "companies": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Company.Dto.SearchCompanyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "groups": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchCompanyGroupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchGroupCompanyDto": {
        "type": "object",
        "properties": {
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "industryName": {
            "type": "string",
            "nullable": true
          },
          "industryResourceId": {
            "type": "string",
            "nullable": true
          },
          "licenseTypeName": {
            "type": "string",
            "nullable": true
          },
          "licenseTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "isNumberOfUsersLimited": {
            "type": "boolean"
          },
          "numberOfUsers": {
            "type": "string",
            "nullable": true
          },
          "licenseEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "companyStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "companyStatusName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Dashboard.Dto.DashboardSetting": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "key": {
            "type": "string",
            "nullable": true
          },
          "x": {
            "type": "integer",
            "format": "int32"
          },
          "y": {
            "type": "integer",
            "format": "int32"
          },
          "w": {
            "type": "integer",
            "format": "int32"
          },
          "h": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Dashboard.Dto.DashboardWidgetsOrderingDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "settings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Dashboard.Dto.DashboardSetting"
            },
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.AuditConclusionResult": {
        "type": "object",
        "properties": {
          "verdict": {
            "type": "string",
            "nullable": true
          },
          "statement": {
            "type": "string",
            "nullable": true
          },
          "evidenceLevel": {
            "type": "string",
            "nullable": true
          },
          "signedBy": {
            "type": "string",
            "nullable": true
          },
          "signedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.AuditMetadataResult": {
        "type": "object",
        "properties": {
          "reportId": {
            "type": "string",
            "nullable": true
          },
          "generatedAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "generatedBy": {
            "type": "string",
            "nullable": true
          },
          "environment": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "expectedRegion": {
            "type": "string",
            "nullable": true
          },
          "selectedRegionDisplay": {
            "type": "string",
            "nullable": true
          },
          "verdict": {
            "type": "string",
            "nullable": true
          },
          "evidenceLevel": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.DatabaseCheckServiceResult": {
        "type": "object",
        "properties": {
          "databaseName": {
            "type": "string",
            "nullable": true
          },
          "role": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "totalRowCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "piiPopulatedRowCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sampleResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "region": {
            "type": "string",
            "nullable": true
          },
          "databaseServer": {
            "type": "string",
            "nullable": true
          },
          "logicalDatabaseName": {
            "type": "string",
            "nullable": true
          },
          "queryExecutionTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "queryHash": {
            "type": "string",
            "nullable": true
          },
          "executedSqlQuery": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.ExecutedSqlQueryResult"
          },
          "queryParameters": {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "nullable": true
          },
          "piiEmptyRowCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "rawRowChecksum": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "isSelectedResidency": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.EvidenceTrailStepResult": {
        "type": "object",
        "properties": {
          "step": {
            "type": "integer",
            "format": "int32"
          },
          "action": {
            "type": "string",
            "nullable": true
          },
          "databaseRole": {
            "type": "string",
            "nullable": true
          },
          "query": {
            "type": "string",
            "nullable": true
          },
          "queryType": {
            "type": "string",
            "nullable": true
          },
          "result": {
            "nullable": true
          },
          "ruleEvaluated": {
            "type": "string",
            "nullable": true
          },
          "ruleOutcome": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.ExecutedSqlQueryResult": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "sql": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.ExecutionContextResult": {
        "type": "object",
        "properties": {
          "sourceDatabases": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.SourceDatabaseExecutionResult"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.MigrationStatusResult": {
        "type": "object",
        "properties": {
          "jobResourceId": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "fromRegion": {
            "type": "string",
            "nullable": true
          },
          "toRegion": {
            "type": "string",
            "nullable": true
          },
          "totalRowCount": {
            "type": "integer",
            "format": "int32"
          },
          "processedRowCount": {
            "type": "integer",
            "format": "int32"
          },
          "failedRowCount": {
            "type": "integer",
            "format": "int32"
          },
          "startedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "finishedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "failureReason": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.PiiResidencyReportServiceResult": {
        "type": "object",
        "properties": {
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "expectedRegion": {
            "type": "string",
            "nullable": true
          },
          "verdict": {
            "type": "string",
            "nullable": true
          },
          "conclusion": {
            "type": "string",
            "nullable": true
          },
          "databaseChecks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.DatabaseCheckServiceResult"
            },
            "nullable": true
          },
          "violations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.PiiResidencyViolationServiceResult"
            },
            "nullable": true
          },
          "auditMetadata": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.AuditMetadataResult"
          },
          "executionContext": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.ExecutionContextResult"
          },
          "rawEvidenceSummary": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.RawEvidenceSummaryResult"
            },
            "nullable": true
          },
          "validationLogic": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.ValidationLogicResult"
          },
          "evidenceTrail": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.EvidenceTrailStepResult"
            },
            "nullable": true
          },
          "auditConclusion": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.AuditConclusionResult"
          },
          "latestMigration": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.MigrationStatusResult"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.PiiResidencyViolationServiceResult": {
        "type": "object",
        "properties": {
          "databaseName": {
            "type": "string",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "rowCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.RawEvidenceSummaryResult": {
        "type": "object",
        "properties": {
          "databaseName": {
            "type": "string",
            "nullable": true
          },
          "role": {
            "type": "string",
            "nullable": true
          },
          "region": {
            "type": "string",
            "nullable": true
          },
          "totalRowCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "piiPopulatedRowCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "piiEmptyRowCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sampleResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "sampleRawRows": {
            "nullable": true
          },
          "rawRowChecksum": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.SourceDatabaseExecutionResult": {
        "type": "object",
        "properties": {
          "role": {
            "type": "string",
            "nullable": true
          },
          "region": {
            "type": "string",
            "nullable": true
          },
          "databaseServer": {
            "type": "string",
            "nullable": true
          },
          "logicalDatabaseName": {
            "type": "string",
            "nullable": true
          },
          "queryExecutionTimestampUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "queryHash": {
            "type": "string",
            "nullable": true
          },
          "executedSqlQuery": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.ExecutedSqlQueryResult"
          },
          "queryParameters": {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.ValidationLogicResult": {
        "type": "object",
        "properties": {
          "piiFieldsConsidered": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "rules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.ValidationRuleResult"
            },
            "nullable": true
          },
          "overallPassCondition": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.ValidationRuleResult": {
        "type": "object",
        "properties": {
          "ruleId": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "passCondition": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DetailItemDto": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "extraDatas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.DirectEmailSettingDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "tenantId": {
            "type": "string",
            "nullable": true
          },
          "allowedDomains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "type": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.Setting": {
        "type": "object",
        "properties": {
          "applicationId": {
            "type": "string",
            "nullable": true
          },
          "redirectUri": {
            "type": "string",
            "nullable": true
          },
          "authorizationUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DnsService.Dto.DnsServiceFormDetailsDto": {
        "type": "object",
        "properties": {
          "recordTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "dnsServiceProviderTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DnsService.Dto.DnsServiceProviderDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "dnsServiceProviderTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "dnsServiceProviderName": {
            "type": "string",
            "nullable": true
          },
          "username": {
            "type": "string",
            "nullable": true
          },
          "password": {
            "type": "string",
            "nullable": true
          },
          "recordTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "dnsRecord": {
            "type": "string",
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DnsService.Search.DnsServiceProviderSearchView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "dnsServiceProviderName": {
            "type": "string",
            "nullable": true
          },
          "dnsServiceProviderType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.DnsService.DnsServiceProviderType"
          },
          "isOwner": {
            "type": "boolean"
          },
          "healthStatus": {
            "type": "string",
            "nullable": true
          },
          "healthStatusMessage": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "urlSchemaTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "urlSchemaType": {
            "type": "string",
            "nullable": true
          },
          "domain": {
            "type": "string",
            "nullable": true
          },
          "isStopBotActivity": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "domain": {
            "type": "string",
            "nullable": true
          },
          "recordTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "dnsServiceProviderId": {
            "type": "integer",
            "format": "int32"
          },
          "dnsRecord": {
            "type": "string",
            "nullable": true
          },
          "proxyStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "urlSchemaTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "zoneId": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordFormDetailsDto": {
        "type": "object",
        "properties": {
          "recordTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "dnsServiceProviders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "proxyStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "urlSchemas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "domain": {
            "type": "string",
            "nullable": true
          },
          "dnsServiceProviderName": {
            "type": "string",
            "nullable": true
          },
          "dnsRecord": {
            "type": "string",
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "healthStatus": {
            "type": "string",
            "nullable": true
          },
          "healthStatusMessage": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.EmailTemplate.Dto.CheckAvailabilityDto": {
        "type": "object",
        "properties": {
          "isAvailable": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.EmailTemplate.Dto.EmailTemplateDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "smtpSettingResourceId": {
            "type": "string",
            "nullable": true
          },
          "directEmailSettingResourceId": {
            "type": "string",
            "nullable": true
          },
          "emailDeliverySettingType": {
            "type": "integer",
            "format": "int32"
          },
          "emailTemplateCategoryResourceId": {
            "type": "string",
            "nullable": true
          },
          "fromName": {
            "type": "string",
            "nullable": true
          },
          "fromAddress": {
            "type": "string",
            "nullable": true
          },
          "ccAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "string",
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto"
            },
            "nullable": true
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EmailTemplate.Dto.EmailTemplateLanguageDetailDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.EmailTemplate.Dto.EmailTemplateLanguageDetailDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "fromName": {
            "type": "string",
            "nullable": true
          },
          "fromAddress": {
            "type": "string",
            "nullable": true
          },
          "ccAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.EmailTemplate.Dto.GetEmailTemplateTypeLookupDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "genericCodeTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "genericCodeTypeName": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "orderNumber": {
            "type": "integer",
            "format": "int32"
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "tag": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.EmailTemplate.Dto.SearchEmailTemplateDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "availableForCompanyCount": {
            "type": "integer",
            "format": "int64"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "languageTypeName": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "languageTypeCode": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "ownerCompanyResourceId": {
            "type": "string",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "nullable": true
          },
          "targetResourceId": {
            "type": "string",
            "nullable": true
          },
          "targetName": {
            "type": "string",
            "nullable": true
          },
          "ownerCompanyName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.EntityAvailableFor.EntityAvailableForType"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Dto.CreateExecutiveReportServiceRequest": {
        "type": "object",
        "properties": {
          "executiveReport": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Models.ExecutiveReportModel"
          },
          "scheduling": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Models.Scheduling"
          },
          "widgetLayouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Models.WidgetLayout"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "dateCreated": {
            "type": "string",
            "format": "date-time"
          },
          "widgetLayout": {
            "type": "string",
            "nullable": true
          },
          "widgets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportWidgetResultDto"
            },
            "nullable": true
          },
          "datePeriod": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Enums.DatePeriod"
          },
          "dateRange": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isSupportManager": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportMetric": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "widgets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportWidgetDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "isEditable": {
            "type": "boolean"
          },
          "isDeletable": {
            "type": "boolean"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "isSupportManager": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportWidgetDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "widgetType": {
            "type": "string",
            "nullable": true
          },
          "chartType": {
            "type": "string",
            "nullable": true
          },
          "imageUrl": {
            "type": "string",
            "nullable": true
          },
          "isSupportManager": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportWidgetResultDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "chartType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Enums.ExecutiveReportChartType"
          },
          "widgetDatas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.WidgetDataModel"
            },
            "nullable": true
          },
          "widgetType": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Dto.GetExecutiveReportWidgetsServiceResult": {
        "type": "object",
        "properties": {
          "metrics": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportMetric"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Dto.GetWidgetDataServiceRequestParameters": {
        "type": "object",
        "properties": {
          "widgetIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "datePeriod": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Enums.DatePeriod"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Dto.SearchExecutiveReportRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Dto.UpdateExecutiveReportServiceRequest": {
        "type": "object",
        "properties": {
          "executiveReportResourceId": {
            "type": "string",
            "nullable": true
          },
          "executiveReport": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Models.ExecutiveReportModel"
          },
          "scheduling": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Models.Scheduling"
          },
          "widgetLayouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Models.WidgetLayout"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Dto.WidgetDataModel": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "dataObject": {
            "nullable": true
          },
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.WidgetValueModel"
            },
            "nullable": true
          },
          "tableValues": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": { }
            },
            "nullable": true
          },
          "tableDefinitions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.WidgetTableDefinition"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Dto.WidgetTableDefinition": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Dto.WidgetValueModel": {
        "type": "object",
        "properties": {
          "value": {
            "type": "integer",
            "format": "int32"
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "annotations": {
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Enums.DatePeriod": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Enums.ExecutiveReportChartType": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Models.ExecutiveReportModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "companyLogo": {
            "type": "string",
            "nullable": true
          },
          "dateCreated": {
            "type": "string",
            "format": "date-time"
          },
          "datePeriod": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Enums.DatePeriod"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Models.Scheduling": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "frequency": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.ReportSchedulingFrequency"
          },
          "schedule": {
            "type": "string",
            "format": "date-time"
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "nullable": true
          },
          "isRegionAwareTimeZone": {
            "type": "boolean"
          },
          "emailAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "managerEmails": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ExecutiveReport.Models.WidgetLayout": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "x": {
            "type": "integer",
            "format": "int32"
          },
          "y": {
            "type": "integer",
            "format": "int32"
          },
          "w": {
            "type": "integer",
            "format": "int32"
          },
          "minW": {
            "type": "integer",
            "format": "int32"
          },
          "defaultW": {
            "type": "integer",
            "format": "int32"
          },
          "midW": {
            "type": "integer",
            "format": "int32"
          },
          "h": {
            "type": "integer",
            "format": "int32"
          },
          "defaultH": {
            "type": "integer",
            "format": "int32"
          },
          "minH": {
            "type": "integer",
            "format": "int32"
          },
          "maxH": {
            "type": "integer",
            "format": "int32"
          },
          "i": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "key": {
            "type": "string",
            "nullable": true
          },
          "isAllowed": {
            "type": "boolean"
          },
          "parentKey": {
            "type": "string",
            "nullable": true
          },
          "chartType": {
            "type": "string",
            "nullable": true
          },
          "dateInterval": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "nullable": true
          },
          "moved": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Export.Dto.ExportServiceResult": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Export.Dto.ExportStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "filePath": {
            "type": "string",
            "nullable": true
          },
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "byteArray": {
            "type": "string",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Export.Dto.ExportStatus": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.Export.ExportType": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.FileItem.Dto.FileItemDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "previewLink": {
            "type": "string",
            "nullable": true
          },
          "originalName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.FileItem.Dto.ParsedEmailAttachmentDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "sha512": {
            "type": "string",
            "nullable": true
          },
          "md5": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.FileItem.Dto.ParsedEmailDto": {
        "type": "object",
        "properties": {
          "bcc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "cc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "to": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "fromName": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "sentTime": {
            "type": "string",
            "format": "date-time"
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "urls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.FileItem.Dto.ParsedEmailUrlDto"
            },
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.FileItem.Dto.ParsedEmailAttachmentDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.FileItem.Dto.ParsedEmailUrlDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "orderNumber": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.BadgeInfoDto": {
        "type": "object",
        "properties": {
          "badgeType": {
            "type": "integer",
            "format": "int32"
          },
          "level": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "earned": {
            "type": "boolean"
          },
          "earnedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "badgeName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "categoryType": {
            "type": "integer",
            "format": "int32"
          },
          "categoryName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.CalculateBadgesRequest": {
        "type": "object",
        "properties": {
          "targetUserResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.DepartmentLeaderboardResultDto": {
        "type": "object",
        "properties": {
          "rank": {
            "type": "integer",
            "format": "int32"
          },
          "departmentName": {
            "type": "string",
            "nullable": true
          },
          "numberOfEmployees": {
            "type": "integer",
            "format": "int32"
          },
          "performance": {
            "type": "number",
            "format": "float"
          },
          "isCurrentUserDepartment": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationActionTypeFilter": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationFormDetailsDto": {
        "type": "object",
        "properties": {
          "gamificationActionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "gamificationProductTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "gamificationScenarioDifficultyTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "gamificationTrainingCategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationPointRuleResult": {
        "type": "object",
        "properties": {
          "ruleName": {
            "type": "string",
            "nullable": true
          },
          "earned": {
            "type": "boolean"
          },
          "lostPoints": {
            "type": "integer",
            "format": "int32"
          },
          "rulePoint": {
            "type": "integer",
            "format": "int32"
          },
          "lastPoint": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationProductType": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationUserPerformanceViewResultDto": {
        "type": "object",
        "properties": {
          "rank": {
            "type": "integer",
            "format": "int32"
          },
          "phishingTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "phishingType": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "performance": {
            "type": "number",
            "format": "float"
          },
          "totalPerformance": {
            "type": "number",
            "format": "float"
          },
          "totalPoints": {
            "type": "number",
            "format": "float"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationUserTimeLineViewResultDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "timeZoneId": {
            "type": "string",
            "nullable": true
          },
          "campaignPerformance": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "difficultyType": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "points": {
            "type": "integer",
            "format": "int32"
          },
          "ActionTime": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "ActionTimeWithDay": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "trainingType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "categoryDescription": {
            "type": "string",
            "nullable": true
          },
          "result": {
            "type": "string",
            "nullable": true
          },
          "campaignType": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "productType": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "ActionType": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "pointRule": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationPointRuleResult"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationViewResultDto": {
        "type": "object",
        "properties": {
          "rank": {
            "type": "integer",
            "format": "int32"
          },
          "targetUserId": {
            "type": "integer",
            "format": "int32"
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "preferredLanguage": {
            "type": "string",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "points": {
            "type": "integer",
            "format": "int32"
          },
          "performance": {
            "type": "number",
            "format": "float"
          },
          "totalRowCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GetBadgesResponse": {
        "type": "object",
        "properties": {
          "badges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.BadgeInfoDto"
            },
            "nullable": true
          },
          "completed": {
            "type": "boolean"
          },
          "remainingCacheSeconds": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardDatePeriod": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchExportRequestParameter": {
        "type": "object",
        "properties": {
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Export.ExportType"
          },
          "reportAllPages": {
            "type": "boolean"
          },
          "datePeriod": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardDatePeriod"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          },
          "pagination": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PaginationRequest"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchRequestParameter": {
        "type": "object",
        "properties": {
          "datePeriod": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardDatePeriod"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          },
          "pagination": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PaginationRequest"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchWithTimelineResultDto": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserWithTimelineDto"
            },
            "nullable": true
          },
          "totalUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "currentPage": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserRequestParameter": {
        "type": "object",
        "properties": {
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "datePeriod": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardDatePeriod"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserSearchWithTimelineRequestParameter": {
        "type": "object",
        "properties": {
          "datePeriod": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardDatePeriod"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          },
          "actionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationActionTypeFilter"
            },
            "nullable": true
          },
          "difficultyTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.PhishingScenario.PhishingScenarioDifficultyType"
            },
            "nullable": true
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationProductType"
            },
            "nullable": true
          },
          "showOnlyFailedEvents": {
            "type": "boolean"
          },
          "userPagination": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PaginationRequest"
          },
          "timelinePagination": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PaginationRequest"
          },
          "includeTimeline": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineExportRequestParameter": {
        "type": "object",
        "properties": {
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Export.ExportType"
          },
          "reportAllPages": {
            "type": "boolean"
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "actionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationActionTypeFilter"
            },
            "nullable": true
          },
          "difficultyTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.PhishingScenario.PhishingScenarioDifficultyType"
            },
            "nullable": true
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationProductType"
            },
            "nullable": true
          },
          "datePeriod": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardDatePeriod"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PaginationRequest"
          },
          "showOnlyFailedEvents": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserTimelineRequestParameter": {
        "type": "object",
        "properties": {
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "actionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationActionTypeFilter"
            },
            "nullable": true
          },
          "difficultyTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.PhishingScenario.PhishingScenarioDifficultyType"
            },
            "nullable": true
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationProductType"
            },
            "nullable": true
          },
          "datePeriod": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardDatePeriod"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PaginationRequest"
          },
          "showOnlyFailedEvents": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardUserWithTimelineDto": {
        "type": "object",
        "properties": {
          "rank": {
            "type": "integer",
            "format": "int32"
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "preferredLanguage": {
            "type": "string",
            "nullable": true
          },
          "points": {
            "type": "integer",
            "format": "int32"
          },
          "performance": {
            "type": "number",
            "format": "float"
          },
          "timeline": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationUserTimeLineViewResultDto"
            },
            "nullable": true
          },
          "timelineTotalCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningRequestParameter": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pagination": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PaginationRequest"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningResultDto": {
        "type": "object",
        "properties": {
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "enrollmentName": {
            "type": "string",
            "nullable": true
          },
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "trainingName": {
            "type": "string",
            "nullable": true
          },
          "trainingTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeEnum"
          },
          "trainingTypeName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "learningPathId": {
            "type": "string",
            "nullable": true
          },
          "trainingOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "enrollmentStartDate": {
            "type": "string",
            "format": "date-time"
          },
          "certificate": {
            "type": "boolean",
            "nullable": true
          },
          "points": {
            "type": "integer",
            "format": "int32"
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "trainingUrl": {
            "type": "string",
            "nullable": true
          },
          "firstOrderEnrollmentId": {
            "type": "string",
            "nullable": true
          },
          "isMaxPoints": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.PhishingTestResultDbResult": {
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "reportedCount": {
            "type": "integer",
            "format": "int32"
          },
          "earnedPoints": {
            "type": "integer",
            "format": "int32"
          },
          "missedPoints": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.PhishingTestResultSummaryDto": {
        "type": "object",
        "properties": {
          "last30Days": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.PhishingTestResultDbResult"
          },
          "accuracyChangePercentage": {
            "type": "number",
            "format": "double"
          },
          "successRate": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.UserCertificateDto": {
        "type": "object",
        "properties": {
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "enrollmentName": {
            "type": "string",
            "nullable": true
          },
          "enrollmentStartDate": {
            "type": "string",
            "format": "date-time"
          },
          "certificateId": {
            "type": "string",
            "nullable": true
          },
          "certificateName": {
            "type": "string",
            "nullable": true
          },
          "trainingUrl": {
            "type": "string",
            "nullable": true,
            "deprecated": true
          },
          "trainingStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "trainingStatus": {
            "type": "string",
            "nullable": true
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.UserGrowthDashboardAction"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.UserCertificateRequestParameter": {
        "type": "object",
        "properties": {
          "pagination": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PaginationRequest"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.UserGrowthDashboardAction": {
        "type": "object",
        "properties": {
          "actionType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.UserGrowthDashboardActionType"
          },
          "actionTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "warningMessage": {
            "type": "string",
            "nullable": true
          },
          "isEnabled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.GamificationPointScale.Dto.UserGrowthDashboardActionType": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.Google.Dto.GoogleUserGroupDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Google.Dto.GoogleUserProvisioningDto": {
        "type": "object",
        "properties": {
          "googleOAuthResourceId": {
            "type": "string",
            "nullable": true
          },
          "provisioningConfig": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Google.ProvisioningConfig"
          },
          "enableProvisioning": {
            "type": "boolean"
          },
          "provisioningResourceId": {
            "type": "string",
            "nullable": true
          },
          "groupsOfOrgUnit": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isSyncing": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncNowRequest": {
        "type": "object",
        "properties": {
          "provisioningResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncRequest": {
        "type": "object",
        "properties": {
          "googleOAuthResourceId": {
            "type": "string",
            "nullable": true
          },
          "provisioningConfig": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Google.ProvisioningConfig"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Google.Model.GoogleUserProvisioningSyncStopRequest": {
        "type": "object",
        "properties": {
          "provisioningResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Heartbeat.Dto.HeartbeatServiceResult": {
        "type": "object",
        "properties": {
          "investigations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AddInUser.Dto.HeartbeatInvestigationDto"
            },
            "nullable": true
          },
          "deleteActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AddInUser.Dto.HeartbeatInvestigationDeleteActionDto"
            },
            "nullable": true
          },
          "warningActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AddInUser.Dto.HeartbeatInvestigationWarningActionDto"
            },
            "nullable": true
          },
          "deleteAndNotifyActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AddInUser.Dto.HeartbeatInvestigationDeleteAndNotifyActionDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Heartbeat.Dto.HeartbeatStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Heartbeat.Dto.HeartbeatStatus": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardLogView": {
        "type": "object",
        "properties": {
          "analysisEngineTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "scanType": {
            "type": "integer",
            "format": "int32"
          },
          "details": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardStatView": {
        "type": "object",
        "properties": {
          "analysisEngineTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "scanType": {
            "type": "integer",
            "format": "int32"
          },
          "totalRequest": {
            "type": "integer",
            "format": "int32"
          },
          "harmfulRequest": {
            "type": "integer",
            "format": "int32"
          },
          "undetectedRequest": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardSummaryDto": {
        "type": "object",
        "properties": {
          "clientCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalAnalysisRequest": {
            "type": "integer",
            "format": "int32"
          },
          "totalAnalyzedUrl": {
            "type": "integer",
            "format": "int32"
          },
          "totalHarmfulUrl": {
            "type": "integer",
            "format": "int32"
          },
          "totalAnalyzedAttachment": {
            "type": "integer",
            "format": "int32"
          },
          "totalHarmfulAttachment": {
            "type": "integer",
            "format": "int32"
          },
          "totalUndetected": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.DashboardSummaryDto": {
        "type": "object",
        "properties": {
          "phishingReporterUserStatusCount": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.PhishingReporterUserStatusCountDto"
          },
          "notifiedEmailResultCount": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.NotifiedEmailResultCountDto"
          },
          "investigationTypeCount": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationTypeCountDto"
          },
          "roiSummary": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.RoiSummaryDto"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationAttachmentDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "md5": {
            "type": "string",
            "nullable": true
          },
          "sha512": {
            "type": "string",
            "nullable": true
          },
          "extension": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationBodyDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "keyword": {
            "type": "string",
            "nullable": true
          },
          "regex": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "investigationType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.InvestigationType"
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "expireDate": {
            "type": "string",
            "format": "date-time"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "targetUserType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.TargetUserType"
          },
          "isScanEnterpriseVault": {
            "type": "boolean"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.InvestigationStatus"
          },
          "priority": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.InvestigationPriority"
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationHeaderDto"
            },
            "nullable": true
          },
          "bodies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationBodyDto"
            },
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationAttachmentDto"
            },
            "nullable": true
          },
          "scanTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationScanTypeDto"
            },
            "nullable": true
          },
          "scanConfigurationDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.ScanConfigurationDetail"
            },
            "nullable": true
          },
          "targetUsers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationTargetUserDto"
            },
            "nullable": true
          },
          "autoAction": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.InvestigationAutoAction"
          },
          "scannedUsersCount": {
            "type": "integer",
            "format": "int32"
          },
          "completedUsersCount": {
            "type": "integer",
            "format": "int32"
          },
          "progress": {
            "type": "integer",
            "format": "int32"
          },
          "finishedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "startDateAddedHours": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "endDateAddedHours": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "matchingPlaybookName": {
            "type": "string",
            "nullable": true
          },
          "logicalOperator": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationFolderSummaryDto": {
        "type": "object",
        "properties": {
          "folderName": {
            "type": "string",
            "nullable": true
          },
          "mailCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationHeaderDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "ip": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "to": {
            "type": "string",
            "nullable": true
          },
          "cc": {
            "type": "string",
            "nullable": true
          },
          "bcc": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "senderName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationScanTypeDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "scanType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.ScanType"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationSummaryDto": {
        "type": "object",
        "properties": {
          "folders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationFolderSummaryDto"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "totalUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "scannedUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "completedScannedUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "notScannedUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalEmailCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "scannedEmailCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "estimatedTime": {
            "type": "string",
            "nullable": true
          },
          "cancelledTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "onlineUserCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationTargetUserDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "targetUser": {
            "type": "string",
            "nullable": true
          },
          "targetGroupResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationTypeCountDto": {
        "type": "object",
        "properties": {
          "manualInvestigationCount": {
            "type": "integer",
            "format": "int32"
          },
          "automaticInvestigationCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.NotifiedEmailResultCountDto": {
        "type": "object",
        "properties": {
          "harmfulCount": {
            "type": "integer",
            "format": "int32"
          },
          "reportedMailCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.PhishingReporterUserStatusCountDto": {
        "type": "object",
        "properties": {
          "onlineUsersCount": {
            "type": "integer",
            "format": "int32"
          },
          "offlineUsersCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalUserCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.RoiSummaryDto": {
        "type": "object",
        "properties": {
          "time": {
            "type": "string",
            "nullable": true
          },
          "revenue": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.RunningInvestigationDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "progress": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Dto.TopRuleDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "ruleName": {
            "type": "string",
            "nullable": true
          },
          "matchCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Search.EmailLastAction": {
        "type": "object",
        "properties": {
          "actionType": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "warningMessage": {
            "type": "string",
            "nullable": true
          },
          "isPermanentDelete": {
            "type": "boolean"
          },
          "actionResultErrorMessage": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string",
            "nullable": true
          },
          "isTooltip": {
            "type": "boolean"
          },
          "tooltipText": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Search.InvestigationEmailSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "senderName": {
            "type": "string",
            "nullable": true
          },
          "ownerEmail": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "receivedTime": {
            "type": "string",
            "format": "date-time"
          },
          "attachmentCount": {
            "type": "integer",
            "format": "int32"
          },
          "filterTags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "scanType": {
            "type": "string",
            "nullable": true
          },
          "emailLastAction": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Search.EmailLastAction"
          },
          "recipient": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "cc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "bcc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Search.InvestigationSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "incident": {
            "type": "string",
            "nullable": true
          },
          "detected": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "expireDate": {
            "type": "string",
            "format": "date-time"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "scannedUsersCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "completedUsersCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "progress": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "matchingPlaybooks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Search.MatchingPlaybook"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Search.InvestigationUserSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "filteredMailCount": {
            "type": "integer",
            "format": "int32"
          },
          "analyzedMailCount": {
            "type": "integer",
            "format": "int32"
          },
          "scanType": {
            "type": "string",
            "nullable": true
          },
          "userStatus": {
            "type": "string",
            "nullable": true
          },
          "lastSeen": {
            "type": "string",
            "format": "date-time"
          },
          "investigationStatus": {
            "type": "string",
            "nullable": true
          },
          "duration": {
            "type": "string",
            "nullable": true
          },
          "progress": {
            "type": "integer",
            "format": "int32"
          },
          "scanResultMessage": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Investigation.Search.MatchingPlaybook": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Job.Dto.JobDetailResult": {
        "type": "object",
        "properties": {
          "processResults": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Job.Dto.ProcessResult"
            },
            "nullable": true
          },
          "fromRegion": {
            "type": "string",
            "nullable": true
          },
          "toRegion": {
            "type": "string",
            "nullable": true
          },
          "totalRowCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "processedRowCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "failedRowCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "failureReason": {
            "type": "string",
            "nullable": true
          },
          "startedDate": {
            "type": "string",
            "nullable": true
          },
          "finishedDate": {
            "type": "string",
            "nullable": true
          },
          "jobId": {
            "type": "integer",
            "format": "int64"
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "progress": {
            "type": "number",
            "format": "float"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "nullable": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "estimatedTime": {
            "type": "number",
            "format": "double"
          },
          "isFinished": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Job.Dto.JobResult": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "integer",
            "format": "int64"
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "progress": {
            "type": "number",
            "format": "float"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "nullable": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "estimatedTime": {
            "type": "number",
            "format": "double"
          },
          "isFinished": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Job.Dto.ProcessErrorResult": {
        "type": "object",
        "properties": {
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "inputData": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Job.Dto.ProcessResult": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "integer",
            "format": "int32"
          },
          "currentCount": {
            "type": "integer",
            "format": "int64"
          },
          "targetCount": {
            "type": "integer",
            "format": "int64"
          },
          "processErrors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Job.Dto.ProcessErrorResult"
            },
            "nullable": true
          },
          "existsError": {
            "type": "boolean"
          },
          "createTime": {
            "type": "string",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "nullable": true
          },
          "estimatedTime": {
            "type": "number",
            "format": "double"
          },
          "isFinished": {
            "type": "boolean"
          },
          "progress": {
            "type": "number",
            "format": "float"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.CreateLandingPageTemplateReturnSearch": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "landingPageTemplate": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateSearchView"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "order": {
            "type": "integer",
            "format": "int32"
          },
          "content": {
            "type": "string",
            "nullable": true
          },
          "prompt": {
            "type": "string",
            "nullable": true
          },
          "isInvisibleCaptchaEnabled": {
            "type": "boolean"
          },
          "parentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "languageType": {
            "type": "integer",
            "format": "int32"
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "string",
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "difficultyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "urlSchemaTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "subDomain": {
            "type": "string",
            "nullable": true
          },
          "domainRecordId": {
            "type": "integer",
            "format": "int32"
          },
          "autoRotate": {
            "type": "boolean"
          },
          "pathTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "extensionTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "parameterTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "urlTemplate": {
            "type": "string",
            "nullable": true
          },
          "isAssistedByAI": {
            "type": "boolean"
          },
          "isInvisibleCaptchaEnabled": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "landingPages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageDto"
            },
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateFormDetailsDto": {
        "type": "object",
        "properties": {
          "methodTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "difficultyTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "urlSchemaTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "pathTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "extensionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "parameterTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "domainRecords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordDetailDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateSearchView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "method": {
            "type": "string",
            "nullable": true
          },
          "difficulty": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isAssistedByAI": {
            "type": "boolean"
          },
          "isInvisibleCaptchaEnabled": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.TranslateLandingPageContentResponseDto": {
        "type": "object",
        "properties": {
          "temporaryKey": {
            "type": "string",
            "nullable": true
          },
          "translatedContents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.TranslatedLandingPageContentDto"
            },
            "nullable": true
          },
          "isCompleted": {
            "type": "boolean"
          },
          "status": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.TranslatedLandingPageContentDto": {
        "type": "object",
        "properties": {
          "order": {
            "type": "integer",
            "format": "int32"
          },
          "sourceName": {
            "type": "string",
            "nullable": true
          },
          "targetLanguage": {
            "type": "string",
            "nullable": true
          },
          "targetLanguageType": {
            "type": "integer",
            "format": "int32"
          },
          "languageResourceId": {
            "type": "string",
            "nullable": true
          },
          "translatedContent": {
            "type": "string",
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "error": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Lookup.Dto.CountryTimeZoneInfoDto": {
        "type": "object",
        "properties": {
          "countryCode": {
            "type": "string",
            "nullable": true
          },
          "dateFormat": {
            "type": "string",
            "nullable": true
          },
          "timeFormat": {
            "type": "string",
            "nullable": true
          },
          "clockFormat": {
            "type": "string",
            "nullable": true
          },
          "phoneNumberCode": {
            "type": "string",
            "nullable": true
          },
          "languageCode": {
            "type": "string",
            "nullable": true
          },
          "languageName": {
            "type": "string",
            "nullable": true
          },
          "timezone": {
            "type": "string",
            "nullable": true
          },
          "languageResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Lookup.Dto.GenericCodeTypeDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Lookup.Dto.LanguageDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "isoCode": {
            "type": "string",
            "nullable": true
          },
          "isoFriendlyName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Lookup.Dto.License": {
        "type": "object",
        "properties": {
          "licenses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Lookup.Dto.LicenseDto"
            },
            "nullable": true
          },
          "allLicenseModules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Lookup.Dto.LicenseModuleDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Lookup.Dto.LicenseDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "licenseModules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Lookup.Dto.LicenseModuleDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Lookup.Dto.LicenseModuleDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "isAvailable": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Lookup.Dto.LookupDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "genericCodeTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "genericCodeTypeName": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "orderNumber": {
            "type": "integer",
            "format": "int32"
          },
          "isoCode": {
            "type": "string",
            "nullable": true
          },
          "isoFriendlyName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Lookup.Dto.LookupNameDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.MailProvider.Dto.MailProviderDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "applicationId": {
            "type": "string",
            "nullable": true
          },
          "applicationSecret": {
            "type": "string",
            "nullable": true
          },
          "directoryId": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "platform": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "userName": {
            "type": "string",
            "nullable": true
          },
          "serviceUrl": {
            "type": "string",
            "nullable": true
          },
          "accountType": {
            "type": "integer",
            "format": "int32"
          },
          "ewsSchemaVersionLookupResourceId": {
            "type": "string",
            "nullable": true
          },
          "xAnchorMailBoxHeader": {
            "type": "boolean"
          },
          "targetGroupResourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isAllTargetGroupsSelected": {
            "type": "boolean"
          },
          "authJson": {
            "type": "string",
            "nullable": true
          },
          "allowedDomains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.MailProvider.Dto.TestApiGoogleWorkspaceMailProviderServiceRequest": {
        "type": "object",
        "properties": {
          "credentialJson": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.MailProvider.Search.MailProviderSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "applicationId": {
            "type": "string",
            "nullable": true
          },
          "applicationSecret": {
            "type": "string",
            "nullable": true
          },
          "directoryId": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "platform": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "updateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Notifications.NotificationActivityLogDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "tenantId": {
            "type": "string",
            "nullable": true
          },
          "targetUserId": {
            "type": "integer",
            "format": "int32"
          },
          "tenantUserId": {
            "type": "string",
            "nullable": true
          },
          "firstSendDate": {
            "type": "string",
            "nullable": true
          },
          "lastSendingStatus": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Notifications.NotificationActivityLogStatus"
          },
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Notifications.NotificationActivityLogType"
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "lastSendDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "retryCount": {
            "type": "integer",
            "format": "int32"
          },
          "maxRetryCount": {
            "type": "integer",
            "format": "int32"
          },
          "trainingUrl": {
            "type": "string",
            "nullable": true
          },
          "trainingTitle": {
            "type": "string",
            "nullable": true
          },
          "activityContent": {
            "type": "string",
            "nullable": true
          },
          "fullName": {
            "type": "string",
            "nullable": true
          },
          "canResend": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Notifications.NotificationRenderResponse": {
        "type": "object",
        "properties": {
          "htmlContent": {
            "type": "string",
            "nullable": true
          },
          "trainingUrl": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Notifications.SearchNotificationActivityLogRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Notifications.NotificationActivityLogStatus"
          },
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Notifications.NotificationActivityLogType"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.AttachmentAnalysis": {
        "type": "object",
        "properties": {
          "result": {
            "type": "string",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "analysisEngineType": {
            "type": "string",
            "nullable": true
          },
          "analysisEngine": {
            "type": "string",
            "nullable": true
          },
          "isSendFileHash": {
            "type": "boolean"
          },
          "isSendFile": {
            "type": "boolean"
          },
          "analysisEnginePermalink": {
            "type": "string",
            "nullable": true
          },
          "scanType": {
            "type": "string",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "reportFileName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.EmailRelay": {
        "type": "object",
        "properties": {
          "hop": {
            "type": "integer",
            "format": "int32"
          },
          "delay": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "by": {
            "type": "string",
            "nullable": true
          },
          "with": {
            "type": "string",
            "nullable": true
          },
          "time": {
            "type": "string",
            "nullable": true
          },
          "utcTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.IpAnalysis": {
        "type": "object",
        "properties": {
          "result": {
            "type": "string",
            "nullable": true
          },
          "analysisEngineType": {
            "type": "string",
            "nullable": true
          },
          "analysisEngine": {
            "type": "string",
            "nullable": true
          },
          "analysisEnginePermalink": {
            "type": "string",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "reasonDescription": {
            "type": "string",
            "nullable": true
          },
          "scanTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailAIAnalysisDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "riskLevel": {
            "type": "string",
            "nullable": true
          },
          "verdict": {
            "type": "string",
            "nullable": true
          },
          "emailCategory": {
            "type": "string",
            "nullable": true
          },
          "confidence": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "confidenceLevel": {
            "type": "string",
            "nullable": true
          },
          "confirmedCompromise": {
            "type": "boolean",
            "nullable": true
          },
          "report": {
            "nullable": true
          },
          "failureReason": {
            "type": "string",
            "nullable": true
          },
          "startedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "finishedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailAttachment": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "sha512": {
            "type": "string",
            "nullable": true
          },
          "md5": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "isEncrypted": {
            "type": "boolean"
          },
          "result": {
            "type": "string",
            "nullable": true
          },
          "analysisList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.AttachmentAnalysis"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailDto": {
        "type": "object",
        "properties": {
          "htmlBody": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "folderName": {
            "type": "string",
            "nullable": true
          },
          "senderName": {
            "type": "string",
            "nullable": true
          },
          "senderIp": {
            "type": "string",
            "nullable": true
          },
          "geoLocation": {
            "type": "string",
            "nullable": true
          },
          "to": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "cc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "bcc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "publicFileName": {
            "type": "string",
            "nullable": true
          },
          "urls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailUrl"
            },
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailAttachment"
            },
            "nullable": true
          },
          "ips": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailIp"
            },
            "nullable": true
          },
          "analysisDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "receivedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
            },
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.NotifiedEmail.NotifiedEmailResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.NotifiedEmail.NotifiedEmailStatus"
          },
          "isNotifyUser": {
            "type": "boolean"
          },
          "customMessage": {
            "type": "string",
            "nullable": true
          },
          "emailRelays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.EmailRelay"
            },
            "nullable": true
          },
          "plainTextHeader": {
            "type": "string",
            "nullable": true
          },
          "notifiedEmailInvestigation": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailInvestigationDto"
          },
          "notificationTemplateResourceId": {
            "type": "string",
            "nullable": true
          },
          "reportReasonText": {
            "type": "string",
            "nullable": true
          },
          "reportComment": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailForEditDto": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.NotifiedEmail.NotifiedEmailResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.NotifiedEmail.NotifiedEmailStatus"
          },
          "notifiedEmailInvestigation": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailInvestigationDto"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailInvestigationAttachmentDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "sha512": {
            "type": "string",
            "nullable": true
          },
          "md5": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "isFlagged": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailInvestigationDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "to": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "cc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "bcc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "urls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailInvestigationUrlDto"
            },
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailInvestigationAttachmentDto"
            },
            "nullable": true
          },
          "senderIp": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailInvestigationUrlDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "isFlagged": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailIp": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "ip": {
            "type": "string",
            "nullable": true
          },
          "result": {
            "type": "string",
            "nullable": true
          },
          "analysisList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.IpAnalysis"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailStatsDto": {
        "type": "object",
        "properties": {
          "emailCount": {
            "type": "integer",
            "format": "int32"
          },
          "userCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailUrl": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "result": {
            "type": "string",
            "nullable": true
          },
          "qrCodeSource": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.NotifiedEmail.NotifiedEmailUrlQrCodeSource"
          },
          "qrCodeSourceDefinition": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "analysisList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.UrlAnalysis"
            },
            "nullable": true
          },
          "redirectUrls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailUrl"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.TopReportersDto": {
        "type": "object",
        "properties": {
          "reporterEmail": {
            "type": "string",
            "nullable": true
          },
          "reliabilityPoint": {
            "type": "string",
            "nullable": true
          },
          "reliability": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Dto.UrlAnalysis": {
        "type": "object",
        "properties": {
          "result": {
            "type": "string",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "analysisEngineType": {
            "type": "string",
            "nullable": true
          },
          "analysisEngine": {
            "type": "string",
            "nullable": true
          },
          "analysisEnginePermalink": {
            "type": "string",
            "nullable": true
          },
          "reasonDescription": {
            "type": "string",
            "nullable": true
          },
          "isFromCache": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Search.MatchingNotifiedEmailSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "reportedBy": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "createDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Search.MatchingPlaybook": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Search.NotifiedEmailSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "reportedBy": {
            "type": "string",
            "nullable": true
          },
          "senderIp": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "attachmentCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "result": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdateDate": {
            "type": "string",
            "nullable": true
          },
          "matchingPlaybooks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Search.MatchingPlaybook"
            },
            "nullable": true
          },
          "total": {
            "type": "integer",
            "format": "int64"
          },
          "senderName": {
            "type": "string",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "clusteredResourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "reportReason": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "reportReasonText": {
            "type": "string",
            "nullable": true
          },
          "reportComment": {
            "type": "string",
            "nullable": true
          },
          "verdict": {
            "type": "string",
            "nullable": true
          },
          "riskLevel": {
            "type": "string",
            "nullable": true
          },
          "emailCategory": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.NotifiedEmail.Search.NotifiedEmailTrendSearchView": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "nullable": true
          },
          "result": {
            "type": "string",
            "nullable": true
          },
          "emailCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.OpenAI.Dto.GetDialogBoxSettingsTranslationServiceRequest": {
        "type": "object",
        "properties": {
          "languageJson": {
            "type": "string",
            "nullable": true
          },
          "languageName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.OpenAI.Dto.PsEmailTemplateTranslationResponseDto": {
        "type": "object",
        "properties": {
          "languageResourceId": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "error": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.OpenAI.Dto.TranslationLanguageDto": {
        "type": "object",
        "properties": {
          "languageResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PBIReport.Dto.PBIEmbedParamsDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "embedReport": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PBIReport.Dto.PBIEmbedReportDto"
          },
          "embedToken": {
            "$ref": "#/components/schemas/Microsoft.PowerBI.Api.Models.EmbedToken"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PBIReport.Dto.PBIEmbedReportDto": {
        "type": "object",
        "properties": {
          "reportId": {
            "type": "string",
            "nullable": true
          },
          "reportName": {
            "type": "string",
            "nullable": true
          },
          "embedUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PBIReport.Dto.PBIReportDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "workspaceId": {
            "type": "string",
            "nullable": true
          },
          "reportId": {
            "type": "string",
            "nullable": true
          },
          "reportType": {
            "type": "string",
            "nullable": true
          },
          "reportGroup": {
            "type": "integer",
            "format": "int32"
          },
          "reportGroupName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "orderNumber": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.CampaignTargetGroupItem": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "usersCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.CampaignTargetGroupsResult": {
        "type": "object",
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.CampaignTargetGroupItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.CampaignType": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.EmailDeliverySetting": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "integer",
            "format": "int32"
          },
          "isDefault": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.EmailDeliverySettingFastLaunchModel": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.EmailDeliverySettingModel": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.EmailDeliverySetting"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto": {
        "type": "object",
        "properties": {
          "tagName": {
            "type": "string",
            "nullable": true
          },
          "fallbackValue": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagScenarioValidationDto": {
        "type": "object",
        "properties": {
          "scenarioResourceId": {
            "type": "string",
            "nullable": true
          },
          "scenarioName": {
            "type": "string",
            "nullable": true
          },
          "templates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagTemplateValidationDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagTemplateValidationDto": {
        "type": "object",
        "properties": {
          "templateType": {
            "type": "string",
            "nullable": true
          },
          "templateResourceId": {
            "type": "string",
            "nullable": true
          },
          "templateName": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagValidationDetail"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagValidationDetail": {
        "type": "object",
        "properties": {
          "tagName": {
            "type": "string",
            "nullable": true
          },
          "isUsed": {
            "type": "boolean"
          },
          "usersWithEmptyValue": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignCategoryTrainingDto": {
        "type": "object",
        "properties": {
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "trainingName": {
            "type": "string",
            "nullable": true
          },
          "trainingLanguageIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "emailPeriodTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EmailPeriodTypeEnum"
          },
          "periodCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "reminderEndTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.ReminderEndTypeEnum"
          },
          "isEnrollmentReminderActive": {
            "type": "boolean"
          },
          "awardCertificate": {
            "type": "boolean"
          },
          "enrollmentSendTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EnrollmentSendTypeEnum"
          },
          "certificateConfigSendType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.CertificateConfigSendTypeEnum"
          },
          "sendTemplatesInPreferredLanguage": {
            "type": "boolean"
          },
          "trainingRedirectPage": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.TrainingRedirectPageDTO"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "phishingScenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignScenarioDto"
            },
            "nullable": true
          },
          "smtpSetting": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
          },
          "directEmailSetting": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
          },
          "emailDeliverySettingType": {
            "type": "integer",
            "format": "int32"
          },
          "scheduleTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "format": "int32"
          },
          "distributionStartTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "distributionTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionEmailOver": {
            "type": "integer",
            "format": "int32"
          },
          "distributionEmailOverTimeTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "distributionDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sendingLimit": {
            "type": "integer",
            "format": "int32"
          },
          "excludeFromReports": {
            "type": "boolean"
          },
          "sendOnlyActiveUsers": {
            "type": "boolean"
          },
          "sendRandomlyUsers": {
            "type": "boolean"
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "targetGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          },
          "emailPeriodTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EmailPeriodTypeEnum"
          },
          "periodCount": {
            "type": "integer",
            "format": "int32"
          },
          "reminderEndTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.ReminderEndTypeEnum"
          },
          "awardCertificate": {
            "type": "boolean"
          },
          "isEnrollmentReminderActive": {
            "type": "boolean"
          },
          "useTargetUserTimeZone": {
            "type": "boolean"
          },
          "categoryFilter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          },
          "categoryDistributionType": {
            "type": "integer",
            "format": "int32"
          },
          "clickedUserGroupResourceId": {
            "type": "string",
            "nullable": true
          },
          "trainingForCategory": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignCategoryTrainingDto"
          },
          "emailReplySettings": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignEmailReplyDTO"
          },
          "sendUserPreferredLanguage": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "phishingScenarioType": {
            "type": "integer",
            "format": "int32"
          },
          "barrelDelayMinutes": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "barrelOrderType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "barrelSkipPayloadIfReported": {
            "type": "boolean",
            "nullable": true
          },
          "barrelResponsiveDelivery": {
            "type": "boolean",
            "nullable": true
          },
          "barrelUrgentFlagType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignEmailReplyDTO": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean"
          },
          "isSaveContentEnabled": {
            "type": "boolean"
          },
          "isOutOfOfficeEnabled": {
            "type": "boolean"
          },
          "customReplyToAddress": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignFormDetailsDto": {
        "type": "object",
        "properties": {
          "distributionEmailOverTimeTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "distributionSmtpDelayTimeTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "phishingCampaignCategoryDistributionType": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "distributionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "scheduleTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "sendRandomlyUsersCalculateTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "status": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "sendUserPreferredLanguageTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignPreviewDto": {
        "type": "object",
        "properties": {
          "smtpSettingDto": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SMTPSetting.Dto.SmtpSettingDto"
          },
          "phishingScenarioPreviewDto": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioPreviewDto"
          },
          "directEmailSettingDto": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.DirectEmailSettingDto"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignPreviewListDto": {
        "type": "object",
        "properties": {
          "smtpSettingDto": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SMTPSetting.Dto.SmtpSettingDto"
          },
          "phishingScenarioPreviewList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioPreviewDto"
            },
            "nullable": true
          },
          "directEmailSettingDto": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.DirectEmailSettingDto"
          },
          "categoryList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignScenarioDto": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "trainingName": {
            "type": "string",
            "nullable": true
          },
          "trainingLanguageIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "emailPeriodTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EmailPeriodTypeEnum"
          },
          "periodCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "reminderEndTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.ReminderEndTypeEnum"
          },
          "isEnrollmentReminderActive": {
            "type": "boolean"
          },
          "awardCertificate": {
            "type": "boolean"
          },
          "enrollmentSendTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EnrollmentSendTypeEnum"
          },
          "certificateConfigSendType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.CertificateConfigSendTypeEnum"
          },
          "sendTemplatesInPreferredLanguage": {
            "type": "boolean"
          },
          "trainingRedirectPage": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.TrainingRedirectPageDTO"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignScheduleInfoScenarioListViewModel": {
        "type": "object",
        "properties": {
          "scheduleDate": {
            "type": "string",
            "nullable": true
          },
          "scenarioName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignScheduleInfoViewModel": {
        "type": "object",
        "properties": {
          "scenarioListViewModels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignScheduleInfoScenarioListViewModel"
            },
            "nullable": true
          },
          "isStarting": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "method": {
            "type": "string",
            "nullable": true
          },
          "methodDetail": {
            "type": "string",
            "nullable": true
          },
          "scenarioCount": {
            "type": "string",
            "nullable": true
          },
          "instanceCount": {
            "type": "string",
            "nullable": true
          },
          "targetUsers": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "instanceGroup": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "hasTraining": {
            "type": "boolean"
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastLaunch": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "emailDelivery": {
            "type": "string",
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          },
          "categoryDistributionType": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignSendingInfoViewModel": {
        "type": "object",
        "properties": {
          "batchUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "batchEverySendSecond": {
            "type": "integer",
            "format": "int32"
          },
          "totalUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalSendSecond": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingScenarioTrainingBaseDTO": {
        "type": "object",
        "properties": {
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "trainingLanguageIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "enrollmentReminder": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentReminderDTO"
          },
          "awardCertificate": {
            "type": "boolean"
          },
          "enrollmentSendTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EnrollmentSendTypeEnum"
          },
          "certificateConfigSendType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.CertificateConfigSendTypeEnum"
          },
          "sendTemplatesInPreferredLanguage": {
            "type": "boolean"
          },
          "trainingRedirectPage": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.TrainingRedirectPageDTO"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingScenarioTrainingDTO": {
        "type": "object",
        "properties": {
          "phishingScenarioResourceId": {
            "type": "string",
            "nullable": true
          },
          "trainingRedirectPage": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.TrainingRedirectPageDTO"
          },
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "trainingLanguageIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "enrollmentReminder": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentReminderDTO"
          },
          "awardCertificate": {
            "type": "boolean"
          },
          "enrollmentSendTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EnrollmentSendTypeEnum"
          },
          "certificateConfigSendType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.CertificateConfigSendTypeEnum"
          },
          "sendTemplatesInPreferredLanguage": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.QuishingCampaignPreviewListDto": {
        "type": "object",
        "properties": {
          "smtpSettingDto": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SMTPSetting.Dto.SmtpSettingDto"
          },
          "quishingScenarioPreviewList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.QuishingScenarioPreviewDto"
            },
            "nullable": true
          },
          "directEmailSettingDto": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.DirectEmailSettingDto"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.TrainingRedirectPageDTO": {
        "type": "object",
        "properties": {
          "informationMessage": {
            "type": "string",
            "nullable": true
          },
          "redirectMessage": {
            "type": "string",
            "nullable": true
          },
          "startButtonLabel": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.ValidateMergeTagsResultDto": {
        "type": "object",
        "properties": {
          "totalTargetUsers": {
            "type": "integer",
            "format": "int32"
          },
          "shouldShowToUser": {
            "type": "boolean"
          },
          "showManagerInput": {
            "type": "boolean"
          },
          "showManagerEmailInput": {
            "type": "boolean"
          },
          "scenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagScenarioValidationDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaign.Dto.ValidateMergeTagsServiceRequest": {
        "type": "object",
        "properties": {
          "phishingCampaignId": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "scenarioResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignExcludedIP.Dto.PhishingCampaignExcludedIPDto": {
        "type": "object",
        "properties": {
          "phishingCampaignExcludedIPList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignExcludedIP.Dto.PhishingCampaignExcludedIPItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignExcludedIP.Dto.PhishingCampaignExcludedIPItemDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "excludedIP": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUsersSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "totalSandBoxActivityCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUsersSearchModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "totalSandBoxActivityCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUsersSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "totalSandBoxActivityCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUsersSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "totalSandBoxActivityCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUsersSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.EmailEventInfoModel": {
        "type": "object",
        "properties": {
          "events": {
            "type": "array",
            "items": { },
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "to": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "messageId": {
            "type": "string",
            "nullable": true
          },
          "senderIp": {
            "type": "string",
            "nullable": true
          },
          "serviceProvider": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingActivityUsersSearchView": {
        "type": "object",
        "properties": {
          "targetUserId": {
            "type": "integer",
            "format": "int32"
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "campaignName": {
            "type": "string",
            "nullable": true
          },
          "opened": {
            "type": "integer",
            "format": "int32"
          },
          "clicked": {
            "type": "integer",
            "format": "int32"
          },
          "replied": {
            "type": "integer",
            "format": "int32"
          },
          "attachmentOpened": {
            "type": "integer",
            "format": "int32"
          },
          "dataSubmitted": {
            "type": "integer",
            "format": "int32"
          },
          "reported": {
            "type": "integer",
            "format": "int32"
          },
          "scenarioName": {
            "type": "string",
            "nullable": true
          },
          "difficulty": {
            "type": "string",
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "totalRowCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignInstance": {
        "type": "object",
        "properties": {
          "excludeFromReports": {
            "type": "boolean"
          },
          "scheduledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "nullable": true
          },
          "scheduleTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "distributionStartTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "distributionStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "sendingLimit": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "useTargetUserTimeZone": {
            "type": "boolean"
          },
          "emailReplySettings": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignEmailReplyDTO"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobFormDetailsDto": {
        "type": "object",
        "properties": {
          "statuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "passwordComplexityTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "userStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "methodTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "difficultyTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailAttachmentOpenedSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "openedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "systemSandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "activityType": {
            "type": "string",
            "nullable": true
          },
          "systemActivityType": {
            "type": "string",
            "nullable": true
          },
          "isChangedActivity": {
            "type": "boolean",
            "readOnly": true
          },
          "openedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailClickedSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "clickedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "systemSandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "activityType": {
            "type": "string",
            "nullable": true
          },
          "systemActivityType": {
            "type": "string",
            "nullable": true
          },
          "isChangedActivity": {
            "type": "boolean",
            "readOnly": true
          },
          "clickedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailOpenedSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "openedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "systemSandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "activityType": {
            "type": "string",
            "nullable": true
          },
          "systemActivityType": {
            "type": "string",
            "nullable": true
          },
          "isChangedActivity": {
            "type": "boolean",
            "readOnly": true
          },
          "openedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailRepliedSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "to": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "type": "string",
            "nullable": true
          },
          "replySent": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "replyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "replyType": {
            "type": "string",
            "nullable": true
          },
          "repliedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailReportedSearchView": {
        "type": "object",
        "properties": {
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "reportedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "reportedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailSubmittedSearchView": {
        "type": "object",
        "properties": {
          "submittedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submittedData": {
            "type": "string",
            "nullable": true
          },
          "submittedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserMfaSubmittedSearchView": {
        "type": "object",
        "properties": {
          "submittedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submittedData": {
            "type": "string",
            "nullable": true
          },
          "submittedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUsersSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "phishingScenarioName": {
            "type": "string",
            "nullable": true
          },
          "phishingScenarioLanguage": {
            "type": "string",
            "nullable": true
          },
          "emailTemplateLanguage": {
            "type": "string",
            "nullable": true
          },
          "lastOpenedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastOpenedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "openedCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastClickedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastClickedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "clickedCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastSubmittedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastSubmittedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "submittedCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastAttachmentOpenedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastAttachmentOpenedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "attachmentOpenedCount": {
            "type": "integer",
            "format": "int32"
          },
          "minPasswordComplexity": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "lastSendingTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastSendingTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "reportedCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastReportedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastReportedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "emailDelivery": {
            "type": "string",
            "nullable": true
          },
          "mfaSubmittedCount": {
            "type": "integer",
            "format": "int32"
          },
          "activityType": {
            "type": "string",
            "nullable": true
          },
          "systemActivityType": {
            "type": "string",
            "nullable": true
          },
          "mfaLastSubmittedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "mfaLastSubmittedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "replyType": {
            "type": "string",
            "nullable": true
          },
          "replySent": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "replySentToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "isTrackingReplyContentEnabled": {
            "type": "boolean"
          },
          "isTrackingReplyOutOfOfficeEnabled": {
            "type": "boolean"
          },
          "preferredLanguage": {
            "type": "string",
            "nullable": true
          },
          "targetGroups": {
            "type": "string",
            "nullable": true
          },
          "feedbackText": {
            "type": "string",
            "nullable": true
          },
          "barrelEmailRole": {
            "type": "string",
            "nullable": true
          },
          "targetUserId": {
            "type": "integer",
            "format": "int32"
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryLanguageInfo": {
        "type": "object",
        "properties": {
          "languageId": {
            "type": "string",
            "nullable": true
          },
          "languageShortCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResult": {
        "type": "object",
        "properties": {
          "phishingCampaignResourceId": {
            "type": "string",
            "nullable": true
          },
          "phishingCampaignName": {
            "type": "string",
            "nullable": true
          },
          "campaignInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultCampaignInfo"
          },
          "settings": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultSettings"
          },
          "targetUsers": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultTargetUsers"
          },
          "scenarioStats": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultScenarioStats"
          },
          "scenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultScenarioListInfo"
            },
            "nullable": true
          },
          "scenariosGeneralInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultScenariosGeneralInfo"
          },
          "landingPageTemplateInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultLandingPageTemplateInfo"
          },
          "trainingInfoForCategory": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultTrainingInfo"
          },
          "enrollmentInfoForCategory": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultEnrollmentInfo"
          },
          "smartGroupInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultCampaignSmartGroupInfo"
          },
          "barrelOptions": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultBarrelOptions"
          },
          "campaignDurationExpired": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultBarrelOptions": {
        "type": "object",
        "properties": {
          "delayMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "orderType": {
            "type": "string",
            "nullable": true
          },
          "skipPayloadIfReported": {
            "type": "boolean"
          },
          "responsiveDelivery": {
            "type": "boolean"
          },
          "urgentFlagType": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultCampaignInfo": {
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "scheduledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "totalTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "emailDeliveredUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "emailNotDeliveredUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "emailDeliveryStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "emailDeliveryEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          },
          "emailDeliveryDuration": {
            "type": "string",
            "nullable": true
          },
          "scheduleTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "categoryDistributionType": {
            "type": "string",
            "nullable": true
          },
          "trackingReplyInfo": {
            "type": "string",
            "nullable": true
          },
          "sendUserPreferredLanguage": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultCampaignSmartGroupInfo": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultEmailTemplateInfo": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "categoryResourceId": {
            "type": "string",
            "nullable": true
          },
          "difficultyResourceId": {
            "type": "string",
            "nullable": true
          },
          "fromName": {
            "type": "string",
            "nullable": true
          },
          "fromAddress": {
            "type": "string",
            "nullable": true
          },
          "languageShortCode": {
            "type": "string",
            "nullable": true
          },
          "phishingFileName": {
            "type": "string",
            "nullable": true
          },
          "phishingFileType": {
            "type": "string",
            "nullable": true
          },
          "phishingFileUrl": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultEnrollmentInfo": {
        "type": "object",
        "properties": {
          "enrollmentId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultLandingPageTemplateInfo": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "difficultyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "urlTemplate": {
            "type": "string",
            "nullable": true
          },
          "languageShortCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultScenarioInfo": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "difficultyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "languageShortCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultScenarioListInfo": {
        "type": "object",
        "properties": {
          "scenarioInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultScenarioInfo"
          },
          "trainingInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultTrainingInfo"
          },
          "enrollmentInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultEnrollmentInfo"
          },
          "emailTemplateInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultEmailTemplateInfo"
          },
          "emailTemplateInfos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultEmailTemplateInfo"
            },
            "nullable": true
          },
          "landingPageTemplateInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultLandingPageTemplateInfo"
          },
          "sendTemplatesInPreferredLanguage": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultScenarioStats": {
        "type": "object",
        "properties": {
          "openedEmail": {
            "type": "integer",
            "format": "int64"
          },
          "clickedEmail": {
            "type": "integer",
            "format": "int64"
          },
          "submittedEmail": {
            "type": "integer",
            "format": "int64"
          },
          "attachmentOpenedEmail": {
            "type": "integer",
            "format": "int64"
          },
          "reportedEmail": {
            "type": "integer",
            "format": "int64"
          },
          "noResponseEmail": {
            "type": "integer",
            "format": "int64"
          },
          "notDelivered": {
            "type": "integer",
            "format": "int64"
          },
          "failedToSend": {
            "type": "integer",
            "format": "int64"
          },
          "mfa": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultScenariosGeneralInfo": {
        "type": "object",
        "properties": {
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "difficultyTypeIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "languageShortCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultSettings": {
        "type": "object",
        "properties": {
          "excludeFromReports": {
            "type": "boolean"
          },
          "duration": {
            "type": "integer",
            "format": "int32"
          },
          "smtpName": {
            "type": "string",
            "nullable": true
          },
          "directEmailSettingName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultTargetUsers": {
        "type": "object",
        "properties": {
          "randomlyUsersCount": {
            "type": "integer",
            "format": "int32"
          },
          "targetGroupsCount": {
            "type": "integer",
            "format": "int32"
          },
          "sendRandomlyUsers": {
            "type": "boolean"
          },
          "sendOnlyActiveUsers": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResultTrainingInfo": {
        "type": "object",
        "properties": {
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "trainingDescription": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "languageList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryLanguageInfo"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignTargetGroupsResult": {
        "type": "object",
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignTargetGroupsResultGroup"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignTargetGroupsResultGroup": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "usersCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Search.PhishingCampaignJobReportSearchView": {
        "type": "object",
        "properties": {
          "phishingCampaignResourceId": {
            "type": "string",
            "nullable": true
          },
          "instanceGroup": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "totalOpenedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalClickedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalSubmittedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalAttachmentOpenedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalNoResponseCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "emailDeliveredUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "method": {
            "type": "string",
            "nullable": true
          },
          "methodDetail": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "emailDelivery": {
            "type": "string",
            "nullable": true
          },
          "totalSubmittedMFACount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingCampaignJob.Search.PhishingCampaignJobSearchView": {
        "type": "object",
        "properties": {
          "instanceGroup": {
            "type": "integer",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "totalTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "frequencyGroup": {
            "type": "integer",
            "format": "int32"
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          },
          "frequencyDescription": {
            "type": "string",
            "nullable": true
          },
          "frequencyCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingReporter.Dto.ConnectGraphAccountRequest": {
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingReporter.Dto.PhishingReporterDialogBoxSetting": {
        "type": "object",
        "properties": {
          "languageResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageName": {
            "type": "string",
            "nullable": true
          },
          "msgBoxTitle": {
            "type": "string",
            "nullable": true
          },
          "msgBoxBtnYesText": {
            "type": "string",
            "nullable": true
          },
          "msgBoxBtnNoText": {
            "type": "string",
            "nullable": true
          },
          "msgBoxBtnCancelText": {
            "type": "string",
            "nullable": true
          },
          "msgBoxBtnOkText": {
            "type": "string",
            "nullable": true
          },
          "analysisThankYouMessage": {
            "type": "string",
            "nullable": true
          },
          "emailFormatErrorMessage": {
            "type": "string",
            "nullable": true
          },
          "noInternetConnectionMessage": {
            "type": "string",
            "nullable": true
          },
          "emailSendingErrorMessage": {
            "type": "string",
            "nullable": true
          },
          "emailSelectionErrorMessage": {
            "type": "string",
            "nullable": true
          },
          "badFormatEmailMessage": {
            "type": "string",
            "nullable": true
          },
          "isConfirmationBeforeAnalysis": {
            "type": "boolean"
          },
          "analysisConfirmationMessage": {
            "type": "string",
            "nullable": true
          },
          "isDeleteEmailBeforeAnalysis": {
            "type": "boolean"
          },
          "isDeleteWithoutConfirmation": {
            "type": "boolean"
          },
          "analysisEmailDeleteMessage": {
            "type": "string",
            "nullable": true
          },
          "isSendSimulationMails": {
            "type": "boolean"
          },
          "simulationMailMessage": {
            "type": "string",
            "nullable": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "addInName": {
            "type": "string",
            "nullable": true
          },
          "brandName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingReporter.Dto.PhishingReporterDto": {
        "type": "object",
        "properties": {
          "addInName": {
            "type": "string",
            "nullable": true
          },
          "brandName": {
            "type": "string",
            "nullable": true
          },
          "warningLabel": {
            "type": "string",
            "nullable": true
          },
          "addInBackgroundColor": {
            "type": "string",
            "nullable": true
          },
          "isAddInTextCentered": {
            "type": "boolean"
          },
          "maxLogFileSize": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isProcessAttachmentOnTheFly": {
            "type": "boolean"
          },
          "to": {
            "type": "string",
            "nullable": true
          },
          "cc": {
            "type": "string",
            "nullable": true
          },
          "bcc": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "type": "string",
            "nullable": true
          },
          "enterpriseVaultUrl": {
            "type": "string",
            "nullable": true
          },
          "apiUrl": {
            "type": "string",
            "nullable": true
          },
          "apiKey": {
            "type": "string",
            "nullable": true
          },
          "companyKey": {
            "type": "string",
            "nullable": true
          },
          "isEnableProxy": {
            "type": "boolean"
          },
          "isEnableAddIn": {
            "type": "boolean"
          },
          "isSendInformationEmail": {
            "type": "boolean"
          },
          "writeAddinStatusToHKLM": {
            "type": "boolean"
          },
          "writeAddinStatusToHKCU": {
            "type": "boolean"
          },
          "proxyMode": {
            "type": "integer",
            "format": "int32"
          },
          "proxyAddress": {
            "type": "string",
            "nullable": true
          },
          "proxyPort": {
            "type": "string",
            "nullable": true
          },
          "proxyUserName": {
            "type": "string",
            "nullable": true
          },
          "proxyUserPassword": {
            "type": "string",
            "nullable": true
          },
          "isGraphAccountConnected": {
            "type": "boolean"
          },
          "graphAccountTenantId": {
            "type": "string",
            "nullable": true
          },
          "isAppPermissionAccessGranted": {
            "type": "boolean"
          },
          "sendUsACopy": {
            "type": "boolean"
          },
          "isMicrosoftDefenderIntegrationEnabled": {
            "type": "boolean"
          },
          "defenderReportingEmailAddress": {
            "type": "string",
            "nullable": true
          },
          "dialogBoxSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingReporter.Dto.PhishingReporterDialogBoxSetting"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingReporter.Dto.PhishingReporterSummaryViewDto": {
        "type": "object",
        "properties": {
          "onlineUsersCount": {
            "type": "integer",
            "format": "int32"
          },
          "offlineUsersCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalUsersCount": {
            "type": "integer",
            "format": "int32"
          },
          "addInVersion": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingReporter.Dto.Setting": {
        "type": "object",
        "properties": {
          "applicationId": {
            "type": "string",
            "nullable": true
          },
          "redirectUri": {
            "type": "string",
            "nullable": true
          },
          "appPermissionAuthorizationUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingReporter.Search.GeneratedApplicationHistorySearchView": {
        "type": "object",
        "properties": {
          "applicationType": {
            "type": "string",
            "nullable": true
          },
          "version": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "argument": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingReporter.Search.PhishingReporterUserSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "lastSeen": {
            "type": "string",
            "format": "date-time"
          },
          "hostName": {
            "type": "string",
            "nullable": true
          },
          "addInVersion": {
            "type": "string",
            "nullable": true
          },
          "addInStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "addInStatusName": {
            "type": "string",
            "nullable": true
          },
          "diagnosticToolStatus": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "diagnosticToolLastSeen": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "addInDisabledReason": {
            "type": "string",
            "nullable": true
          },
          "addInDisabledLastDisabledTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "operatingSystemEdition": {
            "type": "string",
            "nullable": true
          },
          "osVersion": {
            "type": "string",
            "nullable": true
          },
          "outlookVersion": {
            "type": "string",
            "nullable": true
          },
          "outlookArchitecture": {
            "type": "string",
            "nullable": true
          },
          "bootTime": {
            "type": "string",
            "nullable": true
          },
          "hklmLoadBehaviorValue": {
            "type": "string",
            "nullable": true
          },
          "osAccountLoadBehaviorValue": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioCategoryInfoSearchViewDto": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "nullable": true
          },
          "method": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "type": "string",
            "nullable": true
          },
          "difficulty": {
            "type": "string",
            "nullable": true
          },
          "numberOfScenarios": {
            "type": "string",
            "nullable": true
          },
          "totalRowCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioDto": {
        "type": "object",
        "properties": {
          "emailTemplateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "emailTemplateResourceId": {
            "type": "string",
            "nullable": true
          },
          "mfaSmsSenderNumber": {
            "type": "string",
            "nullable": true
          },
          "mfaTextTemplate": {
            "type": "string",
            "nullable": true
          },
          "mfaSmsSenderNumberResourceId": {
            "type": "string",
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Lookup.Dto.LookupDto"
            },
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "difficultyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "landingPageTemplateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "landingPageTemplateResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioFormDetailsDto": {
        "type": "object",
        "properties": {
          "methodTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "difficultyTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "companyLanguageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "preferredLanguageTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioPreviewDto": {
        "type": "object",
        "properties": {
          "emailTemplate": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.PsEmailTemplateDto"
          },
          "trainingDetail": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingDetailDTO"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "difficultyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "methodTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "landingPageTemplate": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateDto"
          },
          "mfaSmsSenderNumber": {
            "type": "string",
            "nullable": true
          },
          "mfaTextTemplate": {
            "type": "string",
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Lookup.Dto.LookupDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "quishingType": {
            "type": "string",
            "nullable": true
          },
          "method": {
            "type": "string",
            "nullable": true
          },
          "difficulty": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "languageTypeCode": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          },
          "isSelected": {
            "type": "boolean"
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Lookup.Dto.LookupNameDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioStatisticsGroupByDto": {
        "type": "object",
        "properties": {
          "language": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.StatisticsDto"
            },
            "nullable": true
          },
          "attackType": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.StatisticsDto"
            },
            "nullable": true
          },
          "brand": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.StatisticsDto"
            },
            "nullable": true
          },
          "region": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.StatisticsDto"
            },
            "nullable": true
          },
          "emotion": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.StatisticsDto"
            },
            "nullable": true
          },
          "industry": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.StatisticsDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingScenario.Dto.QuishingScenarioPreviewDto": {
        "type": "object",
        "properties": {
          "emailTemplate": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.PsEmailTemplateDto"
          },
          "quishingTemplate": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Dto.QuishingTemplateDto"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "difficultyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "methodTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "landingPageTemplate": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateDto"
          },
          "mfaSmsSenderNumber": {
            "type": "string",
            "nullable": true
          },
          "mfaTextTemplate": {
            "type": "string",
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Lookup.Dto.LookupDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmishingScenarioPreviewDto": {
        "type": "object",
        "properties": {
          "textTemplate": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsTextTemplate.Dto.PsTextTemplateDto"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "difficultyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "methodTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "landingPageTemplate": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateDto"
          },
          "mfaSmsSenderNumber": {
            "type": "string",
            "nullable": true
          },
          "mfaTextTemplate": {
            "type": "string",
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Lookup.Dto.LookupDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmsPhoneNumberDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PhishingScenario.Dto.StatisticsDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "number",
            "format": "double"
          },
          "percentage": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookActionAnalyzerDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "integrationId": {
            "type": "string",
            "nullable": true
          },
          "isCheckHash": {
            "type": "boolean"
          },
          "isCheckFile": {
            "type": "boolean"
          },
          "isCheckUrl": {
            "type": "boolean"
          },
          "isCheckSenderIP": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookActionDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "markType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Playbook.PlaybookMarkType"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookActionInvestigationDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "isCreatedByAnalyzer": {
            "type": "boolean"
          },
          "scanTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.ScanConfiguration"
            },
            "nullable": true
          },
          "scanConfigurationDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.ScanConfigurationDetail"
            },
            "nullable": true
          },
          "autoDetectFilters": {
            "type": "boolean"
          },
          "filters": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "emailDateRangeType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Playbook.PlaybookInvestigationEmailDateRangeType"
          },
          "durationType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Playbook.PlaybookInvestigationDurationType"
          },
          "targetUserType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.TargetUserType"
          },
          "targetUsers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "targetUsersForAutocomplete": {
            "type": "array",
            "items": { },
            "nullable": true
          },
          "actionType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Playbook.PlaybookInvestigationActionType"
          },
          "actionNotifyTargetUserType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Playbook.PlaybookInvestigationActionNotifyTargetUserType"
          },
          "actionNotifyTargetUsers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "actionNotifyTargetUsersForAutocomplete": {
            "type": "array",
            "items": { },
            "nullable": true
          },
          "emailTemplateId": {
            "type": "integer",
            "format": "int32"
          },
          "autoAction": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.InvestigationAutoAction"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookActionNotificationDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "targetUserType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Playbook.PlaybookNotifyTargetUserType"
          },
          "targetUsers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "emailTemplateId": {
            "type": "string",
            "nullable": true
          },
          "analysisResultFilters": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookActionStatusDto": {
        "type": "object",
        "properties": {
          "actionStatusType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Playbook.PlaybookActionStatusType"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookCondition": {
        "type": "object",
        "properties": {
          "operator": {
            "type": "string",
            "nullable": true
          },
          "conditionGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookConditionGroup"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookConditionGroup": {
        "type": "object",
        "properties": {
          "operator": {
            "type": "string",
            "nullable": true
          },
          "conditionItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookConditionItem"
            },
            "nullable": true
          },
          "conditionGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookConditionGroup"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookConditionItem": {
        "type": "object",
        "properties": {
          "fieldName": {
            "type": "string",
            "nullable": true
          },
          "operator": {
            "type": "string",
            "nullable": true
          },
          "format": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Playbook.PlaybookPriority"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "createDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "condition": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookCondition"
          },
          "playbookAction": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookActionDto"
          },
          "playbookActionStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookActionStatusDto"
          },
          "playbookActionAnalyzers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookActionAnalyzerDto"
            },
            "nullable": true
          },
          "playbookActionInvestigations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookActionInvestigationDto"
            },
            "nullable": true
          },
          "playbookActionNotifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookActionNotificationDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Playbook.Search.PlaybookSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "matchingCount": {
            "type": "integer",
            "format": "int32"
          },
          "priority": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ProxySetting.Dto.ProxySettingDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "port": {
            "type": "string",
            "nullable": true
          },
          "authenticationTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "username": {
            "type": "string",
            "nullable": true
          },
          "password": {
            "type": "string",
            "nullable": true
          },
          "isDefault": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ProxySetting.Dto.SearchProxySettingDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "port": {
            "type": "string",
            "nullable": true
          },
          "authenticationTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "authenticationTypeName": {
            "type": "string",
            "nullable": true
          },
          "isDefault": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.BarrelPayloadServiceDto": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "phishingFile": {
            "type": "string",
            "format": "binary",
            "nullable": true
          },
          "phishingFileType": {
            "type": "string",
            "nullable": true
          },
          "phishingFileName": {
            "type": "string",
            "nullable": true
          },
          "attachmentFiles": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "binary"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.BarrelPayloadSummaryDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "fromName": {
            "type": "string",
            "nullable": true
          },
          "fromAddress": {
            "type": "string",
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "ccAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.EmailTemplateAttachmentDto"
            },
            "nullable": true
          },
          "phishingFileName": {
            "type": "string",
            "nullable": true
          },
          "phishingFileUrl": {
            "type": "string",
            "nullable": true
          },
          "phishingFileType": {
            "type": "string",
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.BarrelPayloadSummaryDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.CreatePsEmailTemplateLanguageDto": {
        "type": "object",
        "properties": {
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "fromName": {
            "type": "string",
            "nullable": true
          },
          "fromAddress": {
            "type": "string",
            "nullable": true
          },
          "ccAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "localizationResourceId": {
            "type": "string",
            "nullable": true
          },
          "toneResourceId": {
            "type": "string",
            "nullable": true
          },
          "prompt": {
            "type": "string",
            "nullable": true
          },
          "barrelPayload": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.BarrelPayloadServiceDto"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.EmailTemplateAttachmentDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.PsEmailTemplateDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "categoryResourceId": {
            "type": "string",
            "nullable": true
          },
          "difficultyResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "fromName": {
            "type": "string",
            "nullable": true
          },
          "fromAddress": {
            "type": "string",
            "nullable": true
          },
          "ccAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "isAssistedByAI": {
            "type": "boolean"
          },
          "isPlainText": {
            "type": "boolean"
          },
          "prompt": {
            "type": "string",
            "nullable": true
          },
          "toneResourceId": {
            "type": "string",
            "nullable": true
          },
          "localizationResourceId": {
            "type": "string",
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto"
            },
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.EmailTemplateAttachmentDto"
            },
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.PsEmailTemplateDto"
            },
            "nullable": true
          },
          "phishingFileName": {
            "type": "string",
            "nullable": true
          },
          "phishingFileType": {
            "type": "string",
            "nullable": true
          },
          "phishingFileUrl": {
            "type": "string",
            "nullable": true
          },
          "canRemoveLanguages": {
            "type": "boolean"
          },
          "isBarrelLure": {
            "type": "boolean"
          },
          "isBarrelPayload": {
            "type": "boolean"
          },
          "barrelPayload": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.BarrelPayloadSummaryDto"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.SearchPsEmailTemplateDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "nullable": true
          },
          "difficultyName": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "languageTypeCode": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isAssistedByAI": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isBarrelLure": {
            "type": "boolean"
          },
          "isBarrelPayload": {
            "type": "boolean"
          },
          "barrelPayload": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.BarrelPayloadSummaryDto"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.UpdateBarrelPayloadLanguageDto": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "phishingFile": {
            "type": "string",
            "format": "binary",
            "nullable": true
          },
          "phishingFileType": {
            "type": "string",
            "nullable": true
          },
          "phishingFileName": {
            "type": "string",
            "nullable": true
          },
          "isPhishingFileModified": {
            "type": "boolean"
          },
          "attachmentFiles": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "binary"
            },
            "nullable": true
          },
          "attachmentFilesToRemove": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.UpdatePsEmailTemplateLanguageDto": {
        "type": "object",
        "properties": {
          "detailActionType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.PhishingDetailActionTypeEnum+PhishingDetailActionType"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "fromName": {
            "type": "string",
            "nullable": true
          },
          "fromAddress": {
            "type": "string",
            "nullable": true
          },
          "ccAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "localizationResourceId": {
            "type": "string",
            "nullable": true
          },
          "toneResourceId": {
            "type": "string",
            "nullable": true
          },
          "prompt": {
            "type": "string",
            "nullable": true
          },
          "barrelPayload": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.UpdateBarrelPayloadLanguageDto"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PsTextTemplate.Dto.PsTextTemplateDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "categoryResourceId": {
            "type": "string",
            "nullable": true
          },
          "difficultyResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto"
            },
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.PsTextTemplate.Dto.SearchPsTextTemplateDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "nullable": true
          },
          "difficultyName": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "quishingScenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignScenarioDto"
            },
            "nullable": true
          },
          "smtpSetting": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
          },
          "directEmailSetting": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
          },
          "emailDeliverySettingType": {
            "type": "integer",
            "format": "int32"
          },
          "scheduleTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "format": "int32"
          },
          "distributionStartTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "distributionTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionEmailOver": {
            "type": "integer",
            "format": "int32"
          },
          "distributionEmailOverTimeTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "distributionDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sendingLimit": {
            "type": "integer",
            "format": "int32"
          },
          "excludeFromReports": {
            "type": "boolean"
          },
          "sendOnlyActiveUsers": {
            "type": "boolean"
          },
          "sendRandomlyUsers": {
            "type": "boolean"
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "targetGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignFormDetailsDto": {
        "type": "object",
        "properties": {
          "distributionEmailOverTimeTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "distributionSmtpDelayTimeTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "distributionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "scheduleTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "sendRandomlyUsersCalculateTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "status": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignPreviewDto": {
        "type": "object",
        "properties": {
          "smtpSettingDto": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SMTPSetting.Dto.SmtpSettingDto"
          },
          "quishingScenarioPreviewDto": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.QuishingScenarioPreviewDto"
          },
          "directEmailSettingDto": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.DirectEmailSettingDto"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignScheduleInfoScenarioListViewModel": {
        "type": "object",
        "properties": {
          "scheduleDate": {
            "type": "string",
            "nullable": true
          },
          "scenarioName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignScheduleInfoViewModel": {
        "type": "object",
        "properties": {
          "scenarioListViewModels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignScheduleInfoScenarioListViewModel"
            },
            "nullable": true
          },
          "isStarting": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "templateType": {
            "type": "string",
            "nullable": true
          },
          "method": {
            "type": "string",
            "nullable": true
          },
          "methodDetail": {
            "type": "string",
            "nullable": true
          },
          "scenarioCount": {
            "type": "string",
            "nullable": true
          },
          "instanceCount": {
            "type": "string",
            "nullable": true
          },
          "targetUsers": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "instanceGroup": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastLaunch": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "emailDelivery": {
            "type": "string",
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignSendingInfoViewModel": {
        "type": "object",
        "properties": {
          "batchUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "batchEverySendSecond": {
            "type": "integer",
            "format": "int32"
          },
          "totalUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalSendSecond": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingScenarioTraining": {
        "type": "object",
        "properties": {
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "quishingScenarioResourceId": {
            "type": "string",
            "nullable": true
          },
          "trainingLanguageIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "enrollmentReminder": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentReminderDTO"
          },
          "awardCertificate": {
            "type": "boolean"
          },
          "enrollmentSendTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EnrollmentSendTypeEnum"
          },
          "certificateConfigSendType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.CertificateConfigSendTypeEnum"
          },
          "trainingRedirectPage": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.TrainingRedirectPageDTO"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignInstance": {
        "type": "object",
        "properties": {
          "excludeFromReports": {
            "type": "boolean"
          },
          "scheduledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "nullable": true
          },
          "scheduleTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "distributionStartTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "distributionStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "sendingLimit": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "useTargetUserTimeZone": {
            "type": "boolean"
          },
          "emailReplySettings": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignEmailReplyDTO"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobFormDetailsDto": {
        "type": "object",
        "properties": {
          "statuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "passwordComplexityTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "userStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobPrintoutUsersSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "lastOpenedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "openedCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastClickedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "clickedCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastSubmittedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submittedCount": {
            "type": "integer",
            "format": "int32"
          },
          "mfaSubmittedCount": {
            "type": "integer",
            "format": "int32"
          },
          "minPasswordComplexity": {
            "type": "string",
            "nullable": true
          },
          "reportedCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastReportedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailAllSearchView": {
        "type": "object",
        "properties": {
          "actionTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submittedData": {
            "type": "string",
            "nullable": true
          },
          "sandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "quishingDataType": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailClickedSearchViewDto": {
        "type": "object",
        "properties": {
          "totalRowCount": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "clickedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "systemSandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "activityType": {
            "type": "string",
            "nullable": true
          },
          "systemActivityType": {
            "type": "string",
            "nullable": true
          },
          "isChangedActivity": {
            "type": "boolean",
            "readOnly": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailMfaSubmittedSearchView": {
        "type": "object",
        "properties": {
          "submittedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submittedData": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailOpenedSearchViewDto": {
        "type": "object",
        "properties": {
          "totalRowCount": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "openedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "systemSandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "activityType": {
            "type": "string",
            "nullable": true
          },
          "systemActivityType": {
            "type": "string",
            "nullable": true
          },
          "isChangedActivity": {
            "type": "boolean",
            "readOnly": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailReportedSearchViewDto": {
        "type": "object",
        "properties": {
          "totalRowCount": {
            "type": "integer",
            "format": "int32"
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "reportedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailSubmittedSearchViewDto": {
        "type": "object",
        "properties": {
          "totalRowCount": {
            "type": "integer",
            "format": "int32"
          },
          "submittedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submittedData": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUsersSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "quishingScenarioName": {
            "type": "string",
            "nullable": true
          },
          "lastOpenedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "openedCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastClickedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "clickedCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastSubmittedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submittedCount": {
            "type": "integer",
            "format": "int32"
          },
          "mfaSubmittedCount": {
            "type": "integer",
            "format": "int32"
          },
          "minPasswordComplexity": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "lastSendingTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "reportedCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastReportedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "emailDelivery": {
            "type": "string",
            "nullable": true
          },
          "activityType": {
            "type": "string",
            "nullable": true
          },
          "systemActivityType": {
            "type": "string",
            "nullable": true
          },
          "mfaLastSubmittedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "targetUserId": {
            "type": "integer",
            "format": "int32"
          },
          "barrelEmailRole": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignTargetGroupsResult": {
        "type": "object",
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignTargetGroupsResultGroup"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignTargetGroupsResultGroup": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "usersCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Search.QuishingCampaignJobReportSearchView": {
        "type": "object",
        "properties": {
          "quishingCampaignResourceId": {
            "type": "string",
            "nullable": true
          },
          "instanceGroup": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "totalOpenedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalClickedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalSubmittedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalAttachmentOpenedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalNoResponseCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "emailDeliveredUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "method": {
            "type": "string",
            "nullable": true
          },
          "methodDetail": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "emailDelivery": {
            "type": "string",
            "nullable": true
          },
          "targetUserId": {
            "type": "integer",
            "format": "int32"
          },
          "barrelEmailRole": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.Search.QuishingCampaignJobSearchView": {
        "type": "object",
        "properties": {
          "instanceGroup": {
            "type": "integer",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "totalTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "frequencyGroup": {
            "type": "integer",
            "format": "int32"
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          },
          "frequencyDescription": {
            "type": "string",
            "nullable": true
          },
          "frequencyCount": {
            "type": "integer",
            "format": "int32"
          },
          "isPdfReady": {
            "type": "boolean"
          },
          "activityType": {
            "type": "string",
            "nullable": true
          },
          "systemActivityType": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingCampaignJob.SearchQuishingCampaignJobRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          },
          "phishingCampaignFrequencyGroup": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "activityType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.PhishingCampaignJobUserActivityType"
          },
          "searchType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingScenario.Dto.QuishingScenarioSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "quishingType": {
            "type": "string",
            "nullable": true
          },
          "method": {
            "type": "string",
            "nullable": true
          },
          "difficulty": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "string",
            "nullable": true
          },
          "languageTypeCode": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          },
          "isSelected": {
            "type": "boolean"
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingScenario.QuishingScenarioDto": {
        "type": "object",
        "properties": {
          "templateType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Enum.QuishingTemplateSearchTypeEnum"
          },
          "templateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "templateResourceId": {
            "type": "string",
            "nullable": true
          },
          "mfaSmsSenderNumber": {
            "type": "string",
            "nullable": true
          },
          "mfaTextTemplate": {
            "type": "string",
            "nullable": true
          },
          "mfaSmsSenderNumberResourceId": {
            "type": "string",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "difficultyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "landingPageTemplateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "landingPageTemplateResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingTemplate.Dto.QuishingTemplateDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "categoryResourceId": {
            "type": "string",
            "nullable": true
          },
          "difficultyResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Enum.QuishingTemplateTypeEnum"
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto"
            },
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingTemplate.Dto.SearchQuishingTemplateDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "nullable": true
          },
          "difficultyName": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "string",
            "nullable": true
          },
          "quishingType": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "languageTypeCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.QuishingTemplate.Enum.QuishingTemplateSearchTypeEnum": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.QuishingTemplate.Enum.QuishingTemplateTypeEnum": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.Region.Dto.RegionDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "complianceTags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ReportScheduling.Dto.CreateReportSchedulingServiceRequest": {
        "type": "object",
        "properties": {
          "reportType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.ReportType"
          },
          "reportResourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "frequency": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.ReportSchedulingFrequency"
          },
          "schedule": {
            "type": "string",
            "format": "date-time"
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "nullable": true
          },
          "isRegionAwareTimeZone": {
            "type": "boolean"
          },
          "emailAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "managerEmails": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ReportScheduling.Dto.ManagerDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "fullName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ReportScheduling.Dto.SearchReportSchedulingRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ReportScheduling.Dto.TargetGroup": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ReportScheduling.Dto.UpdateReportSchedulingServiceRequest": {
        "type": "object",
        "properties": {
          "reportType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.ReportType"
          },
          "reportResourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "frequency": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.ReportSchedulingFrequency"
          },
          "schedule": {
            "type": "string",
            "format": "date-time"
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "nullable": true
          },
          "isRegionAwareTimeZone": {
            "type": "boolean"
          },
          "emailAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "managerEmails": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ReportScheduling.Models.ReportSchedulingModel": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "reportTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "reportResourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "frequencyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "schedule": {
            "type": "string",
            "format": "date-time"
          },
          "isRegionAwareTimeZone": {
            "type": "boolean"
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "nullable": true
          },
          "lastSendDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "nextSendDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "emailAddresses": {
            "type": "string",
            "nullable": true
          },
          "managerEmails": {
            "type": "string",
            "nullable": true
          },
          "targetGroupResourceIds": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.ReportScheduling.Models.SearchReportSchedulingView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "reportName": {
            "type": "string",
            "nullable": true
          },
          "reportResourceId": {
            "type": "string",
            "nullable": true
          },
          "frequency": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "lastSendDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "nextSendDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SAMLSetting.Dto.DefaultSamlSettingDto": {
        "type": "object",
        "properties": {
          "entityID": {
            "type": "string",
            "nullable": true
          },
          "ssoSignInUrl": {
            "type": "string",
            "nullable": true
          },
          "metadataUrl": {
            "type": "string",
            "nullable": true
          },
          "bypassSSOLoginUrl": {
            "type": "string",
            "nullable": true
          },
          "defaultRoleResourceId": {
            "type": "string",
            "nullable": true
          },
          "ssoSignInUrlWithWhitelabeling": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SAMLSetting.Dto.ParseMetadataDto": {
        "type": "object",
        "properties": {
          "idPSSOTargetUrl": {
            "type": "string",
            "nullable": true
          },
          "idPCertFingerprint": {
            "type": "string",
            "nullable": true
          },
          "idPEntityID": {
            "type": "string",
            "nullable": true
          },
          "idPCertificate": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SAMLSetting.Dto.SamlSettingDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "idPSSOTargetUrl": {
            "type": "string",
            "nullable": true
          },
          "idPCertFingerprint": {
            "type": "string",
            "nullable": true
          },
          "idPCertFingerprintTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "entityID": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "domain": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "idPCertificateFileUrl": {
            "type": "string",
            "nullable": true
          },
          "idPEntityID": {
            "type": "string",
            "nullable": true
          },
          "idPCertificateFileContent": {
            "type": "string",
            "nullable": true
          },
          "isDefaultRole": {
            "type": "boolean"
          },
          "defaultRoleResourceId": {
            "type": "string",
            "nullable": true
          },
          "isWhiteLabelingAssertion": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SAMLSetting.Dto.SearchSamlSettingDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SCIM.DTO.SCIMIntegrationFieldMappingDto": {
        "type": "object",
        "properties": {
          "customFieldResourceId": {
            "type": "string",
            "nullable": true
          },
          "scimFieldResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SIEMSetting.Dto.SIEMSettingDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "apiUrl": {
            "type": "string",
            "nullable": true
          },
          "token": {
            "type": "string",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "format": "int32"
          },
          "typeName": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "isForwardHistoricalAuditLog": {
            "type": "boolean"
          },
          "serverAddress": {
            "type": "string",
            "nullable": true
          },
          "port": {
            "type": "string",
            "nullable": true
          },
          "connectionType": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SIEMSetting.Dto.SearchSIEMSettingsDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "apiUrl": {
            "type": "string",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "nullable": true
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SMTPSetting.Dto.SearchSmtpSettingsDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "serverAddress": {
            "type": "string",
            "nullable": true
          },
          "serverPort": {
            "type": "string",
            "nullable": true
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SMTPSetting.Dto.SmtpSettingDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "serverAddress": {
            "type": "string",
            "nullable": true
          },
          "serverPort": {
            "type": "string",
            "nullable": true
          },
          "userName": {
            "type": "string",
            "nullable": true
          },
          "password": {
            "type": "string",
            "nullable": true
          },
          "useAuthentication": {
            "type": "boolean"
          },
          "useSSL": {
            "type": "boolean"
          },
          "hasSMTPRelay": {
            "type": "boolean"
          },
          "replyTo": {
            "type": "string",
            "nullable": true
          },
          "errorTo": {
            "type": "string",
            "nullable": true
          },
          "cc": {
            "type": "string",
            "nullable": true
          },
          "bcc": {
            "type": "string",
            "nullable": true
          },
          "customHeader": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32"
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SbmBehaviourNudge.BehaviourNudgeChannel": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.SbmBehaviourNudge.BehaviourNudgeTemplateKey": {
        "type": "string"
      },
      "KeepnetLabs.ApplicationService.SearchBuilder.Filter": {
        "type": "object",
        "properties": {
          "searchInputTextValue": {
            "type": "string",
            "nullable": true
          },
          "condition": {
            "type": "string",
            "nullable": true
          },
          "filterGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.FilterGroup"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SearchBuilder.FilterGroup": {
        "type": "object",
        "properties": {
          "condition": {
            "type": "string",
            "nullable": true
          },
          "filterItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.FilterItem"
            },
            "nullable": true
          },
          "filterGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.FilterGroup"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SearchBuilder.FilterItem": {
        "type": "object",
        "properties": {
          "fieldName": {
            "type": "string",
            "nullable": true
          },
          "operator": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "dataType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.TargetUserCustomField.TargetUserCustomFieldDataType"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "phishingScenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignScenarioDto"
            },
            "nullable": true
          },
          "smsNumbers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "scheduleTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "format": "int32"
          },
          "distributionStartTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "distributionTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "distributionDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sendingLimit": {
            "type": "integer",
            "format": "int32"
          },
          "excludeFromReports": {
            "type": "boolean"
          },
          "sendOnlyActiveUsers": {
            "type": "boolean"
          },
          "sendRandomlyUsers": {
            "type": "boolean"
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "targetGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          },
          "useTargetUserTimeZone": {
            "type": "boolean"
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignFormDetailsDto": {
        "type": "object",
        "properties": {
          "distributionDelayTimeTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "distributionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "scheduleTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "sendRandomlyUsersCalculateTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "status": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignPreviewListDto": {
        "type": "object",
        "properties": {
          "smishingScenarioPreviewList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmishingScenarioPreviewDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignScheduleInfoScenarioListViewModel": {
        "type": "object",
        "properties": {
          "scheduleDate": {
            "type": "string",
            "nullable": true
          },
          "scenarioName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignScheduleInfoViewModel": {
        "type": "object",
        "properties": {
          "scenarioListViewModels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignScheduleInfoScenarioListViewModel"
            },
            "nullable": true
          },
          "isStarting": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "method": {
            "type": "string",
            "nullable": true
          },
          "methodDetail": {
            "type": "string",
            "nullable": true
          },
          "scenarioCount": {
            "type": "string",
            "nullable": true
          },
          "instanceCount": {
            "type": "string",
            "nullable": true
          },
          "targetUsers": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "instanceGroup": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastLaunch": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "emailDelivery": {
            "type": "string",
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignSendingInfoViewModel": {
        "type": "object",
        "properties": {
          "batchUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "batchEverySendSecond": {
            "type": "integer",
            "format": "int32"
          },
          "totalUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalSendSecond": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignInstance": {
        "type": "object",
        "properties": {
          "excludeFromReports": {
            "type": "boolean"
          },
          "scheduledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "nullable": true
          },
          "scheduleTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "distributionStartTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "distributionStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "sendingLimit": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "useTargetUserTimeZone": {
            "type": "boolean"
          },
          "emailReplySettings": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignEmailReplyDTO"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobFormDetailsDto": {
        "type": "object",
        "properties": {
          "statuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "passwordComplexityTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          },
          "userStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DetailItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsAllSearchView": {
        "type": "object",
        "properties": {
          "actionTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submittedData": {
            "type": "string",
            "nullable": true
          },
          "sandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "smishingDataType": {
            "type": "string",
            "nullable": true
          },
          "actionTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsClickedSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "clickedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "systemSandBoxType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "activityType": {
            "type": "string",
            "nullable": true
          },
          "systemActivityType": {
            "type": "string",
            "nullable": true
          },
          "isChangedActivity": {
            "type": "boolean",
            "readOnly": true
          },
          "clickedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsMfaSubmittedSearchView": {
        "type": "object",
        "properties": {
          "submittedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submittedData": {
            "type": "string",
            "nullable": true
          },
          "submittedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsSubmittedSearchView": {
        "type": "object",
        "properties": {
          "submittedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submittedData": {
            "type": "string",
            "nullable": true
          },
          "submittedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddressList": {
            "type": "string",
            "nullable": true
          },
          "isExcluded": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUsersSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "smishingScenarioName": {
            "type": "string",
            "nullable": true
          },
          "lastClickedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastClickedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "clickedCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastSubmittedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastSubmittedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "submittedCount": {
            "type": "integer",
            "format": "int32"
          },
          "mfaSubmittedCount": {
            "type": "integer",
            "format": "int32"
          },
          "minPasswordComplexity": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "lastSendingTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastSendingTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "reportedCount": {
            "type": "integer",
            "format": "int32"
          },
          "emailDelivery": {
            "type": "string",
            "nullable": true
          },
          "activityType": {
            "type": "string",
            "nullable": true
          },
          "mfaLastSubmittedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "mfaLastSubmittedTimeToLocalUser": {
            "type": "string",
            "nullable": true
          },
          "senderPhoneNumber": {
            "type": "string",
            "nullable": true
          },
          "targetUserId": {
            "type": "integer",
            "format": "int32"
          },
          "barrelEmailRole": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignTargetGroupsResult": {
        "type": "object",
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignTargetGroupsResultGroup"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignTargetGroupsResultGroup": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "usersCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaignJob.Search.SmishingCampaignJobReportSearchView": {
        "type": "object",
        "properties": {
          "smishingCampaignResourceId": {
            "type": "string",
            "nullable": true
          },
          "instanceGroup": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "totalOpenedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalClickedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalSubmittedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalAttachmentOpenedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalNoResponseCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "smsDeliveredUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "method": {
            "type": "string",
            "nullable": true
          },
          "methodDetail": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "smsDelivery": {
            "type": "string",
            "nullable": true
          },
          "targetUserId": {
            "type": "integer",
            "format": "int32"
          },
          "barrelEmailRole": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaignJob.Search.SmishingCampaignJobSearchView": {
        "type": "object",
        "properties": {
          "instanceGroup": {
            "type": "integer",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "totalTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "jobResultMessage": {
            "type": "string",
            "nullable": true
          },
          "frequencyGroup": {
            "type": "integer",
            "format": "int32"
          },
          "frequency": {
            "type": "integer",
            "format": "int32"
          },
          "frequencyDescription": {
            "type": "string",
            "nullable": true
          },
          "frequencyCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingCampaignJob.SearchSmishingCampaignJobRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          },
          "smishingCampaignFrequencyGroup": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingScenario.Dto.SmishingScenarioSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "quishingType": {
            "type": "string",
            "nullable": true
          },
          "method": {
            "type": "string",
            "nullable": true
          },
          "difficulty": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "string",
            "nullable": true
          },
          "languageTypeCode": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          },
          "isSelected": {
            "type": "boolean"
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SmishingScenario.SmishingScenarioDto": {
        "type": "object",
        "properties": {
          "textTemplateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "textTemplateResourceId": {
            "type": "string",
            "nullable": true
          },
          "mfaSmsSenderNumber": {
            "type": "string",
            "nullable": true
          },
          "mfaTextTemplate": {
            "type": "string",
            "nullable": true
          },
          "mfaSmsSenderNumberResourceId": {
            "type": "string",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "difficultyTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "landingPageTemplateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "landingPageTemplateResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SystemPermission.Dto.GetSystemPermissionDto": {
        "type": "object",
        "properties": {
          "moduleName": {
            "type": "string",
            "nullable": true
          },
          "permissionResourceId": {
            "type": "string",
            "nullable": true
          },
          "permissionName": {
            "type": "string",
            "nullable": true
          },
          "permissionDescription": {
            "type": "string",
            "nullable": true
          },
          "groupName": {
            "type": "string",
            "nullable": true
          },
          "parentGroupName": {
            "type": "string",
            "nullable": true
          },
          "isDisabled": {
            "type": "boolean"
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SystemPermission.Dto.GetSystemPermissionDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SystemRole.Dto.GetSystemRoleDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForDto"
            },
            "nullable": true
          },
          "permissionResourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SystemRole.Dto.SystemRoleDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SystemRole.Dto.SystemRoleSearchDto": {
        "type": "object",
        "properties": {
          "roleName": {
            "type": "string",
            "nullable": true
          },
          "roleDescription": {
            "type": "string",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "userCount": {
            "type": "integer",
            "format": "int32"
          },
          "tenantUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "typeName": {
            "type": "string",
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SystemUser.Dto.CreatePasswordServiceResult": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserMfaDto": {
        "type": "object",
        "properties": {
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "expireTime": {
            "type": "string",
            "format": "date-time"
          },
          "isExpired": {
            "type": "boolean"
          },
          "qrCodeSetupImageUrl": {
            "type": "string",
            "nullable": true
          },
          "manualEntryKey": {
            "type": "string",
            "nullable": true
          },
          "recoveryCode": {
            "type": "string",
            "nullable": true
          },
          "device": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserNotificationSettingDto": {
        "type": "object",
        "properties": {
          "isSMSEnabled": {
            "type": "boolean"
          },
          "isEmailEnabled": {
            "type": "boolean"
          },
          "isDashboardEnabled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserSearchDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "roles": {
            "type": "string",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "isEditable": {
            "type": "boolean"
          },
          "bypassSsoRedirect": {
            "type": "boolean"
          },
          "bypassMfa": {
            "type": "boolean"
          },
          "bypassIpRestriction": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserSettingsDto": {
        "type": "object",
        "properties": {
          "timeZoneId": {
            "type": "string",
            "nullable": true
          },
          "timeZoneName": {
            "type": "string",
            "nullable": true
          },
          "dateFormat": {
            "type": "string",
            "nullable": true
          },
          "timeFormat": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Tag.Dto.SearchTagDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.TargetUserCustomField.Dto.TargetUserCustomFieldDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "ownerType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.TargetUserCustomField.TargetUserCustomFieldOwner"
          },
          "fieldDataType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.TargetUserCustomField.TargetUserCustomFieldDataType"
          },
          "targetGroupResourceId": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32"
          },
          "isRequired": {
            "type": "boolean"
          },
          "isEditable": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppAuthorizeLinkRequest": {
        "type": "object",
        "properties": {
          "companyResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppAuthorizeLinkResponse": {
        "type": "object",
        "properties": {
          "authorizationUrl": {
            "type": "string",
            "nullable": true
          },
          "tenantId": {
            "type": "string",
            "nullable": true
          },
          "redirectUri": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppCallbackResponse": {
        "type": "object",
        "properties": {
          "isSuccessful": {
            "type": "boolean"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "tenantId": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorDescription": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppCheckRequest": {
        "type": "object",
        "properties": {
          "companyResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppCheckResponse": {
        "type": "object",
        "properties": {
          "isFound": {
            "type": "boolean"
          },
          "tenantId": {
            "type": "string",
            "nullable": true
          },
          "appId": {
            "type": "string",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "publishingState": {
            "type": "string",
            "nullable": true
          },
          "distributionMethod": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "neededAction": {
            "type": "string",
            "nullable": true
          },
          "installedVersion": {
            "type": "string",
            "nullable": true
          },
          "latestAvailableVersion": {
            "type": "string",
            "nullable": true
          },
          "appInstallationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppInstallToUsersRequest": {
        "type": "object",
        "properties": {
          "companyResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppInstallToUsersResponse": {
        "type": "object",
        "properties": {
          "targetedUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "successfulInstallations": {
            "type": "integer",
            "format": "int32"
          },
          "failedInstallations": {
            "type": "integer",
            "format": "int32"
          },
          "failures": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.UserInstallationFailure"
            },
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppRemoveRequest": {
        "required": [
          "companyResourceId"
        ],
        "type": "object",
        "properties": {
          "companyResourceId": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppUploadRequest": {
        "type": "object",
        "properties": {
          "companyResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Teams.Dto.TeamsOboAuthorizeLinkRequest": {
        "type": "object",
        "properties": {
          "companyResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Teams.Dto.TeamsOboAuthorizeLinkResponse": {
        "type": "object",
        "properties": {
          "authorizationUrl": {
            "type": "string",
            "nullable": true
          },
          "tenantId": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Teams.Dto.UserInstallationFailure": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Teams.SendTestActivityResponseDto": {
        "type": "object",
        "properties": {
          "isSuccess": {
            "type": "boolean"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "userEmail": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.TimeZone.Dto.GetTimeZonesServiceResult": {
        "type": "object",
        "properties": {
          "timeZoneList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.TimeZone.Dto.TimeZoneDto"
            },
            "nullable": true
          },
          "dateFormatList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "timeFormatList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.TimeZone.Dto.TimeZoneDto": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Vishing.Dto.VishingTemplatePreviewDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "vishingLanguageResourceId": {
            "type": "string",
            "nullable": true
          },
          "vishingLanguage": {
            "type": "string",
            "nullable": true
          },
          "vishingVoice": {
            "type": "string",
            "nullable": true
          },
          "voiceProviderTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Vishing.Dto.VishingTemplateStepPreviewDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.Vishing.Dto.VishingTemplateStepPreviewDto": {
        "type": "object",
        "properties": {
          "inputType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Vishing.VishingTemplateStepInputType"
          },
          "inputText": {
            "type": "string",
            "nullable": true
          },
          "inputUrl": {
            "type": "string",
            "nullable": true
          },
          "inputDigit": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isVishingStep": {
            "type": "boolean"
          },
          "order": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.WhiteLabeling.Dto.WhiteLabelingByDomainDto": {
        "type": "object",
        "properties": {
          "brandName": {
            "type": "string",
            "nullable": true
          },
          "mainLogoUrl": {
            "type": "string",
            "nullable": true
          },
          "faviconUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.ApplicationService.WhiteLabeling.Dto.WhiteLabelingDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "brandName": {
            "type": "string",
            "nullable": true
          },
          "mainDomainProtocol": {
            "type": "string",
            "nullable": true
          },
          "mainDomainUrl": {
            "type": "string",
            "nullable": true
          },
          "domainUrl": {
            "type": "string",
            "nullable": true
          },
          "mainLogoUrl": {
            "type": "string",
            "nullable": true
          },
          "minimizedMenuLogoUrl": {
            "type": "string",
            "nullable": true
          },
          "faviconUrl": {
            "type": "string",
            "nullable": true
          },
          "emailTemplateLogoUrl": {
            "type": "string",
            "nullable": true
          },
          "supportEmailAddress": {
            "type": "string",
            "nullable": true
          },
          "footerPrivacyPolicyUrl": {
            "type": "string",
            "nullable": true
          },
          "footerTermsAndConditionsUrl": {
            "type": "string",
            "nullable": true
          },
          "footerEulaUrl": {
            "type": "string",
            "nullable": true
          },
          "footerCookiePolicyUrl": {
            "type": "string",
            "nullable": true
          },
          "isShowReleaseVersionNumber": {
            "type": "boolean"
          },
          "isShowReleaseNotes": {
            "type": "boolean"
          },
          "releaseNotesUrl": {
            "type": "string",
            "nullable": true
          },
          "pointingUrl": {
            "type": "string",
            "nullable": true
          },
          "isDocumentationLinkEnabled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportEnrollmentRequest": {
        "type": "object",
        "properties": {
          "enrollmentType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EnrollmentTypeRequestEnum"
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          },
          "reportAllPages": {
            "type": "boolean"
          },
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportType"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportTrainingRequest": {
        "type": "object",
        "properties": {
          "trainingSearchType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingSearchTypeEnum"
          },
          "trainingType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeRequestEnum"
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          },
          "reportAllPages": {
            "type": "boolean"
          },
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportType"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.ExportUsersSearchRequest": {
        "type": "object",
        "properties": {
          "trainingType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeRequestEnum"
          },
          "showByExamStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Enrollment.ShowByExamStatusEnum"
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          },
          "reportAllPages": {
            "type": "boolean"
          },
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportType"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.ResendRequest": {
        "required": [
          "filter"
        ],
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          },
          "selectAll": {
            "type": "boolean"
          },
          "selectedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchEnrollmentRequest": {
        "required": [
          "filter"
        ],
        "type": "object",
        "properties": {
          "enrollmentType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EnrollmentTypeRequestEnum"
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchExamResultsRestRequest": {
        "required": [
          "filter"
        ],
        "type": "object",
        "properties": {
          "showByExamStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Enrollment.ShowByExamStatusEnum"
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRequest": {
        "required": [
          "filter"
        ],
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchRestServiceRequest": {
        "required": [
          "filter"
        ],
        "type": "object",
        "properties": {
          "trainingType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeRequestEnum"
          },
          "reportAllPages": {
            "type": "boolean"
          },
          "showByExamStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Enrollment.ShowByExamStatusEnum"
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchTrainingRequest": {
        "required": [
          "filter"
        ],
        "type": "object",
        "properties": {
          "trainingSearchType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingSearchTypeEnum"
          },
          "trainingType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeRequestEnum"
          },
          "trainingIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.SearchUsersRestRequest": {
        "required": [
          "filter"
        ],
        "type": "object",
        "properties": {
          "trainingType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeRequestEnum"
          },
          "showByExamStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Enrollment.ShowByExamStatusEnum"
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.AffectedCompanyDTO": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "activeEnrollmentCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.AvailableForChangeImpactRequest": {
        "type": "object",
        "properties": {
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.EntityAvailableFor.EntityAvailableForRequest"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.AvailableForChangeImpactResponse": {
        "type": "object",
        "properties": {
          "hasImpact": {
            "type": "boolean"
          },
          "affectedCompanies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.AffectedCompanyDTO"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationImageDTO": {
        "type": "object",
        "properties": {
          "relativePath": {
            "type": "string",
            "nullable": true
          },
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "width": {
            "type": "integer",
            "format": "int32"
          },
          "height": {
            "type": "integer",
            "format": "int32"
          },
          "previewUrl": {
            "type": "string",
            "nullable": true
          },
          "isProbableLogo": {
            "type": "boolean"
          },
          "isStandaloneLogo": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationImageReplacementRequest": {
        "type": "object",
        "properties": {
          "relativePath": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationImagesDTO": {
        "type": "object",
        "properties": {
          "languageId": {
            "type": "string",
            "nullable": true
          },
          "supportsButtonColorCustomization": {
            "type": "boolean"
          },
          "isTruncated": {
            "type": "boolean"
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationImageDTO"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationRequest": {
        "type": "object",
        "properties": {
          "languageId": {
            "type": "string",
            "nullable": true
          },
          "buttonColor": {
            "type": "string",
            "nullable": true
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationImageReplacementRequest"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationResultDTO": {
        "type": "object",
        "properties": {
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "trainingName": {
            "type": "string",
            "nullable": true
          },
          "replacedImageCount": {
            "type": "integer",
            "format": "int32"
          },
          "buttonColorApplied": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.CertificateConfigSendTypeEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.EmailPeriodTypeEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.EnrollmentAutoEnrollTypeEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.EnrollmentSendTypeEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.EnrollmentTypeRequestEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.EntityAvailabilityTypeEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.PhishingCampaignConditionTypeEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.ReminderEndTypeEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.SmsTextTypeEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.TrainingCategoryEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.TrainingDurationEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.TrainingLevelEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.TrainingSearchTypeEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.TrainingStatusEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTargetAudienceEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeRequestEnum": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.JsonModels.QuestionExtractorAnswerDto": {
        "type": "object",
        "properties": {
          "option": {
            "type": "string",
            "nullable": true
          },
          "correctAnswer": {
            "type": "boolean",
            "nullable": true
          },
          "imagePath": {
            "type": "string",
            "nullable": true
          },
          "x": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "y": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "placeholderId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.JsonModels.QuestionExtractorProcessorContentDto": {
        "type": "object",
        "properties": {
          "patern": {
            "type": "string",
            "nullable": true
          },
          "questions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.JsonModels.QuestionExtractorQuestionDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.JsonModels.QuestionExtractorQuestionDto": {
        "type": "object",
        "properties": {
          "questionSlug": {
            "type": "string",
            "nullable": true
          },
          "idGenerated": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "idFull": {
            "type": "string",
            "nullable": true
          },
          "group": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.JsonModels.QuestionExtractorQuestionGroupRefDto"
          },
          "isReverse": {
            "type": "boolean",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "question": {
            "type": "string",
            "nullable": true
          },
          "answers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.JsonModels.QuestionExtractorAnswerDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.JsonModels.QuestionExtractorQuestionGroupRefDto": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.JsonModels.SCORMInteractionItem": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "timestamp": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingProgressReportDetailDTO": {
        "type": "object",
        "properties": {
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "sessionDate": {
            "type": "string",
            "format": "date-time"
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "geoLocation": {
            "type": "string",
            "nullable": true
          },
          "ip": {
            "type": "string",
            "nullable": true
          },
          "lastInteractionDate": {
            "type": "string",
            "format": "date-time"
          },
          "enrollmentDate": {
            "type": "string",
            "format": "date-time"
          },
          "sessionStartDate": {
            "type": "string",
            "format": "date-time"
          },
          "sessionEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sessionCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingProgresstReportDTO": {
        "type": "object",
        "properties": {
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResultId": {
            "type": "string",
            "nullable": true
          },
          "enrollmentDate": {
            "type": "string",
            "format": "date-time"
          },
          "sessionStartDate": {
            "type": "string",
            "format": "date-time"
          },
          "sessionEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sessionCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingResultReportDTO": {
        "type": "object",
        "properties": {
          "targetUserResultId": {
            "type": "string",
            "nullable": true
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "isPassed": {
            "type": "boolean"
          },
          "ernollmentDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sessionStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sessionEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sessionCount": {
            "type": "integer",
            "format": "int32"
          },
          "score": {
            "type": "number",
            "format": "float",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingResultReportDetailDTO": {
        "type": "object",
        "properties": {
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResultId": {
            "type": "string",
            "nullable": true
          },
          "enrollmentSessionId": {
            "type": "string",
            "nullable": true
          },
          "isPassed": {
            "type": "boolean"
          },
          "sessionDate": {
            "type": "string",
            "format": "date-time"
          },
          "score": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "browser": {
            "type": "string",
            "nullable": true
          },
          "geoLocation": {
            "type": "string",
            "nullable": true
          },
          "ip": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingUserReportDTO": {
        "type": "object",
        "properties": {
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResultId": {
            "type": "string",
            "nullable": true
          },
          "lastInteractionDate": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingUserReportDetailDTO": {
        "type": "object",
        "properties": {
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "sessionDate": {
            "type": "string",
            "format": "date-time"
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "geoLocation": {
            "type": "string",
            "nullable": true
          },
          "ip": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Base.EnumResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "enumResults": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Base.EnumResult"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Base.HttpRequestInfo": {
        "type": "object",
        "properties": {
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "ipAddress": {
            "type": "string",
            "nullable": true
          },
          "requestTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDTO": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailDTO": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "owner": {
            "type": "string",
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.EntityAvailableFor.EntityAvailableForDTO"
            },
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 250,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailRestDTO": {
        "type": "object",
        "properties": {
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.EntityAvailableFor.EntityAvailableForRequest"
            },
            "nullable": true
          },
          "name": {
            "maxLength": 250,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateSearchViewDTO": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "owner": {
            "type": "string",
            "nullable": true
          },
          "distributed": {
            "type": "string",
            "nullable": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "totalRowCount": {
            "type": "integer",
            "format": "int32"
          },
          "isEditable": {
            "type": "boolean"
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateTestEmailDTO": {
        "type": "object",
        "properties": {
          "userEmailId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateTestEmailRequest": {
        "type": "object",
        "properties": {
          "template": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "format": "email",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.CreateScormProxyServiceRequest": {
        "type": "object",
        "properties": {
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "languageId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EditEnrollmentServiceRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "markedAsTest": {
            "type": "boolean"
          },
          "enrollmentScheduler": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentEmailConfigDTO"
          },
          "distributionDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentAutoEnrollDTO": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EnrollmentAutoEnrollTypeEnum"
          },
          "dayOfWeek": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "emailPeriodTypeEnum": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EmailPeriodTypeEnum"
          },
          "periodCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentCertificateSearchRequest": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentCertificateSearchResult": {
        "type": "object",
        "properties": {
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "userEmail": {
            "type": "string",
            "nullable": true
          },
          "sentDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "userEmailId": {
            "type": "string",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "userEmailSendTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "firstSendTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastSendTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "emailDelivery": {
            "type": "string",
            "nullable": true
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentDetailDTO": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "trainingName": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "targetAudience": {
            "type": "string",
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "enrolledBy": {
            "type": "string",
            "nullable": true
          },
          "delivery": {
            "type": "string",
            "nullable": true
          },
          "totalTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "awardCertificate": {
            "type": "boolean"
          },
          "markedAsTest": {
            "type": "boolean"
          },
          "autoEnroll": {
            "type": "boolean"
          },
          "certificateName": {
            "type": "string",
            "nullable": true
          },
          "hasReminder": {
            "type": "boolean"
          },
          "sendTemplatesInPreferredLanguage": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentEmailConfigDTO": {
        "type": "object",
        "properties": {
          "scheduledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "scheduledTimeZoneId": {
            "type": "string",
            "nullable": true
          },
          "useOwnTimeZone": {
            "type": "boolean"
          },
          "dueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentEnumTypesDTO": {
        "type": "object",
        "properties": {
          "enumNameValuePairs": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Base.EnumResult"
              }
            },
            "nullable": true
          },
          "trainingEmailNotificationTemplateTypeResourceId": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "reminderEmailNotificationTemplateTypeResourceId": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "learningPathEmailNotificationTemplateTypeResourceId": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "learningPathReminderEmailNotificationTemplateTypeResourceId": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "posterEmailNotificationTemplateTypeResourceId": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "infographicEmailNotificationTemplateTypeResourceId": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "surveyEmailNotificationTemplateTypeResourceId": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "surveyReminderEmailNotificationTemplateTypeResourceId": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "certificateEmailNotificationTemplateTypeResourceId": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "canSaveVendor": {
            "type": "boolean",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentReminderDTO": {
        "type": "object",
        "properties": {
          "periodCount": {
            "type": "integer",
            "format": "int32"
          },
          "periodType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EmailPeriodTypeEnum"
          },
          "endType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.ReminderEndTypeEnum"
          },
          "occurrenceCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "stopTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentSearchRestView": {
        "type": "object",
        "properties": {
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "enrolledBy": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "trainingName": {
            "type": "string",
            "nullable": true
          },
          "delivery": {
            "type": "string",
            "nullable": true
          },
          "deliveryType": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "isReminderActive": {
            "type": "boolean"
          },
          "isAutoEnrollmentActive": {
            "type": "boolean"
          },
          "status": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "recipientType": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "category": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "targetAudience": {
            "type": "string",
            "nullable": true,
            "readOnly": true,
            "deprecated": true
          },
          "type": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "hasQuiz": {
            "type": "boolean"
          },
          "sendTemplatesInPreferredLanguage": {
            "type": "boolean"
          },
          "trainingRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingRoleDTO"
            },
            "nullable": true
          },
          "trainingCategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingCategoryDTO"
            },
            "nullable": true
          },
          "duration": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "durationMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "totalDuration": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "level": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentStartDTO": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "phishingCampaignResourceId": {
            "type": "string",
            "nullable": true
          },
          "phishingCampaignConditionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.PhishingCampaignConditionTypeEnum"
            },
            "nullable": true
          },
          "languageIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "enrollmentScheduler": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentEmailConfigDTO"
          },
          "enrollmentReminder": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentReminderDTO"
          },
          "enrollmentAutoEnroll": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentAutoEnrollDTO"
          },
          "awardCertificate": {
            "type": "boolean"
          },
          "certificateConfigSendType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.CertificateConfigSendTypeEnum"
          },
          "markedAsTest": {
            "type": "boolean"
          },
          "distributionDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sendTeamsNotification": {
            "type": "boolean"
          },
          "sendTemplatesInPreferredLanguage": {
            "type": "boolean"
          },
          "smsProviderNumberResourceId": {
            "type": "string",
            "nullable": true
          },
          "smsTextTemplate": {
            "type": "string",
            "nullable": true
          },
          "distributionDelayEvery": {
            "type": "integer",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "sendingLimit": {
            "type": "integer",
            "format": "int32"
          },
          "isScormProxy": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetEnrollmentByIdResponse": {
        "type": "object",
        "properties": {
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "learningPathId": {
            "type": "string",
            "nullable": true
          },
          "trainingOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "phishingCampaignResourceId": {
            "type": "string",
            "nullable": true
          },
          "phishingCampaignConditionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.PhishingCampaignConditionTypeEnum"
            },
            "nullable": true
          },
          "languageIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "enrollmentScheduler": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentEmailConfigDTO"
          },
          "enrollmentReminder": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentReminderDTO"
          },
          "enrollmentAutoEnroll": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentAutoEnrollDTO"
          },
          "smsTexts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SmsTextDTO"
            },
            "nullable": true
          },
          "awardCertificate": {
            "type": "boolean"
          },
          "certificateConfigSendType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.CertificateConfigSendTypeEnum"
          },
          "markedAsTest": {
            "type": "boolean"
          },
          "trainingTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeEnum"
          },
          "distributionDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForEnrollmentRequest": {
        "type": "object",
        "properties": {
          "withTargetGroups": {
            "type": "boolean"
          },
          "phishingCampaignResourceId": {
            "type": "string",
            "nullable": true
          },
          "conditionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.PhishingCampaignConditionTypeEnum"
            },
            "nullable": true
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUserForScormRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetTargetUsersByResourceIdsRequest": {
        "type": "object",
        "properties": {
          "targetUserResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendCertificateData": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendCertificateRequest": {
        "type": "object",
        "properties": {
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendEnrollmentTeamsRequest": {
        "type": "object",
        "properties": {
          "notificationActivityLogId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentSmsRequest": {
        "type": "object",
        "properties": {
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "mobilePhoneNumber": {
            "type": "string",
            "nullable": true
          },
          "textTemplate": {
            "type": "string",
            "nullable": true
          },
          "smsProviderNumberResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentSmsResponse": {
        "type": "object",
        "properties": {
          "isSuccesful": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentTeamsRequest": {
        "type": "object",
        "properties": {
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "fullname": {
            "type": "string",
            "nullable": true
          },
          "trainingUrl": {
            "type": "string",
            "nullable": true
          },
          "trainingTitle": {
            "type": "string",
            "nullable": true
          },
          "activityContent": {
            "type": "string",
            "nullable": true
          },
          "trainingName": {
            "type": "string",
            "nullable": true
          },
          "learningPathStepNumber": {
            "type": "string",
            "nullable": true
          },
          "learningPathDescription": {
            "type": "string",
            "nullable": true
          },
          "learningPathName": {
            "type": "string",
            "nullable": true
          },
          "dateEmailSent": {
            "type": "string",
            "nullable": true
          },
          "trainingDescription": {
            "type": "string",
            "nullable": true
          },
          "renderedHtml": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentTeamsResponse": {
        "type": "object",
        "properties": {
          "retryCount": {
            "type": "integer",
            "format": "int32"
          },
          "maxRetryCount": {
            "type": "integer",
            "format": "int32"
          },
          "isSuccesful": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SmsTextDTO": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.SmsTextTypeEnum"
          },
          "providerNumberResourceId": {
            "type": "string",
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.TargetUserEmailDTO": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "managerName": {
            "type": "string",
            "nullable": true
          },
          "managerEmail": {
            "type": "string",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.EnrollmentContent.EnrollmentContentResultDTO": {
        "type": "object",
        "properties": {
          "enrollmentContents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.EnrollmentContent.EnrollmentContentView"
            },
            "nullable": true
          },
          "mainLogoUrl": {
            "type": "string",
            "nullable": true
          },
          "informationMessage": {
            "type": "string",
            "nullable": true
          },
          "redirectMessage": {
            "type": "string",
            "nullable": true
          },
          "startButtonLabel": {
            "type": "string",
            "nullable": true
          },
          "phishingTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.EnrollmentContent.EnrollmentContentView": {
        "type": "object",
        "properties": {
          "enrollmentContentId": {
            "type": "string",
            "nullable": true
          },
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "trainingContentId": {
            "type": "string",
            "nullable": true
          },
          "contentUrl": {
            "type": "string",
            "nullable": true
          },
          "languageName": {
            "type": "string",
            "nullable": true
          },
          "languageCode": {
            "type": "string",
            "nullable": true
          },
          "nativeLanguageName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.EntityAvailableFor.EntityAvailableForDTO": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "ownerCompanyId": {
            "type": "integer",
            "format": "int32"
          },
          "ownerCompanyResourceId": {
            "type": "string",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "nullable": true
          },
          "targetResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.EntityAvailableFor.EntityAvailableForRequest": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.EntityAvailabilityTypeEnum"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Language.LanguageDTO": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "nativeLanguageName": {
            "type": "string",
            "nullable": true
          },
          "isoCode": {
            "type": "string",
            "nullable": true
          },
          "isoFriendlyName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.SCORM.Base.LMSSetBase": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "timestamp": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSGetValueServiceRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "enrollmentSessionId": {
            "type": "string",
            "nullable": true
          },
          "scormSessionId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeDTO": {
        "type": "object",
        "properties": {
          "enrollmentSessionId": {
            "type": "string",
            "nullable": true
          },
          "scormSessionId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeServiceRequest": {
        "type": "object",
        "properties": {
          "enrollmentContentResourceId": {
            "type": "string",
            "nullable": true
          },
          "lmsLearnerId": {
            "type": "string",
            "nullable": true
          },
          "httpRequestInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Base.HttpRequestInfo"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSLogServiceRequest": {
        "type": "object",
        "properties": {
          "level": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "scormSessionId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSScormSessionInteractionDTO": {
        "type": "object",
        "properties": {
          "scormSessionId": {
            "type": "string",
            "nullable": true
          },
          "enrollmentSessionId": {
            "type": "string",
            "nullable": true
          },
          "enrollmentSessionCreatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "interactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.JsonModels.SCORMInteractionItem"
            },
            "nullable": true
          },
          "interactionsHumanReadable": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.SCORMInteractionHumanReadableDto"
            },
            "nullable": true
          },
          "totalQuestions": {
            "type": "integer",
            "format": "int32"
          },
          "correctCount": {
            "type": "integer",
            "format": "int32"
          },
          "wrongCount": {
            "type": "integer",
            "format": "int32"
          },
          "emptyCount": {
            "type": "integer",
            "format": "int32"
          },
          "questions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.JsonModels.QuestionExtractorProcessorContentDto"
            },
            "nullable": true
          },
          "enrollmentContentResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValueServiceRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "enrollmentSessionId": {
            "type": "string",
            "nullable": true
          },
          "scormSessionId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSSetValuesRequest": {
        "type": "object",
        "properties": {
          "namesAndValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.Base.LMSSetBase"
            },
            "nullable": true
          },
          "enrollmentSessionId": {
            "type": "string",
            "nullable": true
          },
          "scormSessionId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.SCORM.SCORMInteractionHumanReadableAnswerDto": {
        "type": "object",
        "properties": {
          "isUserAnswer": {
            "type": "boolean"
          },
          "option": {
            "type": "string",
            "nullable": true
          },
          "correctAnswer": {
            "type": "boolean",
            "nullable": true
          },
          "imagePath": {
            "type": "string",
            "nullable": true
          },
          "x": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "y": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "placeholderId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.SCORM.SCORMInteractionHumanReadableDto": {
        "type": "object",
        "properties": {
          "source": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.SCORMInteractionHumanReadableMatchSource"
          },
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "scormId": {
            "type": "string",
            "nullable": true
          },
          "question": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "answers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.SCORMInteractionHumanReadableAnswerDto"
            },
            "nullable": true
          },
          "correctAnswers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "studentOrLearnerResponse": {
            "type": "string",
            "nullable": true
          },
          "result": {
            "type": "string",
            "nullable": true
          },
          "time": {
            "type": "string",
            "nullable": true
          },
          "latency": {
            "type": "string",
            "nullable": true
          },
          "weighting": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "objectives": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.SCORM.SCORMInteractionHumanReadableMatchSource": {
        "type": "string"
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.BehaviourDTO": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.ComplianceDTO": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.DownloadTrainingContentRequest": {
        "type": "object",
        "properties": {
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "languageId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.SCORMTrainingURLDTO": {
        "type": "object",
        "properties": {
          "scormPlayerUrl": {
            "type": "string",
            "nullable": true
          },
          "trainingUrl": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeEnum"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.SCORMTrainingURLPreviewRequest": {
        "type": "object",
        "properties": {
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "languageId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingBehaviourDTO": {
        "type": "object",
        "properties": {
          "behaviourId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingCategoryDTO": {
        "type": "object",
        "properties": {
          "categoryId": {
            "type": "integer",
            "format": "int32"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadAbortRequest": {
        "required": [
          "uploadId"
        ],
        "type": "object",
        "properties": {
          "uploadId": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadCompleteRequest": {
        "required": [
          "uploadId"
        ],
        "type": "object",
        "properties": {
          "uploadId": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadInitiateRequest": {
        "required": [
          "fileName",
          "fileSize",
          "languageId"
        ],
        "type": "object",
        "properties": {
          "fileName": {
            "minLength": 1,
            "type": "string"
          },
          "fileSize": {
            "type": "integer",
            "format": "int64"
          },
          "languageId": {
            "minLength": 1,
            "type": "string"
          },
          "vendorId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadInitiateResult": {
        "type": "object",
        "properties": {
          "uploadId": {
            "type": "string",
            "nullable": true
          },
          "partSizeBytes": {
            "type": "integer",
            "format": "int64"
          },
          "totalParts": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadPartResult": {
        "type": "object",
        "properties": {
          "uploadId": {
            "type": "string",
            "nullable": true
          },
          "partNumber": {
            "type": "integer",
            "format": "int32"
          },
          "receivedBytes": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingComplianceDTO": {
        "type": "object",
        "properties": {
          "complianceId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingContentDTO": {
        "type": "object",
        "properties": {
          "languageId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "nullable": true
          },
          "contentUrl": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeEnum"
          },
          "typeWithDisplayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "isDeleteable": {
            "type": "boolean"
          },
          "warningMessage": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingContentUploadResult": {
        "type": "object",
        "properties": {
          "contentUrl": {
            "type": "string",
            "nullable": true
          },
          "languageId": {
            "type": "string",
            "nullable": true
          },
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "fileSize": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeEnum"
          },
          "vendorId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingCoverImageDTO": {
        "type": "object",
        "properties": {
          "imageUrl": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingDetailDTO": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "availableForList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.EntityAvailableFor.EntityAvailableForDTO"
            },
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "coverImage": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingCoverImageDTO"
          },
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeEnum"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingStatusEnum"
          },
          "vendorId": {
            "type": "string",
            "nullable": true
          },
          "trainingContents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingContentDTO"
            },
            "nullable": true
          },
          "trainingGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingGroupDetailDTO"
            },
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "targetAudienceName": {
            "type": "string",
            "nullable": true,
            "readOnly": true,
            "deprecated": true
          },
          "vendorName": {
            "type": "string",
            "nullable": true
          },
          "behaviourNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "complianceNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isNew": {
            "type": "boolean"
          },
          "isFavourite": {
            "type": "boolean"
          },
          "trainingRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingRoleDTO"
            },
            "nullable": true
          },
          "trainingCategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingCategoryDTO"
            },
            "nullable": true
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "description": {
            "maxLength": 300,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "category": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingCategoryEnum"
          },
          "targetAudience": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTargetAudienceEnum"
          },
          "behaviours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingBehaviourDTO"
            },
            "nullable": true
          },
          "compliances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingComplianceDTO"
            },
            "nullable": true
          },
          "tagNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "hasQuiz": {
            "type": "boolean"
          },
          "duration": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingDurationEnum"
          },
          "level": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingLevelEnum"
          },
          "durationDisplayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "levelDisplayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingDetailDraftRequest": {
        "type": "object",
        "properties": {
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.EntityAvailableFor.EntityAvailableForRequest"
            },
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeEnum"
          },
          "roleIds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTargetAudienceEnum"
            },
            "nullable": true
          },
          "categoryIds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingCategoryEnum"
            },
            "nullable": true
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "description": {
            "maxLength": 300,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "category": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingCategoryEnum"
          },
          "targetAudience": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTargetAudienceEnum"
          },
          "behaviours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingBehaviourDTO"
            },
            "nullable": true
          },
          "compliances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingComplianceDTO"
            },
            "nullable": true
          },
          "tagNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "hasQuiz": {
            "type": "boolean"
          },
          "duration": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingDurationEnum"
          },
          "level": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingLevelEnum"
          },
          "durationDisplayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "levelDisplayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingGroupDTO": {
        "type": "object",
        "properties": {
          "detailTrainingId": {
            "type": "string",
            "nullable": true
          },
          "trainingOrder": {
            "type": "integer",
            "format": "int32"
          },
          "duration": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingDurationEnum"
          },
          "durationDisplayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingGroupDetailDTO": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingCategoryEnum"
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "coverImage": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingCoverImageDTO"
          },
          "availableFor": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "detailTrainingId": {
            "type": "string",
            "nullable": true
          },
          "trainingOrder": {
            "type": "integer",
            "format": "int32"
          },
          "duration": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingDurationEnum"
          },
          "durationDisplayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingNumberSummaryRestView": {
        "type": "object",
        "properties": {
          "trainingType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeRequestEnum"
          },
          "trainingCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingRoleDTO": {
        "type": "object",
        "properties": {
          "roleId": {
            "type": "integer",
            "format": "int32"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "roleName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingSearchRestView": {
        "type": "object",
        "properties": {
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "compliances": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "availableFor": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "vendorName": {
            "type": "string",
            "nullable": true
          },
          "isNew": {
            "type": "boolean"
          },
          "isFavourite": {
            "type": "boolean"
          },
          "coverImage": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingCoverImageDTO"
          },
          "trainingRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingRoleDTO"
            },
            "nullable": true
          },
          "trainingCategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingCategoryDTO"
            },
            "nullable": true
          },
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "trainingName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "isEditable": {
            "type": "boolean"
          },
          "category": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "targetAudience": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "type": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "hasQuiz": {
            "type": "boolean"
          },
          "duration": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "durationMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "totalDuration": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "level": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingSearchSummaryRestView": {
        "type": "object",
        "properties": {
          "trainingId": {
            "type": "string",
            "nullable": true
          },
          "trainingName": {
            "type": "string",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingUpdateDTO": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "typeWithDisplayName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.Training.VendorDTO": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.EnrollmentSessionTrackingInfoDTO": {
        "type": "object",
        "properties": {
          "browserName": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "userGeolocation": {
            "type": "string",
            "nullable": true
          },
          "userIpAddresslist": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.EnrollmentStepDTO": {
        "type": "object",
        "properties": {
          "stepNumber": {
            "type": "integer",
            "format": "int32"
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "trainingName": {
            "type": "string",
            "nullable": true
          },
          "awardCertificate": {
            "type": "boolean"
          },
          "reportDetail": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ReportDetailDTO"
          },
          "trainingDetails": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.EnrollmentTrainingInformation"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.EnrollmentSummaryReportDTO": {
        "type": "object",
        "properties": {
          "trainingDetails": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.EnrollmentTrainingInformation"
          },
          "reportDetail": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ReportDetailDTO"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "completedCount": {
            "type": "integer",
            "format": "int32"
          },
          "inProgressCount": {
            "type": "integer",
            "format": "int32"
          },
          "groupCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "targetGroupNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "reminderDescription": {
            "type": "string",
            "nullable": true
          },
          "autoEnrollDescription": {
            "type": "string",
            "nullable": true
          },
          "reminderSettings": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentReminderDTO"
          },
          "autoEnrollSettings": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentAutoEnrollDTO"
          },
          "trainingEmailNotificationTemplateTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "certificateEmailNotificationTemplateTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "certificateAttachmentResourceId": {
            "type": "string",
            "nullable": true
          },
          "isTest": {
            "type": "boolean"
          },
          "isScormProxy": {
            "type": "boolean"
          },
          "smsSummary": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.SmsSummaryDTO"
          },
          "trainingTypeId": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeEnum"
          },
          "trainingTypeName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.EnrollmentStepDTO"
            },
            "nullable": true
          },
          "distributionDescription": {
            "type": "string",
            "nullable": true
          },
          "deliveryMethod": {
            "type": "string",
            "nullable": true
          },
          "sendTemplatesInPreferredLanguage": {
            "type": "boolean"
          },
          "awardCertificate": {
            "type": "boolean"
          },
          "certificateConfigSendType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.CertificateConfigSendTypeEnum"
          },
          "certificateDeliveryType": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.EnrollmentTrainingInformation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "trainingTypeName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "hasQuiz": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ExamResultDetailDTO": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "nullable": true
          },
          "sessionRank": {
            "type": "integer",
            "format": "int32"
          },
          "examStatus": {
            "type": "string",
            "nullable": true
          },
          "dateCompleted": {
            "type": "string",
            "format": "date-time"
          },
          "examScore": {
            "type": "number",
            "format": "float"
          },
          "trackingInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.EnrollmentSessionTrackingInfoDTO"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.InteractionDTO": {
        "type": "object",
        "properties": {
          "stepCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "interaction": {
            "type": "string",
            "nullable": true
          },
          "learningPathId": {
            "type": "string",
            "nullable": true
          },
          "trainingOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "currentStep": {
            "type": "string",
            "nullable": true
          },
          "eventTime": {
            "type": "string",
            "format": "date-time"
          },
          "trackingInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.EnrollmentSessionTrackingInfoDTO"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ProgressDetailDTO": {
        "type": "object",
        "properties": {
          "sessionRank": {
            "type": "integer",
            "format": "int32"
          },
          "progress": {
            "type": "string",
            "nullable": true
          },
          "sessionStartDate": {
            "type": "string",
            "format": "date-time"
          },
          "sessionEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "trackingInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.EnrollmentSessionTrackingInfoDTO"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ReportDetailDTO": {
        "type": "object",
        "properties": {
          "totalUserOpenedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "onlyOpenedCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalNonTargetUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "emailDeliveredUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "emailErrorUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "noResponseCount": {
            "type": "integer",
            "format": "int32"
          },
          "didNotCompleteTrainingCount": {
            "type": "integer",
            "format": "int32"
          },
          "didNotCompleteExamCount": {
            "type": "integer",
            "format": "int32"
          },
          "failedExamCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ResendEnrollmentByTypesDTO": {
        "type": "object",
        "properties": {
          "trainingType": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Enums.TrainingTypeRequestEnum"
          },
          "resendTypes": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.SmsSummaryDTO": {
        "type": "object",
        "properties": {
          "providerNumberResourceId": {
            "type": "string",
            "nullable": true
          },
          "smsPhoneNumber": {
            "type": "string",
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "sentCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse": {
        "type": "object",
        "properties": {
          "data": {
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.ApplicationService.Notifications.NotificationRenderResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Notifications.NotificationRenderResponse"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.AvailableForChangeImpactResponse, KeepnetLabs.AwarenessEducator.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.AvailableForChangeImpactResponse"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationImagesDTO, KeepnetLabs.AwarenessEducator.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationImagesDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationResultDTO, KeepnetLabs.AwarenessEducator.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.ApplicationService.Models.Training.ScormCustomization.ScormCustomizationResultDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingProgressReportDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingProgressReportDetailDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingProgresstReportDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingProgresstReportDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingResultReportDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingResultReportDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingResultReportDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingResultReportDetailDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingUserReportDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingUserReportDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingUserReportDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.AnonymousTrainingSummary.AnonymousTrainingUserReportDetailDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateDetailDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateTestEmailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateTestEmailDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentDetailDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentEnumTypesDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentEnumTypesDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetEnrollmentByIdResponse, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.GetEnrollmentByIdResponse"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentSmsResponse, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentSmsResponse"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentTeamsResponse, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.SendEnrollmentTeamsResponse"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.EnrollmentContent.EnrollmentContentResultDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.EnrollmentContent.EnrollmentContentResultDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.SCORMTrainingURLDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.SCORMTrainingURLDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadInitiateResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadInitiateResult"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadPartResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingChunkedUploadPartResult"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingContentUploadResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingContentUploadResult"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingDetailDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingUpdateDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingUpdateDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.EnrollmentSummaryReportDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.EnrollmentSummaryReportDTO"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.IdResult"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.ApplicationService.Notifications.NotificationActivityLogDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.ApplicationService.Notifications.NotificationActivityLogDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateSearchViewDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateSearchViewDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentCertificateSearchResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentCertificateSearchResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentSearchRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentSearchRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingSearchRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingSearchRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingSearchSummaryRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingSearchSummaryRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingActivityUsersSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingActivityUsersSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportClickedLinkSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportClickedLinkSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportExamResultsSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportExamResultsSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportNoResponseSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportNoResponseSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportOpenedEmailSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportOpenedEmailSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportProgressSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportProgressSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportReminderMailSearchDTO, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportReminderMailSearchDTO, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportSendingReportSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportSendingReportSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportUsersSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportUsersSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Base.EnumResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Base.EnumResult"
              },
              "nullable": true
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Base.EnumResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Base.EnumResult"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Language.LanguageDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Language.LanguageDTO"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSScormSessionInteractionDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSScormSessionInteractionDTO"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.BehaviourDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.BehaviourDTO"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.ComplianceDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.ComplianceDTO"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingNumberSummaryRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingNumberSummaryRestView"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.VendorDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.VendorDTO"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ExamResultDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ExamResultDetailDTO"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.InteractionDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.InteractionDTO"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ProgressDetailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.TrainingSummary.ProgressDetailDTO"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.DataResponse`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.ExportRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          },
          "reportAllPages": {
            "type": "boolean"
          },
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ExportType"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.ExportType": {
        "type": "string"
      },
      "KeepnetLabs.Common.Core.Models.Filter": {
        "type": "object",
        "properties": {
          "searchInputTextValue": {
            "type": "string",
            "nullable": true
          },
          "condition": {
            "type": "string",
            "nullable": true
          },
          "filterGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.FilterGroup"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.FilterGroup": {
        "type": "object",
        "properties": {
          "condition": {
            "type": "string",
            "nullable": true
          },
          "filterItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.FilterItem"
            },
            "nullable": true
          },
          "filterGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.FilterGroup"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.FilterItem": {
        "type": "object",
        "properties": {
          "fieldName": {
            "type": "string",
            "nullable": true
          },
          "operator": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.IdResult": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.ApplicationService.Notifications.NotificationActivityLogDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Notifications.NotificationActivityLogDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateSearchViewDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Certificate.CertificateSearchViewDTO"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentCertificateSearchResult, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentCertificateSearchResult"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentSearchRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentSearchRestView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingSearchRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingSearchRestView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingSearchSummaryRestView, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Training.TrainingSearchSummaryRestView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingActivityUsersSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TrainingActivityUsersSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportClickedLinkSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TrainingReportClickedLinkSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportExamResultsSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TrainingReportExamResultsSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportNoResponseSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TrainingReportNoResponseSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportOpenedEmailSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TrainingReportOpenedEmailSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportProgressSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TrainingReportProgressSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportReminderMailSearchDTO, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TrainingReportReminderMailSearchDTO"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportSendingReportSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TrainingReportSendingReportSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PagedResults`1[[KeepnetLabs.Domain.Models.TrainingReport.TrainingReportUsersSearchView, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TrainingReportUsersSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.PaginationRequest": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.ResultStatus": {
        "type": "string"
      },
      "KeepnetLabs.Common.Core.Models.ServiceResult`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendCertificateData, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.ResendCertificateData"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.ServiceResult`1[[KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.SCORM.LMSInitializeDTO"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.ServiceResult`1[[KeepnetLabs.Common.Core.Models.IdResult, KeepnetLabs.Common.Core, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.IdResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmsPhoneNumberDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmsPhoneNumberDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": { },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Core.Models.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Common.Domain.Entity.SessionModel": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "format": "int32"
          },
          "userResourceId": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "requestIpAddress": {
            "type": "string",
            "nullable": true
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "timeZoneId": {
            "type": "string",
            "nullable": true
          },
          "dateFormat": {
            "type": "string",
            "nullable": true
          },
          "timeFormat": {
            "type": "string",
            "nullable": true
          },
          "dateTimeFormat": {
            "type": "string",
            "nullable": true
          },
          "hasRootPermission": {
            "type": "boolean"
          },
          "hasResellerPermission": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.BooleanResult": {
        "type": "object",
        "properties": {
          "isSuccess": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.IdResult": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.CustomCompanyPagedResults`1[[KeepnetLabs.ApplicationService.Company.Dto.SearchCompanyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "limitExceededCompanyCount": {
            "type": "integer",
            "format": "int32"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.SearchCompanyDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AllowList.Search.SearchAllowListDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AllowList.Search.SearchAllowListDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Search.AnalysisEngineSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AnalysisEngine.Search.AnalysisEngineSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AuditLog.Dto.AuditLogDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AuditLog.Dto.AuditLogDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AuditLog.Search.AuditLogSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AuditLog.Search.AuditLogSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobSearchModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSearchModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioSearchModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackSearchCompanyPoolModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackSearchCompanyPoolModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CallbackTemplate.Dto.SearchCallbackTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CallbackTemplate.Dto.SearchCallbackTemplateDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityMembershipResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityMembershipResultDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.SearchCommunityPostDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CommunityPost.Dto.SearchCommunityPostDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Company.Dto.SearchClientDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.SearchClientDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Company.Dto.SearchCompanyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.SearchCompanyDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchCompanyGroupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchCompanyGroupDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchGroupCompanyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchGroupCompanyDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.DnsService.Search.DnsServiceProviderSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DnsService.Search.DnsServiceProviderSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.EmailTemplate.Dto.SearchEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EmailTemplate.Dto.SearchEmailTemplateDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardLogView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardLogView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardStatView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardStatView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Investigation.Search.InvestigationEmailSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Search.InvestigationEmailSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Investigation.Search.InvestigationSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Search.InvestigationSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Investigation.Search.InvestigationUserSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Search.InvestigationUserSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.MailProvider.Search.MailProviderSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Search.MailProviderSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Search.MatchingNotifiedEmailSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Search.MatchingNotifiedEmailSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Search.NotifiedEmailSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Search.NotifiedEmailSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingActivityUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingActivityUsersSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Search.PhishingCampaignJobReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Search.PhishingCampaignJobReportSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Search.PhishingCampaignJobSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Search.PhishingCampaignJobSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingReporter.Search.GeneratedApplicationHistorySearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingReporter.Search.GeneratedApplicationHistorySearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingReporter.Search.PhishingReporterUserSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingReporter.Search.PhishingReporterUserSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioCategoryInfoSearchViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioCategoryInfoSearchViewDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Playbook.Search.PlaybookSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Playbook.Search.PlaybookSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.ProxySetting.Dto.SearchProxySettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ProxySetting.Dto.SearchProxySettingDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.SearchPsEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.SearchPsEmailTemplateDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PsTextTemplate.Dto.SearchPsTextTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsTextTemplate.Dto.SearchPsTextTemplateDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobPrintoutUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobPrintoutUsersSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Search.QuishingCampaignJobReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Search.QuishingCampaignJobReportSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Search.QuishingCampaignJobSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Search.QuishingCampaignJobSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingScenario.Dto.QuishingScenarioSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingScenario.Dto.QuishingScenarioSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingTemplate.Dto.SearchQuishingTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Dto.SearchQuishingTemplateDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.ReportScheduling.Models.SearchReportSchedulingView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Models.SearchReportSchedulingView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SAMLSetting.Dto.SearchSamlSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SAMLSetting.Dto.SearchSamlSettingDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SIEMSetting.Dto.SearchSIEMSettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SIEMSetting.Dto.SearchSIEMSettingsDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SMTPSetting.Dto.SearchSmtpSettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SMTPSetting.Dto.SearchSmtpSettingsDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Search.SmishingCampaignJobReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Search.SmishingCampaignJobReportSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Search.SmishingCampaignJobSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Search.SmishingCampaignJobSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingScenario.Dto.SmishingScenarioSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingScenario.Dto.SmishingScenarioSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SystemRole.Dto.SystemRoleSearchDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SystemRole.Dto.SystemRoleSearchDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserSearchDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserSearchDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Tag.Dto.SearchTagDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Tag.Dto.SearchTagDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Core.IdResult"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.LDAP.ApplicationService.Models.ActiveDirectoryGroup, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.LDAP.ApplicationService.Models.ActiveDirectoryGroup"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPScheduleSearchResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.LDAP.ApplicationService.Models.LDAPScheduleSearchResult"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchCompanyModel, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchCompanyModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchForOwnerCompanyView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchForOwnerCompanyView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetUser.Search.TargetUserSearchView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetUser.Search.TargetUserSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetUser.Search.TmpTargetUserSearchView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetUser.Search.TmpTargetUserSearchView"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.TargetUser.Core.Dto.TargetUserDto, KeepnetLabs.TargetUser.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TargetUserDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PagedResults`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalNumberOfRecords": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": { }
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.Pagination.PaginationRequest": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ResultStatus": {
        "type": "string"
      },
      "KeepnetLabs.Core.ServiceResult": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.AllowList.Dto.AllowListDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AllowList.Dto.AllowListDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineFormDetailsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisExclusionDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisExclusionDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallBackCampaignScheduleInfoModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallBackCampaignScheduleInfoModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignFormDetailsModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignFormDetailsModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobFormDetailsModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobFormDetailsModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUserEmailSearchOpenedModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUserEmailSearchOpenedModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUserSearchEmailReportedModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUserSearchEmailReportedModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignPreviewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignPreviewModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSendingInfoModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSendingInfoModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSummaryModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSummaryModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackNumberAvailableModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackNumberAvailableModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioPreviewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioPreviewModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackUsageModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackUsageModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Community.Dto.CommunityDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Community.Dto.CommunityDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Community.Dto.InvitationCountDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Community.Dto.InvitationCountDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Community.Dto.MembershipRequestCountDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Community.Dto.MembershipRequestCountDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.CreateCommunityPostEmailDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CommunityPost.Dto.CreateCommunityPostEmailDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.GetCommunityPostDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CommunityPost.Dto.GetCommunityPostDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.CheckCompanyLicenseDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.CheckCompanyLicenseDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.ClientCredentialDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.ClientCredentialDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.ClientDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.ClientDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.CompanyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.CompanyDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCompanyAISettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.GetCompanyAISettingsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCompanyAgenticAISettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.GetCompanyAgenticAISettingsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCompanyLicenseExpiryDateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.GetCompanyLicenseExpiryDateDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCompanyLogoServiceResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.GetCompanyLogoServiceResponse"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCompanyPrivacyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.GetCompanyPrivacyDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCompanyPrivacyPentesterMaskDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.GetCompanyPrivacyPentesterMaskDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.RoiSettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.RoiSettingsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Company.Dto.SearchMyCompaniesServiceRequest, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.SearchMyCompaniesServiceRequest"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CompanyAILimit.Dto.CompanyAILimitResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CompanyAILimit.Dto.CompanyAILimitResponse"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.CompanyGroupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CompanyGroup.Dto.CompanyGroupDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchCompanyGroupResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchCompanyGroupResultDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Dashboard.Dto.DashboardWidgetsOrderingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Dashboard.Dto.DashboardWidgetsOrderingDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.PiiResidencyReportServiceResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DataSovereignty.PiiResidency.Dto.PiiResidencyReportServiceResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.DirectEmailSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.DirectEmailSettingDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.Setting, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DirectEmailSetting.Dto.Setting"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DnsService.Dto.DnsServiceFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DnsService.Dto.DnsServiceFormDetailsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DnsService.Dto.DnsServiceProviderDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DnsService.Dto.DnsServiceProviderDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordFormDetailsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.EmailTemplate.Dto.CheckAvailabilityDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EmailTemplate.Dto.CheckAvailabilityDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.EmailTemplate.Dto.EmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EmailTemplate.Dto.EmailTemplateDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.ExecutiveReport.Dto.GetExecutiveReportWidgetsServiceResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.GetExecutiveReportWidgetsServiceResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.FileItem.Dto.ParsedEmailDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.FileItem.Dto.ParsedEmailDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationFormDetailsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GetBadgesResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GetBadgesResponse"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchWithTimelineResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.LeaderboardSearchWithTimelineResultDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.MyLearningResultDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.PhishingTestResultSummaryDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.PhishingTestResultSummaryDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.UserCertificateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.UserCertificateDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Google.Dto.GoogleUserGroupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Dto.GoogleUserGroupDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Google.Dto.GoogleUserProvisioningDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Google.Dto.GoogleUserProvisioningDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Investigation.Dto.DashboardSummaryDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.DashboardSummaryDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationSummaryDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.InvestigationSummaryDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Job.Dto.JobDetailResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Job.Dto.JobDetailResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.CreateLandingPageTemplateReturnSearch, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.CreateLandingPageTemplateReturnSearch"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateFormDetailsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.TranslateLandingPageContentResponseDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.TranslateLandingPageContentResponseDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Lookup.Dto.License, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Lookup.Dto.License"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.MailProvider.Dto.MailProviderDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.MailProviderDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailAIAnalysisDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailAIAnalysisDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailForEditDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailForEditDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailStatsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.NotifiedEmailStatsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PBIReport.Dto.PBIEmbedParamsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PBIReport.Dto.PBIEmbedParamsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.CampaignTargetGroupsResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.CampaignTargetGroupsResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.EmailDeliverySettingFastLaunchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.EmailDeliverySettingFastLaunchModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.EmailDeliverySettingModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.EmailDeliverySettingModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignFormDetailsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignPreviewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignPreviewDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignPreviewListDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignPreviewListDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignScheduleInfoViewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignScheduleInfoViewModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignSendingInfoViewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignSendingInfoViewModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.QuishingCampaignPreviewListDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.QuishingCampaignPreviewListDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.ValidateMergeTagsResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.ValidateMergeTagsResultDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignExcludedIP.Dto.PhishingCampaignExcludedIPDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignExcludedIP.Dto.PhishingCampaignExcludedIPDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignExcludedIP.Dto.PhishingCampaignExcludedIPItemDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignExcludedIP.Dto.PhishingCampaignExcludedIPItemDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUsersSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobUsersSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.CustomPhishingCampaignJobUsersPagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.EmailEventInfoModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.EmailEventInfoModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobFormDetailsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailAttachmentOpenedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailAttachmentOpenedSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailClickedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailClickedSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailOpenedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailOpenedSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailRepliedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailRepliedSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailReportedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailReportedSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailSubmittedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserEmailSubmittedSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserMfaSubmittedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserMfaSubmittedSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUsersSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignSummaryResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignTargetGroupsResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignTargetGroupsResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingReporter.Dto.PhishingReporterDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingReporter.Dto.PhishingReporterDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingReporter.Dto.PhishingReporterSummaryViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingReporter.Dto.PhishingReporterSummaryViewDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingReporter.Dto.Setting, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingReporter.Dto.Setting"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioFormDetailsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioPreviewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioPreviewDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioStatisticsGroupByDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioStatisticsGroupByDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.QuishingScenarioPreviewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.QuishingScenarioPreviewDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmishingScenarioPreviewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmishingScenarioPreviewDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Playbook.Dto.PlaybookDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.ProxySetting.Dto.ProxySettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ProxySetting.Dto.ProxySettingDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.PsEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.PsEmailTemplateDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.PsTextTemplate.Dto.PsTextTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsTextTemplate.Dto.PsTextTemplateDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignFormDetailsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignPreviewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignPreviewDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignScheduleInfoViewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignScheduleInfoViewModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignSendingInfoViewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignSendingInfoViewModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobFormDetailsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailAllSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailAllSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailClickedSearchViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailClickedSearchViewDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailMfaSubmittedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailMfaSubmittedSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailOpenedSearchViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailOpenedSearchViewDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailReportedSearchViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailReportedSearchViewDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailSubmittedSearchViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUserEmailSubmittedSearchViewDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobUsersSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignTargetGroupsResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignTargetGroupsResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingScenario.QuishingScenarioDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingScenario.QuishingScenarioDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.QuishingTemplate.Dto.QuishingTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Dto.QuishingTemplateDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.ReportScheduling.Models.ReportSchedulingModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Models.ReportSchedulingModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SAMLSetting.Dto.DefaultSamlSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SAMLSetting.Dto.DefaultSamlSettingDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SAMLSetting.Dto.ParseMetadataDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SAMLSetting.Dto.ParseMetadataDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SAMLSetting.Dto.SamlSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SAMLSetting.Dto.SamlSettingDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SIEMSetting.Dto.SIEMSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SIEMSetting.Dto.SIEMSettingDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SMTPSetting.Dto.SmtpSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SMTPSetting.Dto.SmtpSettingDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignFormDetailsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignPreviewListDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignPreviewListDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignScheduleInfoViewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignScheduleInfoViewModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignSendingInfoViewModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignSendingInfoViewModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobFormDetailsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobFormDetailsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsAllSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsAllSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsClickedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsClickedSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsMfaSubmittedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsMfaSubmittedSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsSubmittedSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUserSmsSubmittedSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignJobUsersSearchView"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignTargetGroupsResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingCampaignJob.Dto.SmishingCampaignTargetGroupsResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SmishingScenario.SmishingScenarioDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SmishingScenario.SmishingScenarioDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SystemRole.Dto.GetSystemRoleDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SystemRole.Dto.GetSystemRoleDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.CreatePasswordServiceResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SystemUser.Dto.CreatePasswordServiceResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserMfaDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserMfaDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserNotificationSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserNotificationSettingDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserSettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserSettingsDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.TargetUserCustomField.Dto.TargetUserCustomFieldDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.TargetUserCustomField.Dto.TargetUserCustomFieldDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppAuthorizeLinkResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppAuthorizeLinkResponse"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppCallbackResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppCallbackResponse"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppCheckResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppCheckResponse"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppInstallToUsersResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsAppInstallToUsersResponse"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Teams.Dto.TeamsOboAuthorizeLinkResponse, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.Dto.TeamsOboAuthorizeLinkResponse"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.Teams.SendTestActivityResponseDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Teams.SendTestActivityResponseDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.TimeZone.Dto.GetTimeZonesServiceResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.TimeZone.Dto.GetTimeZonesServiceResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.WhiteLabeling.Dto.WhiteLabelingByDomainDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.WhiteLabeling.Dto.WhiteLabelingByDomainDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.ApplicationService.WhiteLabeling.Dto.WhiteLabelingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.WhiteLabeling.Dto.WhiteLabelingDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Common.Domain.Entity.SessionModel, KeepnetLabs.Common.Domain, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Domain.Entity.SessionModel"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.BooleanResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.BooleanResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.IdResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.CustomCompanyPagedResults`1[[KeepnetLabs.ApplicationService.Company.Dto.SearchCompanyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.CustomCompanyPagedResults`1[[KeepnetLabs.ApplicationService.Company.Dto.SearchCompanyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AllowList.Search.SearchAllowListDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AllowList.Search.SearchAllowListDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Search.AnalysisEngineSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Search.AnalysisEngineSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AuditLog.Dto.AuditLogDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AuditLog.Dto.AuditLogDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AuditLog.Search.AuditLogSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.AuditLog.Search.AuditLogSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignJobSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackScenarioSearchModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackSearchCompanyPoolModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackSearchCompanyPoolModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CallbackTemplate.Dto.SearchCallbackTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CallbackTemplate.Dto.SearchCallbackTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityMembershipResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Community.Dto.SearchCommunityMembershipResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.SearchCommunityPostDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.SearchCommunityPostDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Company.Dto.SearchClientDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Company.Dto.SearchClientDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchCompanyGroupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchCompanyGroupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchGroupCompanyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.SearchGroupCompanyDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.DnsService.Search.DnsServiceProviderSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.DnsService.Search.DnsServiceProviderSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.DomainRecord.Dto.DomainRecordSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.EmailTemplate.Dto.SearchEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.EmailTemplate.Dto.SearchEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardLogView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardLogView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardStatView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardStatView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Investigation.Search.InvestigationEmailSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Investigation.Search.InvestigationEmailSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Investigation.Search.InvestigationSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Investigation.Search.InvestigationSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Investigation.Search.InvestigationUserSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Investigation.Search.InvestigationUserSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.LandingPageTemplate.Dto.LandingPageTemplateSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.MailProvider.Search.MailProviderSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.MailProvider.Search.MailProviderSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Search.MatchingNotifiedEmailSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Search.MatchingNotifiedEmailSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Search.NotifiedEmailSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Search.NotifiedEmailSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingActivityUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingActivityUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Search.PhishingCampaignJobReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Search.PhishingCampaignJobReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Search.PhishingCampaignJobSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingCampaignJob.Search.PhishingCampaignJobSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingReporter.Search.GeneratedApplicationHistorySearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingReporter.Search.GeneratedApplicationHistorySearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingReporter.Search.PhishingReporterUserSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingReporter.Search.PhishingReporterUserSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioCategoryInfoSearchViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioCategoryInfoSearchViewDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.PhishingScenarioSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Playbook.Search.PlaybookSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Playbook.Search.PlaybookSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.ProxySetting.Dto.SearchProxySettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.ProxySetting.Dto.SearchProxySettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.SearchPsEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.SearchPsEmailTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PsTextTemplate.Dto.SearchPsTextTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.PsTextTemplate.Dto.SearchPsTextTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingCampaignSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobPrintoutUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Dto.QuishingCampaignJobPrintoutUsersSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Search.QuishingCampaignJobReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Search.QuishingCampaignJobReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Search.QuishingCampaignJobSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingCampaignJob.Search.QuishingCampaignJobSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingScenario.Dto.QuishingScenarioSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingScenario.Dto.QuishingScenarioSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingTemplate.Dto.SearchQuishingTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.QuishingTemplate.Dto.SearchQuishingTemplateDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.ReportScheduling.Models.SearchReportSchedulingView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.ReportScheduling.Models.SearchReportSchedulingView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SAMLSetting.Dto.SearchSamlSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SAMLSetting.Dto.SearchSamlSettingDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SIEMSetting.Dto.SearchSIEMSettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SIEMSetting.Dto.SearchSIEMSettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SMTPSetting.Dto.SearchSmtpSettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SMTPSetting.Dto.SearchSmtpSettingsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaign.Dto.SmishingCampaignSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Search.SmishingCampaignJobReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Search.SmishingCampaignJobReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Search.SmishingCampaignJobSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingCampaignJob.Search.SmishingCampaignJobSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingScenario.Dto.SmishingScenarioSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SmishingScenario.Dto.SmishingScenarioSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SystemRole.Dto.SystemRoleSearchDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SystemRole.Dto.SystemRoleSearchDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserSearchDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.SystemUser.Dto.SystemUserSearchDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Tag.Dto.SearchTagDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.ApplicationService.Tag.Dto.SearchTagDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Core.IdResult, KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.LDAP.ApplicationService.Models.ActiveDirectoryGroup, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.LDAP.ApplicationService.Models.ActiveDirectoryGroup, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPScheduleSearchResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPScheduleSearchResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchCompanyModel, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchCompanyModel, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchForOwnerCompanyView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchForOwnerCompanyView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetUser.Search.TargetUserSearchView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetUser.Search.TargetUserSearchView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.TargetUser.Core.Dto.TargetUserDto, KeepnetLabs.TargetUser.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.TargetUser.Core.Dto.TargetUserDto, KeepnetLabs.TargetUser.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Core.Pagination.PagedResults`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], KeepnetLabs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.AgenticAIMetadataResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.AgenticAIMetadataResponse"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.AgenticAISettingsResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.AgenticAISettingsResponse"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthLoginResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthLoginResponse"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthMagicLinkSendResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthMagicLinkSendResponse"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.DistributedService.Rest.Models.SystemInfo.SystemInfoSummaryData, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SystemInfo.SystemInfoSummaryData"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPFieldListResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.LDAP.ApplicationService.Models.LDAPFieldListResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPMappingStatusResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.LDAP.ApplicationService.Models.LDAPMappingStatusResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPScheduleDetailResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.LDAP.ApplicationService.Models.LDAPScheduleDetailResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPSettingConnectionResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.LDAP.ApplicationService.Models.LDAPSettingConnectionResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPSettingCreateMappingResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.LDAP.ApplicationService.Models.LDAPSettingCreateMappingResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.LDAP.ApplicationService.Models.LDAPSettingDetailResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.LDAP.ApplicationService.Models.LDAPSettingDetailResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Mailer.Domain.Dtos.Worker.EmailInformationResult, KeepnetLabs.Mailer.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Mailer.Domain.Dtos.Worker.EmailInformationResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUploadedFileDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUploadedFileDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TransactionDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TransactionDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.TargetUser.Core.Dto.TargetUserDto, KeepnetLabs.TargetUser.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TargetUserDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.TargetUser.Core.Dto.TargetUserUploadedFileDto, KeepnetLabs.TargetUser.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TargetUserUploadedFileDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.TargetUser.Core.Dto.TransactionIdDto, KeepnetLabs.TargetUser.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TransactionIdDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[KeepnetLabs.TargetUser.Core.Dto.UploadFileDto, KeepnetLabs.TargetUser.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.UploadFileDto"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineDetailDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineDetailDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineTypeDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisEngineTypeDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignTargetGroupModel, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Callback.Model.CallbackCampaignTargetGroupModel"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Community.Dto.CommunityInvitationDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Community.Dto.CommunityInvitationDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Community.Dto.InviteToCommunityDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Community.Dto.InviteToCommunityDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Community.Dto.SuggestedCommunityDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Community.Dto.SuggestedCommunityDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.CommunityPostCommentDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CommunityPost.Dto.CommunityPostCommentDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.GetTopPostsDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CommunityPost.Dto.GetTopPostsDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.CommunityPost.Dto.GetUsersLastPostDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CommunityPost.Dto.GetUsersLastPostDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Company.Dto.GetCommunityCompaniesDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.GetCommunityCompaniesDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Company.Dto.GetMyCompaniesDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Company.Dto.GetMyCompaniesDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.CompanyGroup.Dto.CompanyGroupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.CompanyGroup.Dto.CompanyGroupDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.EmailTemplate.Dto.GetEmailTemplateTypeLookupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EmailTemplate.Dto.GetEmailTemplateTypeLookupDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportSearchView"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportWidgetResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ExecutiveReport.Dto.ExecutiveReportWidgetResultDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.FileItem.Dto.FileItemDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.FileItem.Dto.FileItemDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.BadgeInfoDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.BadgeInfoDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.DepartmentLeaderboardResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.DepartmentLeaderboardResultDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationUserPerformanceViewResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationUserPerformanceViewResultDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationUserTimeLineViewResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationUserTimeLineViewResultDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationViewResultDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.GamificationPointScale.Dto.GamificationViewResultDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardSummaryDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.IncidentSharing.Dto.ISDashboardSummaryDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Investigation.Dto.RunningInvestigationDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.RunningInvestigationDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Investigation.Dto.TopRuleDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Investigation.Dto.TopRuleDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Job.Dto.JobResult, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Job.Dto.JobResult"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Lookup.Dto.CountryTimeZoneInfoDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Lookup.Dto.CountryTimeZoneInfoDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Lookup.Dto.GenericCodeTypeDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Lookup.Dto.GenericCodeTypeDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Lookup.Dto.LanguageDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Lookup.Dto.LanguageDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Lookup.Dto.LookupDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Lookup.Dto.LookupDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.MailProvider.Dto.MailProviderDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.MailProvider.Dto.MailProviderDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Dto.TopReportersDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Dto.TopReportersDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.NotifiedEmail.Search.NotifiedEmailTrendSearchView, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.NotifiedEmail.Search.NotifiedEmailTrendSearchView"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.OpenAI.Dto.PsEmailTemplateTranslationResponseDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.OpenAI.Dto.PsEmailTemplateTranslationResponseDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.PBIReport.Dto.PBIReportDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PBIReport.Dto.PBIReportDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmsPhoneNumberDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingScenario.Dto.SmsPhoneNumberDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.Region.Dto.RegionDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Region.Dto.RegionDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.ReportScheduling.Dto.ManagerDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.ManagerDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.ReportScheduling.Dto.TargetGroup, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.ReportScheduling.Dto.TargetGroup"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.SystemPermission.Dto.GetSystemPermissionDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SystemPermission.Dto.GetSystemPermissionDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.SystemRole.Dto.SystemRoleDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SystemRole.Dto.SystemRoleDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.ApplicationService.TargetUserCustomField.Dto.TargetUserCustomFieldDto, KeepnetLabs.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.TargetUserCustomField.Dto.TargetUserCustomFieldDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.TargetUserEmailDTO, KeepnetLabs.AwarenessEducator.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.TargetUserEmailDTO"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.DistributedService.Rest.Models.CompanyIpRestriction.CompanyIpRestrictionResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CompanyIpRestriction.CompanyIpRestrictionResponse"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.DistributedService.Rest.Models.Dashboard.SummaryDataResponse, KeepnetLabs.DistributedService.Rest, Version=3.5.0.7, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Dashboard.SummaryDataResponse"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.Domain.Entities.Investigation.ScanConfigurationDetailDto, KeepnetLabs.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.ScanConfigurationDetailDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.EmailParser.EmlParser+Uri, KeepnetLabs.EmailParser, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.EmailParser.EmlParser+Uri"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.LDAP.ApplicationService.Models.TargetGroupForLDAPSelectBoxResult, KeepnetLabs.LDAP.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.LDAP.ApplicationService.Models.TargetGroupForLDAPSelectBoxResult"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUserCountDetailDto, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUserCountDetailDto"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": { }
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[System.Object, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": { },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Dynamic.ExpandoObject, System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": { },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Object, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Core.ServiceResult`1[[System.Tuple`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/System.Tuple`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.ResultStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.DAL.Models.Filter": {
        "type": "object",
        "properties": {
          "condition": {
            "type": "string",
            "nullable": true
          },
          "filterGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.FilterGroup"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.DAL.Models.FilterGroup": {
        "type": "object",
        "properties": {
          "condition": {
            "type": "string",
            "nullable": true
          },
          "filterItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.FilterItem"
            },
            "nullable": true
          },
          "filterGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.FilterGroup"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.DAL.Models.FilterItem": {
        "type": "object",
        "properties": {
          "fieldName": {
            "type": "string",
            "nullable": true
          },
          "operator": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "dataType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.TargetUserCustomField.TargetUserCustomFieldDataType"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.DAL.Models.GlobalDeleteRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "selectAll": {
            "type": "boolean"
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DAL.Models.Filter"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.DistributedService.Rest.Models.Account.LoginRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "Login username or email address.",
            "nullable": true
          },
          "bypassSaml": {
            "type": "boolean",
            "description": "When true, skips SAML-based single sign-on and uses direct authentication."
          }
        },
        "additionalProperties": false,
        "description": "Request model for user login authentication."
      },
      "KeepnetLabs.DistributedService.Rest.Models.AgentAuth.AgentAuthLoginRequest": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "Active session identifier for the agent.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for agent login using an existing session."
      },
      "KeepnetLabs.DistributedService.Rest.Models.AgentAuth.AgentAuthTokenRequest": {
        "type": "object",
        "properties": {
          "authCode": {
            "type": "string",
            "description": "OAuth authorization code to exchange for an access token.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for exchanging an authorization code for an agent authentication token."
      },
      "KeepnetLabs.DistributedService.Rest.Models.AgenticAI.AgenticAIActivitySearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "One-based page number for pagination.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name used for sorting results.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, sorts results in ascending order; otherwise descending."
          },
          "isGroupedByBatch": {
            "type": "boolean",
            "description": "When true, groups activity records by their batch identifier."
          },
          "includeAutonomous": {
            "type": "boolean",
            "description": "When true, includes activities from autonomous batches (e.g. scheduled-task runs).\r\nDefault false preserves the approval-inbox behaviour that excludes autonomous batches."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching and paginating agentic AI activity logs."
      },
      "KeepnetLabs.DistributedService.Rest.Models.AgenticAI.AgenticAITaskSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "One-based page number for pagination.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name used for sorting results.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, sorts results in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching and paginating scheduled AI tasks."
      },
      "KeepnetLabs.DistributedService.Rest.Models.AgenticAI.ApproveAgenticAIActivitiesRequest": {
        "type": "object",
        "properties": {
          "resourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "ResourceIds of activities to approve. Only WaitingForApproval activities belonging to the company are processed.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request for POST /api/agentic-ai/activities/approve. Approves multiple activities and creates campaigns/enrollments."
      },
      "KeepnetLabs.DistributedService.Rest.Models.AgenticAI.CreateAgenticAIActivityRequest": {
        "type": "object",
        "properties": {
          "batchResourceId": {
            "type": "string",
            "nullable": true
          },
          "activityType": {
            "type": "integer",
            "description": "1=PhishingCampaign, 2=QuishingCampaign, 3=SmishingCampaign, 4=Training",
            "format": "int32"
          },
          "scenarioResourceId": {
            "type": "string",
            "nullable": true
          },
          "trainingResourceId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "targetGroupResourceId": {
            "type": "string",
            "nullable": true
          },
          "contentCategory": {
            "type": "string",
            "nullable": true
          },
          "campaignPayload": {
            "type": "string",
            "description": "Create campaign params (for Phishing/Quishing/Smishing). Sent as JSON object.",
            "nullable": true
          },
          "enrollmentPayload": {
            "type": "string",
            "description": "Create enrollment params (for Training). Sent as JSON object.",
            "nullable": true
          },
          "explanationJson": {
            "type": "string",
            "description": "AI explanation. Sent as JSON object, e.g. { \"reasoningText\": \"...\" }",
            "nullable": true
          },
          "retryOfActivityResourceId": {
            "type": "string",
            "description": "ResourceId of the Retrying activity this new activity is retrying. When provided, the original activity transitions to Retried status.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request for POST /api/agentic-ai/activities. Use CampaignPayload for Phishing/Quishing/Smishing, EnrollmentPayload for Training."
      },
      "KeepnetLabs.DistributedService.Rest.Models.AgenticAI.CreateAgenticAITaskRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable task name, e.g. \"IT Dept Weekly Phishing\"",
            "nullable": true
          },
          "activityType": {
            "type": "integer",
            "description": "Activity type: 1=PhishingCampaign, 2=QuishingCampaign, 3=SmishingCampaign, 4=Training",
            "format": "int32"
          },
          "targetGroupResourceId": {
            "type": "string",
            "description": "Target group ResourceId (12-char alphanumeric)",
            "nullable": true
          },
          "contentCategory": {
            "type": "string",
            "description": "Content category, e.g. \"Social Engineering\", \"Finance\"",
            "nullable": true
          },
          "difficultyLevel": {
            "type": "integer",
            "description": "Difficulty level: 1=Easy, 2=Medium, 3=Hard. Omit to use the default (2 = Medium).",
            "format": "int32",
            "nullable": true
          },
          "languageCode": {
            "type": "string",
            "description": "Language code: \"en\", \"tr\", \"de\" etc.",
            "nullable": true
          },
          "frequencyType": {
            "type": "integer",
            "description": "Frequency type: 1=Daily, 2=Weekly, 3=EveryTwoWeeks, 4=Monthly, 5=Quarterly, 6=Custom",
            "format": "int32"
          },
          "cronExpression": {
            "type": "string",
            "description": "Custom cron expression (required when FrequencyType = 6/Custom)",
            "nullable": true
          },
          "schedule": {
            "type": "string",
            "description": "First scheduled run time (local time — timezone specified via ScheduledDateTimeZoneId)",
            "format": "date-time"
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "description": "Timezone identifier, e.g. \"Europe/Istanbul\" or \"Turkey Standard Time\"",
            "nullable": true
          },
          "isRegionAwareTimeZone": {
            "type": "boolean",
            "description": "Whether the timezone is region-aware"
          },
          "agentInstructionsJson": {
            "type": "string",
            "description": "Additional instructions for the AI agent (JSON string)",
            "nullable": true
          },
          "maxOccurrences": {
            "type": "integer",
            "description": "Maximum number of runs (null = unlimited)",
            "format": "int32",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "Task end date (null = no end date)",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request for POST /api/agentic-ai/tasks — Create a new scheduled AI task."
      },
      "KeepnetLabs.DistributedService.Rest.Models.AgenticAI.RejectAgenticAIActivitiesRequest": {
        "type": "object",
        "properties": {
          "resourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "ResourceIds of activities to reject. Only WaitingForApproval activities belonging to the company are rejected.",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "description": "Optional reason for declining the activities.",
            "nullable": true
          },
          "declineForRetry": {
            "type": "boolean",
            "description": "When true, activities are set to Retrying status instead of Declined, signalling that a retry is expected."
          }
        },
        "additionalProperties": false,
        "description": "Request for POST /api/agentic-ai/activities/reject. Rejects multiple activities that are in WaitingForApproval status."
      },
      "KeepnetLabs.DistributedService.Rest.Models.AllowList.DeleteAllowListRequest": {
        "type": "object",
        "properties": {
          "resourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the allow list entries to delete.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for removing one or more entries from the allow list."
      },
      "KeepnetLabs.DistributedService.Rest.Models.AllowList.SearchAllowListRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "One-based page number for pagination.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name used for sorting results.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, sorts results in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching and paginating allow list entries."
      },
      "KeepnetLabs.DistributedService.Rest.Models.ApiResponse": {
        "type": "object",
        "additionalProperties": false,
        "description": "Factory for building standardized API response objects from service results."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Audit.CreateAuditLogRequest": {
        "type": "object",
        "properties": {
          "application": {
            "type": "string",
            "description": "Name of the application that generated the audit event.",
            "nullable": true
          },
          "module": {
            "type": "string",
            "description": "Application module where the audited action occurred.",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "Request URL associated with the audited action.",
            "nullable": true
          },
          "clientIp": {
            "type": "string",
            "description": "IP address of the client that triggered the action.",
            "nullable": true
          },
          "username": {
            "type": "string",
            "description": "Username of the user who performed the action.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address of the user who performed the action.",
            "nullable": true
          },
          "logMessage": {
            "type": "string",
            "description": "Primary log message describing the audited event.",
            "nullable": true
          },
          "correlationId": {
            "type": "string",
            "description": "Correlation identifier for tracing related operations.",
            "nullable": true
          },
          "browserInfo": {
            "type": "string",
            "description": "Browser and device information of the client.",
            "nullable": true
          },
          "extraLogMessage": {
            "type": "string",
            "description": "Supplementary log message with additional context.",
            "nullable": true
          },
          "action": {
            "type": "string",
            "description": "Type of action performed (e.g., Create, Update, Delete).",
            "nullable": true
          },
          "duration": {
            "type": "string",
            "description": "Execution duration of the audited operation.",
            "nullable": true
          },
          "parameter": {
            "type": "string",
            "description": "Serialized parameters associated with the audited action.",
            "nullable": true
          },
          "changeSet": {
            "type": "string",
            "description": "Serialized before/after change set for the audited operation.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating an audit log entry."
      },
      "KeepnetLabs.DistributedService.Rest.Models.AuditLog.AuditLogSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "One-based page number for pagination.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name used for sorting results.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, sorts results in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching audit log entries with filtering and pagination."
      },
      "KeepnetLabs.DistributedService.Rest.Models.AuditLog.GetAuditLogRequest": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "One-based page number for pagination.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name used for sorting results.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, sorts results in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request model for retrieving paginated audit log entries."
      },
      "KeepnetLabs.DistributedService.Rest.Models.AvailableFor.Search.SelectedCompanyGroupDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Resource identifier of the selected company group.",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "description": "Display name or type label of the company group (e.g., \"Company\" or \"CompanyGroup\").",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object representing a selected company group used in availability filtering."
      },
      "KeepnetLabs.DistributedService.Rest.Models.BaseResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Response status indicator (e.g., \"success\", \"failed\", \"input_error\").",
            "nullable": true
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the operation.",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Collection of validation error messages when the request contains invalid input.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Base API response containing status, message, and validation details."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCalculateScheduleInfoRequest": {
        "type": "object",
        "properties": {
          "scheduleTypeId": {
            "type": "integer",
            "description": "Schedule type identifier indicating the campaign's scheduling behavior (e.g., immediate or scheduled).",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "description": "Scheduled date and time for the campaign to start. Null for immediate execution.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the scheduled date (e.g., \"Europe/Istanbul\").",
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "description": "Campaign recurrence frequency value (e.g., one-time, weekly, monthly).",
            "format": "int32"
          },
          "callbackScenarioResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of callback scenario resource identifiers to include in the schedule calculation.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for calculating the schedule information for a callback campaign based on frequency and scenario count."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCalculateSendingInfoRequest": {
        "type": "object",
        "properties": {
          "sendingLimit": {
            "type": "integer",
            "description": "Maximum number of emails that can be sent in the campaign.",
            "format": "int32"
          },
          "sendOnlyActiveUsers": {
            "type": "boolean",
            "description": "When true, only active users in the target groups will be counted."
          },
          "sendRandomlyUsers": {
            "type": "boolean",
            "description": "When true, a random subset of users from the target groups will be selected."
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "description": "Number or percentage of randomly selected users when KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCalculateSendingInfoRequest.SendRandomlyUsers is true.",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "description": "Calculation type for random user selection (e.g., count vs. percentage).",
            "format": "int32"
          },
          "totalTargetUserCount": {
            "type": "integer",
            "description": "Total number of target users available across all selected target groups.",
            "format": "int32"
          },
          "distributionTypeId": {
            "type": "integer",
            "description": "Distribution type identifier controlling the sending pattern (e.g., evenly or batched).",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "description": "Number of emails to send in each distribution batch.",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "description": "Time unit for the distribution delay interval (e.g., minutes, hours).",
            "format": "int32"
          },
          "distributionEmailOver": {
            "type": "integer",
            "description": "Total number of emails to distribute over the specified time period.",
            "format": "int32"
          },
          "distributionEmailOverTimeTypeId": {
            "type": "integer",
            "description": "Time unit for the email-over distribution period (e.g., minutes, hours).",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for calculating the estimated email sending information based on distribution and targeting settings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignCreateRequest": {
        "required": [
          "name",
          "scheduleTypeId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the campaign. Required, max 200 characters."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Description of the campaign purpose. Max 300 characters.",
            "nullable": true
          },
          "scheduleTypeId": {
            "type": "integer",
            "description": "Schedule type identifier indicating whether the campaign starts immediately or at a scheduled time. Required.",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "description": "Scheduled date and time for the campaign to start. Null for immediate execution.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the scheduled date (e.g., \"Europe/Istanbul\").",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "description": "Duration of the campaign in days.",
            "format": "int32"
          },
          "distributionStartTypeId": {
            "type": "integer",
            "description": "Distribution start type controlling how emails are sent. Defaults to sending all when the campaign starts.",
            "format": "int32",
            "nullable": true
          },
          "distributionTypeId": {
            "type": "integer",
            "description": "Distribution type identifier controlling the sending pattern (e.g., evenly or batched).",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "description": "Number of emails to send in each distribution batch.",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "description": "Time unit for the distribution delay interval (e.g., minutes, hours).",
            "format": "int32"
          },
          "distributionStartTime": {
            "type": "string",
            "description": "Start time of the daily distribution window for staggered email delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "description": "End time of the daily distribution window for staggered email delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionDays": {
            "type": "integer",
            "description": "Number of days over which to distribute the email delivery.",
            "format": "int32",
            "nullable": true
          },
          "sendingLimit": {
            "type": "integer",
            "description": "Maximum number of emails that can be sent in this campaign.",
            "format": "int32"
          },
          "excludeFromReports": {
            "type": "boolean",
            "description": "When true, results from this campaign are excluded from aggregated reports."
          },
          "sendOnlyActiveUsers": {
            "type": "boolean",
            "description": "When true, only active users in the target groups will receive the campaign."
          },
          "sendRandomlyUsers": {
            "type": "boolean",
            "description": "When true, a random subset of users from the target groups will be selected."
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "description": "Number or percentage of randomly selected users when KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignCreateRequest.SendRandomlyUsers is true.",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "description": "Calculation type for random user selection (e.g., count vs. percentage).",
            "format": "int32"
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of target group resource identifiers whose users will receive the campaign.",
            "nullable": true
          },
          "frequency": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.PhishingCampaign.PhishingCampaignFrequency"
          },
          "phishingScenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingScenarioTrainingDTO"
            },
            "description": "List of phishing scenario and training combinations assigned to this campaign.",
            "nullable": true
          },
          "smtpSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the SMTP setting to use for sending campaign emails.",
            "nullable": true
          },
          "distributionEmailOver": {
            "type": "integer",
            "description": "Total number of emails to distribute over the specified time period.",
            "format": "int32"
          },
          "distributionEmailOverTimeTypeId": {
            "type": "integer",
            "description": "Time unit for the email-over distribution period (e.g., minutes, hours).",
            "format": "int32"
          },
          "emailDeliverySettingType": {
            "type": "integer",
            "description": "Email delivery setting type controlling how emails are sent (e.g., SMTP, direct, API).",
            "format": "int32"
          },
          "directEmailSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the direct email delivery setting, when applicable.",
            "nullable": true
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "description": "Optional merge tag fallback values. When a merge tag has no value for a user, these fallbacks are applied instead of excluding the user.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new callback campaign with scheduling, distribution, and scenario configuration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignDeleteRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of callback campaign resource identifiers to delete.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "When true, all campaigns matching the filter are selected for deletion."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of campaign resource identifiers to exclude from deletion when KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignDeleteRequest.SelectAll is true.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for deleting one or more callback campaigns, with support for bulk selection."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignInstanceRequest": {
        "type": "object",
        "properties": {
          "excludeFromReports": {
            "type": "boolean",
            "description": "When true, results from this campaign instance are excluded from aggregated reports."
          },
          "scheduledDate": {
            "type": "string",
            "description": "Scheduled date and time for the campaign instance to start. Null for immediate execution.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the scheduled date (e.g., \"Europe/Istanbul\").",
            "nullable": true
          },
          "scheduleTypeId": {
            "type": "integer",
            "description": "Schedule type identifier indicating whether the campaign starts immediately or at a scheduled time.",
            "format": "int32"
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of target group resource identifiers whose users will receive the campaign.",
            "nullable": true
          },
          "distributionStartTypeId": {
            "type": "integer",
            "description": "Distribution start type controlling how emails are sent. Defaults to sending all when the campaign starts.",
            "format": "int32",
            "nullable": true
          },
          "distributionStartTime": {
            "type": "string",
            "description": "Start time of the daily distribution window for staggered email delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "description": "End time of the daily distribution window for staggered email delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionDays": {
            "type": "integer",
            "description": "Number of days over which to distribute the email delivery.",
            "format": "int32",
            "nullable": true
          },
          "campaignResourceId": {
            "type": "string",
            "description": "Resource identifier of the parent campaign this instance belongs to.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new instance (run) of a callback campaign with scheduling and distribution settings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobExportRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 25.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "reportAllPages": {
            "type": "boolean",
            "description": "When true, all pages of data are exported regardless of pagination settings."
          },
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportType"
          },
          "phishingCampaignFrequencyGroup": {
            "type": "integer",
            "description": "Optional frequency group filter for recurring campaigns. Defaults to 0 (all groups).",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for exporting callback campaign job data with filtering, pagination, and format options."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 25.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "phishingCampaignFrequencyGroup": {
            "type": "integer",
            "description": "Optional frequency group filter for recurring campaigns. Defaults to 0 (all groups).",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through callback campaign jobs."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobToUserResendRequest": {
        "type": "object",
        "properties": {
          "types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType"
            },
            "description": "Array of campaign job user search types indicating which activity categories should be resent. Maps to the KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType enum.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for resending a callback campaign job to a single user, specifying activity types to resend."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobToUsersResendRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of user resource identifiers to resend the campaign job to.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "When true, all users matching the filter are selected for resend."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of user resource identifiers to exclude from resend when KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobToUsersResendRequest.SelectAll is true.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          },
          "searchType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for resending a callback campaign job to multiple selected users."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUserSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "activityType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.PhishingCampaignJobUserActivityType"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching a specific user's activity within a callback campaign job."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignJobUsersSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "activityType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.PhishingCampaignJobUserActivityType"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through users associated with a callback campaign job."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCampaignSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through callback campaigns."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackCompanyPoolSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through the company pool of callback resources."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackEmailTemplateCreateRequest": {
        "required": [
          "description",
          "fromAddress",
          "fromName",
          "name",
          "subject",
          "template"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the email template. Required, max 64 characters."
          },
          "description": {
            "minLength": 1,
            "type": "string",
            "description": "Detailed description of the email template's purpose. Required."
          },
          "difficultyResourceId": {
            "type": "string",
            "description": "Resource identifier indicating the difficulty level of this template.",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type associated with this template.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of tags for categorizing and filtering the template.",
            "nullable": true
          },
          "subject": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Email subject line. Required, max 320 characters."
          },
          "fromName": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Sender display name shown in the email. Required, max 320 characters."
          },
          "fromAddress": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Sender email address shown in the From field. Required, max 320 characters."
          },
          "template": {
            "maxLength": 10485760,
            "minLength": 1,
            "type": "string",
            "description": "HTML content of the email template body. Required, max 10 MB."
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility rules defining which company groups can access this template.",
            "nullable": true
          },
          "attachmentFiles": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "binary"
            },
            "description": "List of files to attach to the email template.",
            "nullable": true
          },
          "phishingFile": {
            "type": "string",
            "description": "Phishing payload file to embed in the email for simulation purposes.",
            "format": "binary",
            "nullable": true
          },
          "phishingFileType": {
            "type": "string",
            "description": "MIME type or extension of the phishing payload file.",
            "nullable": true
          },
          "isPhishingFileModified": {
            "type": "boolean",
            "description": "Indicates whether the phishing file has been modified during creation."
          },
          "phishingFileName": {
            "type": "string",
            "description": "Original filename of the phishing payload file.",
            "nullable": true
          },
          "isDuplicated": {
            "type": "boolean",
            "description": "Indicates whether this template is being created as a duplicate of an existing template."
          },
          "duplicatedTemplateResourceId": {
            "type": "string",
            "description": "Resource identifier of the original template being duplicated, when KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackEmailTemplateCreateRequest.IsDuplicated is true.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new callback email template, including attachments and phishing file configuration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackScenarioCreateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Display name of the callback scenario.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Detailed description explaining the purpose and context of the scenario.",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type associated with this scenario.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of tags for categorizing and filtering the scenario.",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility rules defining which company groups can access this scenario.",
            "nullable": true
          },
          "callbackTemplateId": {
            "type": "integer",
            "description": "Identifier of the callback template used for the phone interaction.",
            "format": "int32"
          },
          "emailTemplateId": {
            "type": "integer",
            "description": "Identifier of the email template sent to prompt the callback.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new callback phishing scenario."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Callback.CallbackScenarioUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Updated display name of the callback scenario.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Updated description explaining the purpose and context of the scenario.",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type associated with this scenario.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Updated list of tags for categorizing and filtering the scenario.",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Updated visibility rules defining which company groups can access this scenario.",
            "nullable": true
          },
          "callbackTemplateId": {
            "type": "integer",
            "description": "Identifier of the callback template used for the phone interaction.",
            "format": "int32"
          },
          "emailTemplateId": {
            "type": "integer",
            "description": "Identifier of the email template sent to prompt the callback.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing callback phishing scenario."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Community.AppointCommunityOwnerRequest": {
        "type": "object",
        "properties": {
          "appointedCompanyResourceId": {
            "type": "string",
            "description": "Resource identifier of the company to be appointed as the new owner.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for transferring community ownership to another company."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Community.CommunityMembershipSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "One-based page number for pagination.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name used for sorting results.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, sorts results in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching and paginating community membership records."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Community.CommunitySearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "One-based page number for pagination.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name used for sorting results.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, sorts results in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching and paginating communities."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Community.CreateCommunityRequest": {
        "required": [
          "description",
          "industryResourceId",
          "name",
          "privacyStatusId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 5,
            "type": "string",
            "description": "Display name of the community (5-64 characters)."
          },
          "description": {
            "maxLength": 300,
            "minLength": 5,
            "type": "string",
            "description": "Brief description of the community's purpose (5-300 characters)."
          },
          "industryResourceId": {
            "minLength": 1,
            "type": "string",
            "description": "Resource identifier of the industry category for the community."
          },
          "privacyStatusId": {
            "type": "integer",
            "description": "Privacy status identifier (e.g., public or private). Allowed values: 1 = Public | 2 = Private | 3 = Hidden",
            "format": "int32"
          },
          "isTermsAndConditionsAccepted": {
            "type": "boolean",
            "description": "Indicates whether the user has accepted the terms and conditions."
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new community."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Community.InviteToCommunityRequest": {
        "type": "object",
        "properties": {
          "emailArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Email addresses of the users to invite.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for inviting users to a community via email."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Community.RemoveCommunityMemberRequest": {
        "type": "object",
        "properties": {
          "removedCompanyResourceId": {
            "type": "string",
            "description": "Resource identifier of the company to be removed from the community.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for removing a member from a community."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Community.UpdateCommunityRequest": {
        "required": [
          "description",
          "industryResourceId",
          "name",
          "privacyStatusId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 5,
            "type": "string",
            "description": "Updated display name of the community (5-64 characters)."
          },
          "description": {
            "maxLength": 300,
            "minLength": 5,
            "type": "string",
            "description": "Updated description of the community's purpose (5-300 characters)."
          },
          "industryResourceId": {
            "minLength": 1,
            "type": "string",
            "description": "Resource identifier of the updated industry category."
          },
          "privacyStatusId": {
            "type": "integer",
            "description": "Updated privacy status identifier (e.g., public or private). Allowed values: 1 = Public | 2 = Private | 3 = Hidden",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing community's details."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.CreateCommunityPostCommentRequest": {
        "type": "object",
        "properties": {
          "comment": {
            "type": "string",
            "description": "Text content of the comment.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a comment to a community post."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.CreateCommunityPostRequest": {
        "required": [
          "categoryResourceIdArray",
          "description",
          "title"
        ],
        "type": "object",
        "properties": {
          "communityResourceId": {
            "type": "string",
            "description": "Resource identifier of the community to post in.",
            "nullable": true
          },
          "emailPreview": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.EmailPreview"
          },
          "title": {
            "maxLength": 64,
            "minLength": 4,
            "type": "string",
            "description": "Title of the community post (4-64 characters)."
          },
          "description": {
            "maxLength": 300,
            "minLength": 5,
            "type": "string",
            "description": "Detailed description of the threat or topic (5-300 characters)."
          },
          "categoryResourceIdArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the categories this post belongs to."
          },
          "discoveryAndDetection": {
            "type": "string",
            "description": "Details on how the threat was discovered and detected.",
            "nullable": true
          },
          "affectArea": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Areas affected by the reported threat.",
            "nullable": true
          },
          "scope": {
            "type": "string",
            "description": "Scope or reach of the reported threat.",
            "nullable": true
          },
          "isAnonymous": {
            "type": "boolean",
            "description": "When true, the post is published without revealing the author's identity."
          },
          "isTermsAndConditionsAccepted": {
            "type": "boolean",
            "description": "Indicates whether the user has accepted the terms and conditions."
          },
          "securityLabelResourceIdArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of security classification labels applied to the post.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new community post with threat sharing details."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.EmailAttachment": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of the attachment.",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "Original file name of the attachment.",
            "nullable": true
          },
          "sha512": {
            "type": "string",
            "description": "SHA-512 hash of the attachment content.",
            "nullable": true
          },
          "md5": {
            "type": "string",
            "description": "MD5 hash of the attachment content.",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "description": "MIME content type of the attachment.",
            "nullable": true
          },
          "isHidden": {
            "type": "boolean",
            "description": "When true, this attachment is hidden from the community."
          },
          "isFlagged": {
            "type": "boolean",
            "description": "When true, this attachment is flagged as suspicious."
          }
        },
        "additionalProperties": false,
        "description": "Represents a file attachment from a reported email."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.EmailPreview": {
        "type": "object",
        "properties": {
          "initialBody": {
            "type": "string",
            "description": "Original unmodified email body content.",
            "nullable": true
          },
          "editableBody": {
            "type": "string",
            "description": "User-editable version of the email body (may contain redactions).",
            "nullable": true
          },
          "visibleBody": {
            "type": "string",
            "description": "Sanitized email body displayed to community viewers.",
            "nullable": true
          },
          "from": {
            "type": "string",
            "description": "Sender address of the reported email.",
            "nullable": true
          },
          "isFromHidden": {
            "type": "boolean",
            "description": "When true, the sender address is hidden from the community."
          },
          "isFromFlagged": {
            "type": "boolean",
            "description": "When true, the sender address is flagged as suspicious."
          },
          "subject": {
            "type": "string",
            "description": "Subject line of the reported email.",
            "nullable": true
          },
          "isSubjectHidden": {
            "type": "boolean",
            "description": "When true, the subject line is hidden from the community."
          },
          "isSubjectFlagged": {
            "type": "boolean",
            "description": "When true, the subject line is flagged as suspicious."
          },
          "to": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Recipient addresses of the reported email.",
            "nullable": true
          },
          "isToHidden": {
            "type": "boolean",
            "description": "When true, the recipient addresses are hidden from the community."
          },
          "isToFlagged": {
            "type": "boolean",
            "description": "When true, the recipient addresses are flagged as suspicious."
          },
          "cc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "CC recipient addresses of the reported email.",
            "nullable": true
          },
          "isCcHidden": {
            "type": "boolean",
            "description": "When true, the CC addresses are hidden from the community."
          },
          "isCcFlagged": {
            "type": "boolean",
            "description": "When true, the CC addresses are flagged as suspicious."
          },
          "bcc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "BCC recipient addresses of the reported email.",
            "nullable": true
          },
          "isBccHidden": {
            "type": "boolean",
            "description": "When true, the BCC addresses are hidden from the community."
          },
          "isBccFlagged": {
            "type": "boolean",
            "description": "When true, the BCC addresses are flagged as suspicious."
          },
          "sentTime": {
            "type": "string",
            "description": "Timestamp when the reported email was originally sent.",
            "format": "date-time"
          },
          "urls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.EmailUrl"
            },
            "description": "URLs extracted from the email body.",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.EmailAttachment"
            },
            "description": "File attachments included in the reported email.",
            "nullable": true
          },
          "emailTexts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.EmailText"
            },
            "description": "Text fragments extracted from the email for analysis.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a preview of a reported email including header fields, body content, and embedded artifacts."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.EmailText": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "The extracted text content.",
            "nullable": true
          },
          "isHidden": {
            "type": "boolean",
            "description": "When true, this text fragment is hidden from the community."
          },
          "isFlagged": {
            "type": "boolean",
            "description": "When true, this text fragment is flagged as suspicious."
          }
        },
        "additionalProperties": false,
        "description": "Represents a text fragment extracted from a reported email for analysis."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.EmailUrl": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The extracted URL value.",
            "nullable": true
          },
          "isHidden": {
            "type": "boolean",
            "description": "When true, this URL is hidden from the community."
          },
          "isFlagged": {
            "type": "boolean",
            "description": "When true, this URL is flagged as suspicious."
          },
          "name": {
            "type": "string",
            "description": "Display name or anchor text associated with the URL.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a URL extracted from a reported email."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.ParseEmailUrlRequest": {
        "type": "object",
        "properties": {
          "htmlBody": {
            "type": "string",
            "description": "HTML content of the email to parse for URLs.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to extract and parse URLs from an email HTML body."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SearchCommunityPostRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of results per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order."
          },
          "postedCompanyResourceId": {
            "type": "string",
            "description": "Resource identifier of the company that posted.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request for searching and paginating community posts."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.SharePostRequest": {
        "type": "object",
        "properties": {
          "emailArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Email addresses of the recipients to share the post with.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to share a community post with specified email recipients."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostCommentRequest": {
        "type": "object",
        "properties": {
          "comment": {
            "type": "string",
            "description": "Updated comment text.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to update an existing comment on a community post."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostEmail": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of the email.",
            "nullable": true
          },
          "editableBody": {
            "type": "string",
            "description": "Editable version of the email body with annotations.",
            "nullable": true
          },
          "visibleBody": {
            "type": "string",
            "description": "Sanitized email body displayed to viewers.",
            "nullable": true
          },
          "isFromHidden": {
            "type": "boolean",
            "description": "Whether the sender (From) field is hidden."
          },
          "isFromFlagged": {
            "type": "boolean",
            "description": "Whether the sender (From) field is flagged as suspicious."
          },
          "isSubjectHidden": {
            "type": "boolean",
            "description": "Whether the subject field is hidden."
          },
          "isSubjectFlagged": {
            "type": "boolean",
            "description": "Whether the subject field is flagged as suspicious."
          },
          "isToHidden": {
            "type": "boolean",
            "description": "Whether the recipient (To) field is hidden."
          },
          "isToFlagged": {
            "type": "boolean",
            "description": "Whether the recipient (To) field is flagged as suspicious."
          },
          "isCcHidden": {
            "type": "boolean",
            "description": "Whether the CC field is hidden."
          },
          "isCcFlagged": {
            "type": "boolean",
            "description": "Whether the CC field is flagged as suspicious."
          },
          "isBccHidden": {
            "type": "boolean",
            "description": "Whether the BCC field is hidden."
          },
          "isBccFlagged": {
            "type": "boolean",
            "description": "Whether the BCC field is flagged as suspicious."
          },
          "urls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostEmailUrl"
            },
            "description": "URLs found in the email with their visibility and flag settings.",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostEmailAttachment"
            },
            "description": "Attachments associated with the email.",
            "nullable": true
          },
          "emailTexts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostEmailText"
            },
            "description": "Text segments extracted from the email body.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Email content and visibility settings for a community post update."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostEmailAttachment": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of the attachment.",
            "nullable": true
          },
          "isHidden": {
            "type": "boolean",
            "description": "Whether this attachment is hidden from the post view."
          },
          "isFlagged": {
            "type": "boolean",
            "description": "Whether this attachment is flagged as suspicious."
          }
        },
        "additionalProperties": false,
        "description": "Attachment entry within a community post email, with visibility and flag options."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostEmailText": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Text content of the email segment.",
            "nullable": true
          },
          "isHidden": {
            "type": "boolean",
            "description": "Whether this text segment is hidden from the post view."
          },
          "isFlagged": {
            "type": "boolean",
            "description": "Whether this text segment is flagged as suspicious."
          }
        },
        "additionalProperties": false,
        "description": "Text segment within a community post email, with visibility and flag options."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostEmailUrl": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Display name or anchor text of the URL.",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "Full URL address.",
            "nullable": true
          },
          "isHidden": {
            "type": "boolean",
            "description": "Whether this URL is hidden from the post view."
          },
          "isFlagged": {
            "type": "boolean",
            "description": "Whether this URL is flagged as suspicious."
          }
        },
        "additionalProperties": false,
        "description": "URL entry within a community post email, with visibility and flag options."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostRequest": {
        "required": [
          "categoryResourceIdArray",
          "description",
          "title"
        ],
        "type": "object",
        "properties": {
          "communityPostEmail": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.CommunityPost.UpdateCommunityPostEmail"
          },
          "title": {
            "maxLength": 64,
            "minLength": 4,
            "type": "string",
            "description": "Title of the community post (4–64 characters)."
          },
          "description": {
            "maxLength": 300,
            "minLength": 5,
            "type": "string",
            "description": "Brief description of the community post (5–300 characters)."
          },
          "categoryResourceIdArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the categories assigned to this post."
          },
          "discoveryAndDetection": {
            "type": "string",
            "description": "Details about how the threat was discovered and detected.",
            "nullable": true
          },
          "affectArea": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Areas affected by the reported threat.",
            "nullable": true
          },
          "scope": {
            "type": "string",
            "description": "Scope or impact range of the reported threat.",
            "nullable": true
          },
          "isAnonymous": {
            "type": "boolean",
            "description": "Whether the post should be published anonymously."
          },
          "securityLabelResourceIdArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the security labels applied to this post.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to update an existing community post with its metadata and email details."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.AgenticAIMetadataResponse": {
        "type": "object",
        "properties": {
          "executionModes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.ExecutionModeMetadata"
            },
            "description": "Available execution modes with their display metadata.",
            "nullable": true
          },
          "behavioralPolicies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.BehavioralPolicyMetadata"
            },
            "description": "Available behavioral policies with their display metadata and child items.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response containing metadata definitions for agentic AI execution modes and behavioral policies."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.AgenticAISettingsResponse": {
        "type": "object",
        "properties": {
          "executionMode": {
            "type": "string",
            "description": "Current execution mode of the agentic AI (e.g., autonomous, supervised).",
            "nullable": true
          },
          "behavioralPolicies": {
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            },
            "description": "Dictionary of behavioral policy keys mapped to their enabled/disabled state.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response containing the current agentic AI settings for a company."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.BehavioralPolicyMetadata": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Unique identifier key for this behavioral policy.",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "Human-readable display title for the policy.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Detailed description explaining the purpose of this behavioral policy.",
            "nullable": true
          },
          "order": {
            "type": "integer",
            "description": "Display order for sorting in the UI.",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.PolicyItemMetadata"
            },
            "description": "Child policy items belonging to this behavioral policy category.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Metadata describing a behavioral policy category with its child policy items."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.ExecutionModeMetadata": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Unique identifier key for this execution mode.",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "Human-readable display title for the execution mode.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Detailed description explaining the behavior of this execution mode.",
            "nullable": true
          },
          "order": {
            "type": "integer",
            "description": "Display order for sorting in the UI.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Metadata describing a single agentic AI execution mode option."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.PolicyItemMetadata": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Unique identifier key for this policy item.",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "Human-readable display title for the policy item.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Detailed description of what this policy item controls.",
            "nullable": true
          },
          "order": {
            "type": "integer",
            "description": "Display order for sorting within the parent policy.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Metadata describing a single policy item within a behavioral policy category."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.AgenticAI.UpdateAgenticAISettingsRequest": {
        "type": "object",
        "properties": {
          "executionMode": {
            "type": "string",
            "description": "Execution mode controlling how the agentic AI operates (e.g., autonomous, supervised).",
            "nullable": true
          },
          "behavioralPolicies": {
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            },
            "description": "Dictionary of behavioral policy keys mapped to their enabled/disabled state.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating agentic AI settings for a company."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.CompaniesBulkDeleteRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of company resource identifiers to delete.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "Whether all companies matching the filter should be selected for deletion."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of company resource identifiers to exclude from deletion when SelectAll is true.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for bulk deleting multiple companies, with support for select-all and exclusion."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.CreateClientRequest": {
        "required": [
          "clientId",
          "clientSecret",
          "name",
          "statusId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the API client. Required. Maximum 64 characters."
          },
          "clientId": {
            "maxLength": 32,
            "minLength": 1,
            "type": "string",
            "description": "Unique client identifier used for API authentication. Required. Maximum 32 characters."
          },
          "clientSecret": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Client secret used for API authentication. Required. Maximum 100 characters."
          },
          "statusId": {
            "type": "integer",
            "description": "Status identifier for the API client (e.g., active, inactive). Required.",
            "format": "int32"
          },
          "hasIpAddressRestriction": {
            "type": "boolean",
            "description": "Whether access is restricted to specific IP addresses."
          },
          "allowedIpAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of IP addresses allowed to use this API client when IP restriction is enabled.",
            "nullable": true
          },
          "roleResourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of role resource identifiers assigned to this API client for authorization.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new API client credential for a company."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.GetCompaniesByGroupResourceIdsRequest": {
        "type": "object",
        "properties": {
          "companyGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of company group resource identifiers to retrieve companies for.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for retrieving companies that belong to the specified company groups."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.MigrateCompanyRegionRequest": {
        "type": "object",
        "properties": {
          "targetRegionCode": {
            "type": "string",
            "description": "Target Azure region code (e.g. \"canadacentral\", \"germanywestcentral\").\r\nMust match a key under appsettings:RegionalDatabases:{code}.",
            "nullable": true
          },
          "batchSize": {
            "type": "integer",
            "description": "Number of TargetUser rows the worker processes per batch.\r\nAllowed range: 100 - 10000. Defaults to 1000 if omitted.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for queueing a central -> regional TargetUser migration job.\r\nRoot-only. The companyResourceId is taken from the URL route, not the body."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.ReverseMigrateCompanyRegionRequest": {
        "type": "object",
        "properties": {
          "batchSize": {
            "type": "integer",
            "description": "Number of TargetUser rows the worker processes per batch.\r\nAllowed range: 100 - 10000. Defaults to 1000 if omitted.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for queueing a REVERSE (regional -> central) TargetUser migration job.\r\nRoot-only. The companyResourceId is taken from the URL route; the source region is read\r\nfrom the company's current RegionCode at the service layer. There is no TargetRegionCode —\r\nthe reverse target is always \"regionless\" (central)."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.Search.AvailableForSearchRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Optional name filter to search for companies or groups by name. Defaults to empty string (no filter).",
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "selectedCompanyGroup": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.AvailableFor.Search.SelectedCompanyGroupDto"
            },
            "description": "List of already-selected company groups to exclude from or highlight in the search results.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching companies and company groups available for entity sharing and visibility assignment."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.Search.CompanyExportRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order. False for descending."
          },
          "reportAllPages": {
            "type": "boolean",
            "description": "Whether to export all pages of data regardless of pagination settings."
          },
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportType"
          },
          "isTargetUserCountExceededLimit": {
            "type": "boolean",
            "description": "Whether the total target user count exceeds the display limit threshold."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for exporting company data with filtering, pagination, and export format options."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.Search.CompanySearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order. False for descending."
          },
          "isClustered": {
            "type": "boolean",
            "description": "Whether to return only clustered (multi-tenant) companies."
          },
          "isTargetUserCountExceededLimit": {
            "type": "boolean",
            "description": "Whether the total target user count exceeds the display limit threshold."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching companies with pagination, filtering, and sorting."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.Search.SearchClientRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order. False for descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching API clients with pagination, filtering, and sorting."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.SearchMyCompaniesRequest": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Free-text search term to filter companies by name or other attributes.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching companies accessible to the current user."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.SendTestTeamsActivityRequest": {
        "required": [
          "companyResourceId",
          "userEmail"
        ],
        "type": "object",
        "properties": {
          "companyResourceId": {
            "minLength": 1,
            "type": "string",
            "description": "Resource identifier of the company to send the test notification for. Required."
          },
          "userEmail": {
            "minLength": 1,
            "type": "string",
            "description": "Email address of the user who will receive the test Teams notification. Required. Must be a valid email address.",
            "format": "email"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for sending a test Microsoft Teams activity notification."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyAISettingsRequest": {
        "type": "object",
        "properties": {
          "psEmailTemplateGenerationAssistant": {
            "type": "boolean",
            "description": "Whether the AI assistant for generating phishing simulation email templates is enabled."
          },
          "landingPageTemplateGenerationAssistant": {
            "type": "boolean",
            "description": "Whether the AI assistant for generating phishing landing page templates is enabled."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for configuring AI-assisted content generation settings for a company."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyAgenticAISettingsRequest": {
        "type": "object",
        "properties": {
          "agenticAIEnabled": {
            "type": "boolean",
            "description": "Whether the agentic AI feature is enabled for the company."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for enabling or disabling agentic AI for a company."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.SetCompanyPrivacyRequest": {
        "type": "object",
        "properties": {
          "privacyDurationId": {
            "type": "integer",
            "description": "Identifier for the privacy data retention duration period.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for setting the data privacy retention duration for a company."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.UpdateClientRequest": {
        "required": [
          "clientId",
          "clientSecret",
          "name",
          "statusId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the API client. Required. Maximum 64 characters."
          },
          "clientId": {
            "maxLength": 32,
            "minLength": 1,
            "type": "string",
            "description": "Unique client identifier used for API authentication. Required. Maximum 32 characters."
          },
          "clientSecret": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Client secret used for API authentication. Required. Maximum 100 characters."
          },
          "statusId": {
            "type": "integer",
            "description": "Status identifier for the API client (e.g., active, inactive). Required.",
            "format": "int32"
          },
          "hasIpAddressRestriction": {
            "type": "boolean",
            "description": "Whether access is restricted to specific IP addresses."
          },
          "allowedIpAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of IP addresses allowed to use this API client when IP restriction is enabled.",
            "nullable": true
          },
          "roleResourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of role resource identifiers assigned to this API client for authorization.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing API client credential."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Company.UpdateRoiSettingsRequest": {
        "type": "object",
        "properties": {
          "baseManHourCost": {
            "type": "integer",
            "description": "Base cost per man-hour used in ROI calculations (in company currency).",
            "format": "int32"
          },
          "baseManHour": {
            "type": "integer",
            "description": "Base number of man-hours used as the baseline for ROI calculations.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating ROI (Return on Investment) calculation settings for a company."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.AddCompanyToCompanyGroupRequest": {
        "type": "object",
        "properties": {
          "companyResourceIdArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of company resourceIds will be added to the group",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.CompanyGroupsBulkDeleteRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the company groups to delete.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "Whether all matching groups should be selected for deletion."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of groups to exclude when KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.CompanyGroupsBulkDeleteRequest.SelectAll is true.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          }
        },
        "additionalProperties": false,
        "description": "Request to bulk-delete company groups, supporting select-all with exclusions."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.CreateCompanyGroupRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "A group name"
          },
          "companyResourceIdArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of company resourceIds will be added to the group",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.RemoveCompanyFromCompanyGroupRequest": {
        "type": "object",
        "properties": {
          "companyResourceIdArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of company resourceIds will be added to the group",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.GroupCompanySearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through companies within a company group."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.Search.SearchCompanyGroupRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "reportAllPages": {
            "type": "boolean",
            "description": "When true, all pages of data are returned regardless of pagination settings."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through company groups with optional full-data export."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CompanyGroup.UpdateCompanyGroupRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "A group name"
          },
          "companyResourceIdArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of company resourceIds will be added to the group",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.DistributedService.Rest.Models.CompanyIpRestriction.AddCompanyIpRestrictionRequest": {
        "type": "object",
        "properties": {
          "ipRanges": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of IP addresses or CIDR ranges to allow. Examples: [\"192.168.1.100\", \"10.0.0.0/8\"]",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for adding IP restriction rules to a company."
      },
      "KeepnetLabs.DistributedService.Rest.Models.CompanyIpRestriction.CompanyIpRestrictionResponse": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "ipRange": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response payload representing a company IP restriction rule."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Dashboard.GetReportedEmailTrendsRequest": {
        "type": "object",
        "properties": {
          "StartDate": {
            "type": "string",
            "description": "Start date of the reporting period (inclusive).",
            "format": "date-time"
          },
          "EndDate": {
            "type": "string",
            "description": "End date of the reporting period (inclusive).",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Request to retrieve reported email trend data within a date range."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Dashboard.SummaryDataResponse": {
        "type": "object",
        "properties": {
          "topReporters": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          },
          "reportedEmailTrends": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          },
          "dashboardSummary": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          },
          "dashboardTopRules": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          },
          "runningInvestigations": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          },
          "dashboardWidgetsOrdering": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          },
          "recentPhishingCampaigns": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          },
          "mostPhishedUsers": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          },
          "topPhishingSimulationReporters": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          },
          "mostEngagedCampaigns": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          },
          "phishingCampaignTrends": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          }
        },
        "additionalProperties": false,
        "description": "Aggregated dashboard response containing data for all summary widgets."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DashboardWidgetsOrdering.CreateDashboardWidgetsOrderingRequest": {
        "type": "object",
        "properties": {
          "settings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Dashboard.Dto.DashboardSetting"
            },
            "description": "Ordered list of dashboard widget settings defining position and visibility.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to create or update the ordering of dashboard widgets."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DataResponse": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Response data payload containing the requested resource or operation result.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Response status indicator (e.g., \"success\", \"failed\", \"input_error\").",
            "nullable": true
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the operation.",
            "nullable": true
          },
          "validationMessages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Collection of validation error messages when the request contains invalid input.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Extended API response that includes a data payload alongside status and validation information."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Diagnostic.AddInDisabledInformation": {
        "type": "object",
        "properties": {
          "thresholdTime": {
            "type": "string",
            "description": "Threshold time allowed before the add-in is considered slow.",
            "nullable": true
          },
          "timeTaken": {
            "type": "string",
            "description": "Actual time taken by the add-in during load.",
            "nullable": true
          },
          "disableReason": {
            "type": "string",
            "description": "Reason the add-in was disabled (e.g., crash, slow load).",
            "nullable": true
          },
          "lastDisabledTime": {
            "type": "string",
            "description": "Timestamp when the add-in was last disabled.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Details about the add-in being disabled by Outlook's resiliency mechanism."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Diagnostic.AddInInformation": {
        "type": "object",
        "properties": {
          "isAddInInstalled": {
            "type": "boolean",
            "description": "Whether the Keepnet add-in is installed."
          },
          "addInVersion": {
            "type": "string",
            "description": "Installed version of the add-in.",
            "nullable": true
          },
          "hklmLoadBehaviorValue": {
            "type": "string",
            "description": "HKLM registry LoadBehavior value for the add-in.",
            "nullable": true
          },
          "bootTime": {
            "type": "string",
            "description": "System boot time at which diagnostics were collected.",
            "nullable": true
          },
          "outlookVersion": {
            "type": "string",
            "description": "Installed Outlook version.",
            "nullable": true
          },
          "outlookArchitecture": {
            "type": "string",
            "description": "Outlook architecture (x86 or x64).",
            "nullable": true
          },
          "isOutlookRunning": {
            "type": "boolean",
            "description": "Whether Outlook is currently running."
          },
          "outlookLastStartupTime": {
            "type": "string",
            "description": "Timestamp of the last Outlook startup.",
            "nullable": true
          },
          "addInDisabledInformation": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Diagnostic.AddInDisabledInformation"
          }
        },
        "additionalProperties": false,
        "description": "Outlook add-in installation status and runtime details."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Diagnostic.DiagnosticRequest": {
        "type": "object",
        "properties": {
          "emails": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Email addresses configured on the client machine.",
            "nullable": true
          },
          "hostName": {
            "type": "string",
            "description": "Hostname of the client machine.",
            "nullable": true
          },
          "companyId": {
            "type": "string",
            "description": "Identifier of the company the client belongs to.",
            "nullable": true
          },
          "operatingSystemInformation": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Diagnostic.OperatingSystemInformation"
          },
          "addInInformation": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Diagnostic.AddInInformation"
          },
          "osAccounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Diagnostic.OsAccount"
            },
            "description": "Windows user accounts on the client machine.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request containing diagnostic information collected from a client machine."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Diagnostic.OperatingSystemInformation": {
        "type": "object",
        "properties": {
          "edition": {
            "type": "string",
            "description": "OS edition (e.g., Professional, Enterprise).",
            "nullable": true
          },
          "version": {
            "type": "string",
            "description": "OS version string.",
            "nullable": true
          },
          "buildNumber": {
            "type": "string",
            "description": "OS build number.",
            "nullable": true
          },
          "language": {
            "type": "string",
            "description": "OS display language.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Operating system edition, version, and locale details."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Diagnostic.OsAccount": {
        "type": "object",
        "properties": {
          "sId": {
            "type": "string",
            "description": "Security identifier (SID) of the Windows account.",
            "nullable": true
          },
          "loadBehaviorValue": {
            "type": "string",
            "description": "HKCU registry LoadBehavior value for this user account.",
            "nullable": true
          },
          "isAddInInDisabledItems": {
            "type": "boolean",
            "description": "Whether the add-in appears in Outlook's disabled items list for this account."
          },
          "logonName": {
            "type": "string",
            "description": "Windows logon name of the account.",
            "nullable": true
          },
          "emails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Diagnostic.OsAccountEmail"
            },
            "description": "Email accounts configured under this OS account.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Windows user account with add-in load behavior and email configuration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Diagnostic.OsAccountEmail": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the account.",
            "nullable": true
          },
          "emailServiceName": {
            "type": "string",
            "description": "Name of the email service provider (e.g., Exchange, IMAP).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Email account associated with a Windows user profile."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.CreateDirectEmailSettingRequest": {
        "required": [
          "allowedDomains",
          "name",
          "tenantId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the direct email setting configuration."
          },
          "tenantId": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Tenant identifier of the mail provider (e.g., Azure AD tenant ID)."
          },
          "allowedDomains": {
            "maxItems": 1000,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of allowed sender domains for this direct email configuration."
          },
          "type": {
            "type": "integer",
            "description": "Provider type identifier (e.g., Office 365, Google Workspace).",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new direct email delivery setting (e.g., Office 365 or Google Workspace)."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.GetDomainListRequest": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Resource identifier of the direct email setting to query domains for.",
            "nullable": true
          },
          "tenantId": {
            "type": "string",
            "description": "Tenant identifier of the mail provider.",
            "nullable": true
          },
          "type": {
            "type": "integer",
            "description": "Provider type identifier (e.g., Office 365, Google Workspace).",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for retrieving the list of available sender domains from a mail provider."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.SearchDirectEmailSettingRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records returned per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column or field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating direct email delivery settings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.TestDirectEmailSettingRequest": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Resource identifier of the existing direct email setting to test, if applicable.",
            "nullable": true
          },
          "from": {
            "type": "string",
            "description": "Sender email address for the test message.",
            "nullable": true
          },
          "fromName": {
            "type": "string",
            "description": "Display name of the sender for the test message.",
            "nullable": true
          },
          "to": {
            "type": "string",
            "description": "Recipient email address for the test message.",
            "nullable": true
          },
          "message": {
            "type": "string",
            "description": "Body content of the test email message.",
            "nullable": true
          },
          "tenantId": {
            "type": "string",
            "description": "Tenant identifier of the mail provider used for the test.",
            "nullable": true
          },
          "type": {
            "type": "integer",
            "description": "Provider type identifier (e.g., Office 365, Google Workspace).",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for testing a direct email delivery setting by sending a test message."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DirectEmailSetting.UpdateDirectEmailSettingRequest": {
        "required": [
          "allowedDomains",
          "name",
          "tenantId",
          "type"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the direct email setting configuration."
          },
          "tenantId": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Tenant identifier of the mail provider (e.g., Azure AD tenant ID)."
          },
          "allowedDomains": {
            "maxItems": 1000,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of allowed sender domains for this direct email configuration."
          },
          "type": {
            "type": "integer",
            "description": "Provider type identifier (e.g., Office 365, Google Workspace).",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing direct email delivery setting."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DnsService.CreateDnsServiceProviderRequest": {
        "required": [
          "dnsServiceProviderName",
          "dnsServiceProviderTypeId",
          "password",
          "username"
        ],
        "type": "object",
        "properties": {
          "dnsServiceProviderTypeId": {
            "type": "integer",
            "description": "Type identifier of the DNS service provider (e.g., Cloudflare, AWS Route 53).",
            "format": "int32"
          },
          "dnsServiceProviderName": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the DNS service provider (max 64 characters)."
          },
          "username": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Authentication username or API key for the provider."
          },
          "password": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Authentication password or API secret for the provider."
          },
          "recordTypeId": {
            "type": "integer",
            "description": "DNS record type identifier (e.g., A, CNAME, MX).",
            "format": "int32",
            "nullable": true
          },
          "dnsRecord": {
            "maxLength": 200,
            "type": "string",
            "description": "DNS record value (max 200 characters).",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Entities (companies/departments) that can use this provider.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to create a new DNS service provider configuration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DnsService.DnServiceProviderSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of results per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order."
          }
        },
        "additionalProperties": false,
        "description": "Request for searching and paginating DNS service providers."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DnsService.TestDnsServiceProviderRequest": {
        "required": [
          "dnsServiceProviderTypeId",
          "password",
          "username"
        ],
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Resource identifier of an existing provider to test, if applicable.",
            "nullable": true
          },
          "dnsServiceProviderTypeId": {
            "type": "integer",
            "description": "Type identifier of the DNS service provider to test.",
            "format": "int32"
          },
          "username": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Authentication username or API key for the connectivity test."
          },
          "password": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Authentication password or API secret for the connectivity test."
          }
        },
        "additionalProperties": false,
        "description": "Request to test connectivity to a DNS service provider."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DnsService.UpdateDnsServiceProviderRequest": {
        "required": [
          "dnsServiceProviderName",
          "dnsServiceProviderTypeId",
          "password",
          "username"
        ],
        "type": "object",
        "properties": {
          "dnsServiceProviderTypeId": {
            "type": "integer",
            "description": "Type identifier of the DNS service provider.",
            "format": "int32"
          },
          "dnsServiceProviderName": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the DNS service provider (max 64 characters)."
          },
          "username": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Authentication username or API key for the provider."
          },
          "password": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Authentication password or API secret for the provider."
          },
          "recordTypeId": {
            "type": "integer",
            "description": "DNS record type identifier (e.g., A, CNAME, MX).",
            "format": "int32",
            "nullable": true
          },
          "dnsRecord": {
            "maxLength": 200,
            "type": "string",
            "description": "DNS record value (max 200 characters).",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Entities (companies/departments) that can use this provider.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to update an existing DNS service provider configuration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+CreateDomainRecordRequest": {
        "required": [
          "dnsRecord",
          "dnsServiceProviderId",
          "domain",
          "proxyStatusId",
          "recordTypeId"
        ],
        "type": "object",
        "properties": {
          "domain": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Domain name (max 200 characters)."
          },
          "recordTypeId": {
            "type": "integer",
            "description": "DNS record type identifier (e.g., A, CNAME). Allowed values: 1 = CNAME (CNAME) | 2 = A (A)",
            "format": "int32"
          },
          "dnsServiceProviderId": {
            "type": "integer",
            "description": "Identifier of the DNS service provider managing this domain.",
            "format": "int32"
          },
          "dnsRecord": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "DNS record value (max 200 characters)."
          },
          "proxyStatusId": {
            "type": "integer",
            "description": "Proxy status identifier controlling CDN/proxy behavior. Allowed values: 1 = Proxied (Proxied) | 2 = DnsOnly (DNS Only)",
            "format": "int32"
          },
          "urlSchemaTypeId": {
            "type": "integer",
            "description": "URL scheme type identifier (HTTP or HTTPS). Allowed values: 1 = Http (Http) | 2 = Https (Https) | 3 = Both (Both)",
            "format": "int32",
            "nullable": true
          },
          "zoneId": {
            "maxLength": 200,
            "type": "string",
            "description": "DNS zone identifier for the domain (max 200 characters).",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether this domain record is active."
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Entities (companies/departments) that can use this domain record.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to create a new domain record for phishing simulation."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+DomainRecordSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of results per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order."
          }
        },
        "additionalProperties": false,
        "description": "Request for searching and paginating domain records."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DomainRecord.DomainRecordRequest+UpdateDomainRecordRequest": {
        "required": [
          "dnsRecord",
          "dnsServiceProviderId",
          "domain",
          "proxyStatusId",
          "recordTypeId"
        ],
        "type": "object",
        "properties": {
          "domain": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Domain name (max 200 characters)."
          },
          "recordTypeId": {
            "type": "integer",
            "description": "DNS record type identifier (e.g., A, CNAME). Allowed values: 1 = CNAME (CNAME) | 2 = A (A)",
            "format": "int32"
          },
          "dnsServiceProviderId": {
            "type": "integer",
            "description": "Identifier of the DNS service provider managing this domain.",
            "format": "int32"
          },
          "dnsRecord": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "DNS record value (max 200 characters)."
          },
          "proxyStatusId": {
            "type": "integer",
            "description": "Proxy status identifier controlling CDN/proxy behavior. Allowed values: 1 = Proxied (Proxied) | 2 = DnsOnly (DNS Only)",
            "format": "int32"
          },
          "urlSchemaTypeId": {
            "type": "integer",
            "description": "URL scheme type identifier (HTTP or HTTPS). Allowed values: 1 = Http (Http) | 2 = Https (Https) | 3 = Both (Both)",
            "format": "int32",
            "nullable": true
          },
          "zoneId": {
            "maxLength": 200,
            "type": "string",
            "description": "DNS zone identifier for the domain (max 200 characters).",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether this domain record is active."
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Entities (companies/departments) that can use this domain record.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to update an existing domain record."
      },
      "KeepnetLabs.DistributedService.Rest.Models.DomainRecord.TestDomainRecordRequest": {
        "required": [
          "dnsServiceProviderId"
        ],
        "type": "object",
        "properties": {
          "dnsServiceProviderId": {
            "type": "integer",
            "description": "Identifier of the DNS service provider to use for the test.",
            "format": "int32"
          },
          "zoneId": {
            "maxLength": 200,
            "type": "string",
            "description": "DNS zone identifier to test against (max 200 characters).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to test DNS resolution for a domain record via its service provider."
      },
      "KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.CheckAvailabilityRequest": {
        "required": [
          "emailTemplateName"
        ],
        "type": "object",
        "properties": {
          "emailTemplateName": {
            "minLength": 1,
            "type": "string",
            "description": "Email template name to check for uniqueness."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for checking whether an email template name is already in use."
      },
      "KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.CreateEmailTemplateRequest": {
        "required": [
          "emailDeliverySettingType",
          "emailTemplateCategoryResourceId",
          "fromAddress",
          "fromName",
          "name",
          "subject",
          "template"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the email template."
          },
          "emailDeliverySettingType": {
            "type": "integer",
            "description": "Email delivery method type (e.g., SMTP or direct email provider).",
            "format": "int32"
          },
          "smtpSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the SMTP setting used for delivery, if applicable.",
            "nullable": true
          },
          "directEmailSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the direct email setting used for delivery, if applicable.",
            "nullable": true
          },
          "emailTemplateCategoryResourceId": {
            "minLength": 1,
            "type": "string",
            "description": "Resource identifier of the email template category."
          },
          "fromName": {
            "maxLength": 40,
            "minLength": 1,
            "type": "string",
            "description": "Sender display name shown in the email header."
          },
          "fromAddress": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Sender email address used in the From field."
          },
          "ccAddresses": {
            "maxItems": 1000,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of CC (carbon copy) email addresses.",
            "nullable": true
          },
          "subject": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Email subject line."
          },
          "template": {
            "maxLength": 10485760,
            "minLength": 1,
            "type": "string",
            "description": "HTML or plain-text body content of the email template."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of tag labels for categorizing and searching templates.",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility and sharing rules that control which entities can access this template.",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type for localization.",
            "nullable": true
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "description": "Optional merge tag fallbacks for the parent language version.",
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.EmailTemplateLanguageRequest"
            },
            "description": "Localized language variants of the email template.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new email notification template."
      },
      "KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.EmailTemplateLanguageRequest": {
        "required": [
          "fromAddress",
          "fromName",
          "languageTypeResourceId",
          "subject",
          "template"
        ],
        "type": "object",
        "properties": {
          "detailActionType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.PhishingDetailActionTypeEnum+PhishingDetailActionType"
          },
          "resourceId": {
            "type": "string",
            "description": "Resource identifier of this language variant, used for updates.",
            "nullable": true
          },
          "languageTypeResourceId": {
            "minLength": 1,
            "type": "string",
            "description": "Resource identifier of the language type for this variant."
          },
          "subject": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Email subject line for this language variant."
          },
          "fromName": {
            "maxLength": 40,
            "minLength": 1,
            "type": "string",
            "description": "Sender display name for this language variant."
          },
          "fromAddress": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Sender email address for this language variant."
          },
          "template": {
            "maxLength": 10485760,
            "minLength": 1,
            "type": "string",
            "description": "HTML or plain-text body content for this language variant."
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "description": "Optional merge tag fallbacks for this language variant.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for a localized language variant of an email template."
      },
      "KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.Search.EmailTemplateSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records returned per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column or field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating email notification templates."
      },
      "KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.TranslateEmailTemplateWithAIRequest": {
        "required": [
          "languages",
          "subject",
          "template"
        ],
        "type": "object",
        "properties": {
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.OpenAI.Dto.TranslationLanguageDto"
            },
            "description": "Target languages the template should be translated into."
          },
          "subject": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Email subject line to translate."
          },
          "template": {
            "minLength": 1,
            "type": "string",
            "description": "HTML or plain-text body content of the template to translate."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for translating an email template into multiple languages using AI."
      },
      "KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.UpdateEmailTemplateRequest": {
        "required": [
          "emailDeliverySettingType",
          "emailTemplateCategoryResourceId",
          "fromAddress",
          "fromName",
          "name",
          "subject",
          "template"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the email template."
          },
          "emailDeliverySettingType": {
            "type": "integer",
            "description": "Email delivery method type (e.g., SMTP or direct email provider).",
            "format": "int32"
          },
          "smtpSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the SMTP setting used for delivery, if applicable.",
            "nullable": true
          },
          "directEmailSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the direct email setting used for delivery, if applicable.",
            "nullable": true
          },
          "emailTemplateCategoryResourceId": {
            "minLength": 1,
            "type": "string",
            "description": "Resource identifier of the email template category."
          },
          "fromName": {
            "maxLength": 40,
            "minLength": 1,
            "type": "string",
            "description": "Sender display name shown in the email header."
          },
          "fromAddress": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Sender email address used in the From field."
          },
          "ccAddresses": {
            "maxItems": 1000,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of CC (carbon copy) email addresses.",
            "nullable": true
          },
          "subject": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Email subject line."
          },
          "template": {
            "maxLength": 10485760,
            "minLength": 1,
            "type": "string",
            "description": "HTML or plain-text body content of the email template."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of tag labels for categorizing and searching templates.",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility and sharing rules that control which entities can access this template.",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type for localization.",
            "nullable": true
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "description": "Optional merge tag fallbacks for the parent language version.",
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.EmailTemplate.EmailTemplateLanguageRequest"
            },
            "description": "Localized language variants of the email template.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing email notification template."
      },
      "KeepnetLabs.DistributedService.Rest.Models.ExcludedIP.CreatePhishingCampaignExcludedIPRequest": {
        "type": "object",
        "properties": {
          "excludedIPs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "IP addresses to exclude from phishing campaign tracking.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to add IP addresses to the phishing campaign exclusion list."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Export.ExportMultiFilterRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "filterSummary": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of results per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order."
          },
          "reportAllPages": {
            "type": "boolean",
            "description": "Whether to export all pages instead of just the current page."
          },
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportType"
          }
        },
        "additionalProperties": false,
        "description": "Request to export data with separate detail and summary filters."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Export.ExportRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of results per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order."
          },
          "reportAllPages": {
            "type": "boolean",
            "description": "Whether to export all pages instead of just the current page."
          },
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportType"
          },
          "phishingTypeId": {
            "type": "integer",
            "description": "Phishing type identifier to scope the export (e.g., email, SMS, voice).",
            "format": "int32"
          },
          "tempalateType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Enum.QuishingTemplateTypeEnum"
          },
          "templateTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Template type filters for multi-type exports.",
            "nullable": true
          },
          "activityType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.PhishingCampaignJobUserActivityType"
          }
        },
        "additionalProperties": false,
        "description": "Request to export filtered data with phishing-specific parameters."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Export.ExportType": {
        "type": "string",
        "description": "Supported file formats for data export operations."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Export.TargetGroupUsersExportRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Indicates whether the sort order is ascending."
          },
          "reportAllPages": {
            "type": "boolean",
            "description": "When true, exports all pages regardless of pagination settings."
          },
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportType"
          },
          "excludeGroupUsers": {
            "type": "boolean",
            "description": "When true, exports users not in the group instead of group members."
          }
        },
        "additionalProperties": false,
        "description": "Request model for exporting target group users to a file."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Feedback.SendFeedbackRequest": {
        "required": [
          "text"
        ],
        "type": "object",
        "properties": {
          "text": {
            "maxLength": 1000,
            "minLength": 1,
            "type": "string",
            "description": "Feedback message content."
          }
        },
        "additionalProperties": false,
        "description": "Request model for submitting user feedback."
      },
      "KeepnetLabs.DistributedService.Rest.Models.File.CompressHtmlRequest": {
        "type": "object",
        "properties": {
          "htmlContent": {
            "type": "string",
            "description": "Raw HTML content string to compress.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for compressing raw HTML content."
      },
      "KeepnetLabs.DistributedService.Rest.Models.File.DeleteFilesRequest": {
        "type": "object",
        "properties": {
          "resourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of resource identifiers for the files to delete.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for deleting one or more files by their resource identifiers."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Filter.Filter": {
        "type": "object",
        "properties": {
          "searchInputTextValue": {
            "type": "string",
            "description": "Free-text search input, sanitized against SQL injection.",
            "nullable": true
          },
          "condition": {
            "type": "string",
            "description": "Logical operator combining filter groups (e.g., AND, OR).",
            "nullable": true
          },
          "filterGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.FilterGroup"
            },
            "description": "Collection of filter groups that compose this filter.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Root filter model containing free-text search and grouped filter conditions."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Filter.FilterGroup": {
        "type": "object",
        "properties": {
          "condition": {
            "type": "string",
            "description": "Logical operator combining items within this group (e.g., AND, OR).",
            "nullable": true
          },
          "filterItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.FilterItem"
            },
            "description": "Individual filter items in this group.",
            "nullable": true
          },
          "filterGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.FilterGroup"
            },
            "description": "Nested filter sub-groups for complex expressions.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A group of filter items and nested sub-groups joined by a logical operator."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Filter.FilterItem": {
        "type": "object",
        "properties": {
          "fieldName": {
            "type": "string",
            "description": "Name of the field to filter on.",
            "nullable": true
          },
          "operator": {
            "type": "string",
            "description": "Comparison operator. Use the canonical values from\r\n`KeepnetLabs.ApplicationService.SearchBuilder.SearchConstants.OperatorType`:\r\n\"=\", \"!=\", \"<\", \"<=\", \">\", \">=\", \"Contains\", \"Include\".\r\nComparison is case-sensitive — non-canonical forms (e.g. \"eq\", \"contains\")\r\nare NOT recognized and will be silently dropped by the search builder\r\nand rejected by the sovereignty regional-query planner.",
            "nullable": true
          },
          "value": {
            "type": "string",
            "description": "Value to compare the field against.",
            "nullable": true
          },
          "customFieldName": {
            "type": "string",
            "description": "Optional custom field name for user-defined fields.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A single filter condition comparing a field against a value using an operator."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.AnalysisEngineSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records to return per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching analysis engine integrations with filtering and pagination."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.ApiCredential": {
        "type": "object",
        "properties": {
          "apiKey": {
            "type": "string",
            "description": "API key for token-based authentication.",
            "nullable": true
          },
          "userName": {
            "type": "string",
            "description": "Username for basic authentication.",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "Password for basic authentication.",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of this credential entry.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "API credential set used to authenticate with an analysis engine."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.CreateAnalysisEngineRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "analysisEngineTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the analysis engine type (e.g., VirusTotal, VMRay).",
            "nullable": true
          },
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the analysis engine integration."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Optional description of the analysis engine integration.",
            "nullable": true
          },
          "apiUrl": {
            "type": "string",
            "description": "Base URL of the analysis engine API endpoint.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Tags associated with this analysis engine for categorization.",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether this analysis engine integration is currently active."
          },
          "isSendUrl": {
            "type": "boolean",
            "description": "Whether to send URLs to the analysis engine for scanning."
          },
          "isSendIp": {
            "type": "boolean",
            "description": "Whether to send IP addresses to the analysis engine for reputation checks."
          },
          "isHideUrlParameter": {
            "type": "boolean",
            "description": "Whether to strip query parameters from URLs before sending to the engine."
          },
          "isSendFileHash": {
            "type": "boolean",
            "description": "Whether to send file hashes to the analysis engine for lookup."
          },
          "isUploadExecutableFile": {
            "type": "boolean",
            "description": "Whether to upload executable files to the analysis engine for sandboxing."
          },
          "isUploadOtherFileType": {
            "type": "boolean",
            "description": "Whether to upload non-executable file types to the analysis engine."
          },
          "proxyResourceId": {
            "type": "string",
            "description": "Resource identifier of the proxy configuration to use for API calls.",
            "nullable": true
          },
          "uploadFileTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of file type extensions allowed for upload to the analysis engine.",
            "nullable": true
          },
          "apiCredentials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.ApiCredential"
            },
            "description": "API credentials used to authenticate with the analysis engine.",
            "nullable": true
          },
          "isCachingEnabled": {
            "type": "boolean",
            "description": "Whether response caching is enabled for this analysis engine."
          },
          "cacheDuration": {
            "type": "integer",
            "description": "Duration in minutes for which analysis results are cached.",
            "format": "int32"
          },
          "cacheQueryCount": {
            "type": "integer",
            "description": "Maximum number of cached queries to retain.",
            "format": "int32"
          },
          "detectionThreshold": {
            "type": "integer",
            "description": "Minimum detection threshold percentage to classify a result as malicious.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new analysis engine integration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.TestAnalysisEngineRequest": {
        "type": "object",
        "properties": {
          "apiUrl": {
            "type": "string",
            "description": "API endpoint URL to test connectivity against.",
            "nullable": true
          },
          "apiCredential": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.ApiCredential"
          },
          "proxyResourceId": {
            "type": "string",
            "description": "Resource identifier of the proxy configuration to use for the test.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for testing connectivity to an analysis engine API."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.UpdateAnalysisEngineRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of the analysis engine to update.",
            "nullable": true
          },
          "analysisEngineTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the analysis engine type (e.g., VirusTotal, VMRay).",
            "nullable": true
          },
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the analysis engine integration."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Optional description of the analysis engine integration.",
            "nullable": true
          },
          "apiUrl": {
            "type": "string",
            "description": "Base URL of the analysis engine API endpoint.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Tags associated with this analysis engine for categorization.",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether this analysis engine integration is currently active."
          },
          "isSendUrl": {
            "type": "boolean",
            "description": "Whether to send URLs to the analysis engine for scanning."
          },
          "isSendIp": {
            "type": "boolean",
            "description": "Whether to send IP addresses to the analysis engine for reputation checks."
          },
          "isHideUrlParameter": {
            "type": "boolean",
            "description": "Whether to strip query parameters from URLs before sending to the engine."
          },
          "isSendFileHash": {
            "type": "boolean",
            "description": "Whether to send file hashes to the analysis engine for lookup."
          },
          "isUploadExecutableFile": {
            "type": "boolean",
            "description": "Whether to upload executable files to the analysis engine for sandboxing."
          },
          "isUploadOtherFileType": {
            "type": "boolean",
            "description": "Whether to upload non-executable file types to the analysis engine."
          },
          "proxyResourceId": {
            "type": "string",
            "description": "Resource identifier of the proxy configuration to use for API calls.",
            "nullable": true
          },
          "uploadFileTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of file type extensions allowed for upload to the analysis engine.",
            "nullable": true
          },
          "apiCredentials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.ApiCredential"
            },
            "description": "API credentials used to authenticate with the analysis engine.",
            "nullable": true
          },
          "isCachingEnabled": {
            "type": "boolean",
            "description": "Whether response caching is enabled for this analysis engine."
          },
          "cacheDuration": {
            "type": "integer",
            "description": "Duration in minutes for which analysis results are cached.",
            "format": "int32"
          },
          "cacheQueryCount": {
            "type": "integer",
            "description": "Maximum number of cached queries to retain.",
            "format": "int32"
          },
          "detectionThreshold": {
            "type": "integer",
            "description": "Minimum detection threshold percentage to classify a result as malicious.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing analysis engine integration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.AnalysisEngine.UpdateAnalysisExclusionsRequest": {
        "type": "object",
        "properties": {
          "exclusionItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.AnalysisEngine.Dto.AnalysisExclusionItemDto"
            },
            "description": "Collection of exclusion items defining domains, IPs, or hashes to skip during analysis.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating the list of exclusion rules for analysis engines."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Heartbeat.HeartbeatRequest": {
        "required": [
          "addInVersion",
          "email",
          "hostName"
        ],
        "type": "object",
        "properties": {
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "Email address of the user running the phishing reporter add-in."
          },
          "hostName": {
            "minLength": 1,
            "type": "string",
            "description": "Hostname of the workstation where the add-in is installed."
          },
          "addInVersion": {
            "minLength": 1,
            "type": "string",
            "description": "Version string of the installed phishing reporter add-in."
          },
          "osVersion": {
            "type": "string",
            "description": "Operating system version of the workstation.",
            "nullable": true
          },
          "osLanguage": {
            "type": "string",
            "description": "Language setting of the operating system.",
            "nullable": true
          },
          "outlookVersion": {
            "type": "string",
            "description": "Microsoft Outlook version installed on the workstation.",
            "nullable": true
          },
          "osAccountSid": {
            "type": "string",
            "description": "Security Identifier (SID) of the OS account running the add-in.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for a phishing reporter add-in heartbeat check-in."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationDeleteActionRequest": {
        "type": "object",
        "properties": {
          "isPermanentDelete": {
            "type": "boolean",
            "description": "Whether to permanently delete the emails instead of moving to trash."
          },
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of investigation result resource identifiers to perform the action on.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "Whether to select all investigation results matching the filter."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers to exclude from the action when SelectAll is true.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a delete investigation action that removes emails from mailboxes."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationDeleteAndNotifyActionRequest": {
        "type": "object",
        "properties": {
          "warningMessage": {
            "type": "string",
            "description": "Warning message to send to the affected mailbox owners after email deletion.",
            "nullable": true
          },
          "isPermanentDelete": {
            "type": "boolean",
            "description": "Whether to permanently delete the emails instead of moving to trash."
          },
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of investigation result resource identifiers to perform the action on.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "Whether to select all investigation results matching the filter."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers to exclude from the action when SelectAll is true.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a delete-and-notify investigation action that removes emails and warns recipients."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationRequest": {
        "required": [
          "autoAction",
          "duration",
          "endDate",
          "investigationType",
          "name",
          "scanTypes",
          "startDate",
          "targetUserType"
        ],
        "type": "object",
        "properties": {
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationHeader"
            },
            "description": "Email header filters to match during the investigation scan.",
            "nullable": true
          },
          "bodies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationBody"
            },
            "description": "Email body filters to match during the investigation scan.",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationAttachment"
            },
            "description": "Attachment filters to match during the investigation scan.",
            "nullable": true
          },
          "logicalOperator": {
            "type": "integer",
            "description": "Logical operator (AND/OR) applied between header, body, and attachment filter groups.",
            "format": "int32"
          },
          "name": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the investigation."
          },
          "duration": {
            "type": "integer",
            "description": "Duration in hours for the investigation to run.",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "description": "Start date of the email date range to scan.",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "description": "End date of the email date range to scan.",
            "format": "date-time"
          },
          "targetUserType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.TargetUserType"
          },
          "targetUsers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of specific target user or group resource identifiers.",
            "nullable": true
          },
          "isScanEnterpriseVault": {
            "type": "boolean",
            "description": "Whether to include Enterprise Vault archived emails in the scan."
          },
          "scanTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.ScanConfiguration"
            },
            "description": "Scan type configurations (e.g., O365, Exchange, GSuite) for this investigation."
          },
          "investigationType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationType"
          },
          "autoAction": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.InvestigationAutoAction"
          },
          "scannedUsersCount": {
            "type": "integer",
            "description": "Number of users whose mailboxes have been scanned so far.",
            "format": "int32"
          },
          "completedUsersCount": {
            "type": "integer",
            "description": "Number of users whose mailbox scans have completed.",
            "format": "int32"
          },
          "progress": {
            "type": "integer",
            "description": "Overall scan progress percentage (0-100).",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new email investigation with search filters and scan configurations."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationResultRequest": {
        "type": "object",
        "properties": {
          "investigationId": {
            "type": "string",
            "description": "Resource identifier of the parent investigation.",
            "nullable": true
          },
          "investigationScanTypeId": {
            "type": "string",
            "description": "Resource identifier of the scan type used.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address of the mailbox where the match was found.",
            "nullable": true
          },
          "mailId": {
            "type": "string",
            "description": "Unique identifier of the matched email in the mail provider.",
            "nullable": true
          },
          "folderName": {
            "type": "string",
            "description": "Name of the folder where the matched email resides.",
            "nullable": true
          },
          "folderType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.FolderType"
          },
          "senderIp": {
            "type": "string",
            "description": "IP address of the email sender extracted from headers.",
            "nullable": true
          },
          "from": {
            "type": "string",
            "description": "Email address of the sender.",
            "nullable": true
          },
          "senderName": {
            "type": "string",
            "description": "Display name of the sender.",
            "nullable": true
          },
          "recipients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.EmailRecipient"
            },
            "description": "List of email recipients (To, CC, BCC).",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "description": "Subject line of the matched email.",
            "nullable": true
          },
          "attachmentCount": {
            "type": "integer",
            "description": "Number of attachments in the matched email.",
            "format": "int32"
          },
          "receivedTime": {
            "type": "string",
            "description": "Date and time when the matched email was received.",
            "format": "date-time"
          },
          "investigationFilterTagList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationFilterTag"
            },
            "description": "Tags indicating which investigation filters matched this email.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating an individual investigation result for a matched email."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationUserRequest": {
        "type": "object",
        "properties": {
          "investigationId": {
            "type": "string",
            "description": "Resource identifier of the parent investigation.",
            "nullable": true
          },
          "investigationScanTypeId": {
            "type": "string",
            "description": "Resource identifier of the scan type used for this user's investigation.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address of the mailbox being investigated.",
            "nullable": true
          },
          "totalMailCount": {
            "type": "integer",
            "description": "Total number of emails found in the user's mailbox.",
            "format": "int32"
          },
          "filteredMailCount": {
            "type": "integer",
            "description": "Number of emails that matched the investigation filters.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating an investigation user entry reported by the worker service."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.CreateInvestigationWarningActionRequest": {
        "type": "object",
        "properties": {
          "warningMessage": {
            "type": "string",
            "description": "Warning message to send to the affected mailbox owners.",
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of investigation result resource identifiers to perform the action on.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "Whether to select all investigation results matching the filter."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers to exclude from the action when SelectAll is true.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a warning investigation action that notifies mailbox owners."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.EmailRecipient": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the recipient.",
            "nullable": true
          },
          "recipientType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.RecipientType"
          }
        },
        "additionalProperties": false,
        "description": "Email recipient with their role type (To, CC, or BCC)."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.FinishUserInvestigationRequest": {
        "type": "object",
        "properties": {
          "investigationId": {
            "type": "string",
            "description": "Resource identifier of the parent investigation.",
            "nullable": true
          },
          "investigationScanTypeId": {
            "type": "string",
            "description": "Resource identifier of the scan type that finished.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address of the user whose scan is finished.",
            "nullable": true
          },
          "scanResultMessage": {
            "type": "string",
            "description": "Summary message describing the scan result.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for marking a user's investigation scan as finished."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.FolderType": {
        "type": "string",
        "description": "Mailbox folder type classification."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationActionItem": {
        "type": "object",
        "properties": {
          "investigationId": {
            "type": "string",
            "description": "Resource identifier of the investigation this action belongs to.",
            "nullable": true
          },
          "mailId": {
            "type": "string",
            "description": "Unique identifier of the email the action was performed on.",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationActionStatus"
          },
          "errorMsg": {
            "type": "string",
            "description": "Error message if the action completed with an error.",
            "nullable": true
          },
          "newEmailId": {
            "type": "string",
            "description": "New email identifier assigned after the action (e.g., after quarantine move).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Individual investigation action result reported back by the worker service."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationActionStatus": {
        "type": "string",
        "description": "Execution status of an investigation action on a specific email."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationAttachment": {
        "type": "object",
        "properties": {
          "size": {
            "type": "integer",
            "description": "Maximum attachment file size in bytes to filter by.",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "Attachment file name to filter by.",
            "nullable": true
          },
          "md5": {
            "type": "string",
            "description": "MD5 hash of the attachment to match.",
            "nullable": true
          },
          "sha512": {
            "type": "string",
            "description": "SHA-512 hash of the attachment to match.",
            "nullable": true
          },
          "extension": {
            "type": "string",
            "description": "File extension to filter by (e.g., \".exe\", \".pdf\").",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Email attachment filter criteria for an investigation scan."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationBody": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL to search for within the email body.",
            "nullable": true
          },
          "keyword": {
            "type": "string",
            "description": "Keyword to search for within the email body.",
            "nullable": true
          },
          "regex": {
            "type": "string",
            "description": "Regular expression pattern to match within the email body.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Email body filter criteria for an investigation scan."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationFilterTag": {
        "type": "string",
        "description": "Tags indicating which investigation filter criteria matched a specific email."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationHeader": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "description": "Sender IP address to filter by.",
            "nullable": true
          },
          "from": {
            "type": "string",
            "description": "Sender email address to filter by.",
            "nullable": true
          },
          "to": {
            "type": "string",
            "description": "Recipient (To) email address to filter by.",
            "nullable": true
          },
          "cc": {
            "type": "string",
            "description": "CC recipient email address to filter by.",
            "nullable": true
          },
          "bcc": {
            "type": "string",
            "description": "BCC recipient email address to filter by.",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "description": "Subject line text to filter by.",
            "nullable": true
          },
          "senderName": {
            "type": "string",
            "description": "Sender display name to filter by.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Email header filter criteria for an investigation scan."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records to return per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching investigations with filtering and pagination."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationType": {
        "type": "string",
        "description": "Investigation trigger type."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.RecipientType": {
        "type": "string",
        "description": "Email recipient role type."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.TargetUserType": {
        "type": "string",
        "description": "Target user selection strategy for investigations."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationActionStatusRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the mailbox where the action was performed.",
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.InvestigationActionItem"
            },
            "description": "List of investigation action results with their updated statuses.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating the status of investigation actions reported by worker services."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.UpdateInvestigationProgressRequest": {
        "type": "object",
        "properties": {
          "investigationId": {
            "type": "string",
            "description": "Resource identifier of the parent investigation.",
            "nullable": true
          },
          "investigationScanTypeId": {
            "type": "string",
            "description": "Resource identifier of the scan type being updated.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address of the user whose scan progress is being updated.",
            "nullable": true
          },
          "analyzedMailCount": {
            "type": "integer",
            "description": "Number of emails analyzed so far for this user.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating the scan progress of an investigation for a specific user."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.CreateGoogleWorkspaceMailProviderRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the mail provider."
          },
          "authJson": {
            "type": "string",
            "description": "Google service account credentials in JSON format.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Admin email address for domain-wide delegation.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a Google Workspace mail provider integration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.CreateO365MailProviderRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the mail provider."
          },
          "applicationId": {
            "type": "string",
            "description": "Azure AD application (client) identifier.",
            "nullable": true
          },
          "applicationSecret": {
            "type": "string",
            "description": "Azure AD application client secret.",
            "nullable": true
          },
          "directoryId": {
            "type": "string",
            "description": "Azure AD tenant (directory) identifier.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Service account email address for the mail provider.",
            "nullable": true
          },
          "allowedDomains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of email domains allowed for this provider.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating an Office 365 mail provider integration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.EwsMailProviderRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the EWS mail provider."
          },
          "serviceUrl": {
            "type": "string",
            "description": "EWS endpoint URL.",
            "nullable": true
          },
          "accountType": {
            "type": "integer",
            "description": "Type of service account (e.g., impersonation, delegation).",
            "format": "int32"
          },
          "exchangeVersionLookupResourceId": {
            "type": "string",
            "description": "Resource identifier of the Exchange version lookup entry.",
            "nullable": true
          },
          "userName": {
            "type": "string",
            "description": "Service account username for EWS authentication.",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "Service account password for EWS authentication.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Service account email address.",
            "nullable": true
          },
          "xAnchorMailBoxHeader": {
            "type": "boolean",
            "description": "Whether to include the X-AnchorMailbox header in EWS requests."
          },
          "targetGroupResourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of target user groups for mail operations.",
            "nullable": true
          },
          "isAllTargetGroupsSelected": {
            "type": "boolean",
            "description": "Indicates whether all target groups are selected."
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating or updating an Exchange Web Services (EWS) mail provider."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.ListRelatedDomainsForO365MailProviderRequest": {
        "type": "object",
        "properties": {
          "applicationId": {
            "type": "string",
            "description": "Azure AD application (client) identifier.",
            "nullable": true
          },
          "applicationSecret": {
            "type": "string",
            "description": "Azure AD application client secret.",
            "nullable": true
          },
          "directoryId": {
            "type": "string",
            "description": "Azure AD tenant (directory) identifier.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address associated with the tenant.",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of the mail provider.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for listing related domains from an Office 365 tenant."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.MailProviderSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort in ascending order."
          }
        },
        "additionalProperties": false,
        "description": "Paginated search request for mail providers."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiEwsMailProviderRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "EWS service account username.",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "EWS service account password.",
            "nullable": true
          },
          "serviceUrl": {
            "type": "string",
            "description": "EWS endpoint URL.",
            "nullable": true
          },
          "accountType": {
            "type": "integer",
            "description": "Type of service account.",
            "format": "int32"
          },
          "email": {
            "type": "string",
            "description": "Email address to test connectivity with.",
            "nullable": true
          },
          "xAnchorMailbox": {
            "type": "boolean",
            "description": "Whether to include the X-AnchorMailbox header."
          },
          "exchangeVersion": {
            "type": "string",
            "description": "Exchange server version string.",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of the mail provider to test.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for testing connectivity to an EWS mail provider."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.TestApiO365MailProviderRequest": {
        "type": "object",
        "properties": {
          "applicationId": {
            "type": "string",
            "description": "Azure AD application (client) identifier.",
            "nullable": true
          },
          "applicationSecret": {
            "type": "string",
            "description": "Azure AD application client secret.",
            "nullable": true
          },
          "directoryId": {
            "type": "string",
            "description": "Azure AD tenant (directory) identifier.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address to test connectivity with.",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of the mail provider to test.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for testing connectivity to an Office 365 mail provider."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.UpdateGoogleWorkspaceMailProviderRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the mail provider."
          },
          "authJson": {
            "type": "string",
            "description": "Google service account credentials in JSON format.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Admin email address for domain-wide delegation.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing Google Workspace mail provider integration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.MailProvider.UpdateO365MailProviderRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the mail provider."
          },
          "applicationId": {
            "type": "string",
            "description": "Azure AD application (client) identifier.",
            "nullable": true
          },
          "applicationSecret": {
            "type": "string",
            "description": "Azure AD application client secret.",
            "nullable": true
          },
          "directoryId": {
            "type": "string",
            "description": "Azure AD tenant (directory) identifier.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Service account email address for the mail provider.",
            "nullable": true
          },
          "allowedDomains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of email domains allowed for this provider.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing Office 365 mail provider integration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.BulkUpdateNotifiedEmailRequest": {
        "type": "object",
        "properties": {
          "resourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of resource identifiers of notified emails to update.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailStatus"
          },
          "tag": {
            "type": "string",
            "description": "Tag label to apply to all selected emails.",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Analyst note to apply to all selected emails.",
            "nullable": true
          },
          "isNotifyUser": {
            "type": "boolean",
            "description": "Whether to notify the original reporters about the resolution."
          },
          "customMessage": {
            "type": "string",
            "description": "Custom message to include in the notifications.",
            "nullable": true
          },
          "selectAll": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailSelectAllRequest"
          },
          "notificationTemplateResourceId": {
            "type": "string",
            "description": "Resource identifier of the notification email template to use.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for bulk-updating the classification and status of multiple notified emails."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.DownloadAttachmentZipRequest": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of the notified email whose attachments to download.",
            "nullable": true
          },
          "zipPassword": {
            "type": "string",
            "description": "Password to protect the generated ZIP archive for safe handling.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for downloading notified email attachments as a password-protected ZIP archive."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.DownloadMsgZipRequest": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of the notified email whose .msg file to download.",
            "nullable": true
          },
          "zipPassword": {
            "type": "string",
            "description": "Password to protect the generated ZIP archive for safe handling.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for downloading a notified email's .msg file as a password-protected ZIP archive."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records to return per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order."
          },
          "clusteredBy": {
            "type": "string",
            "description": "Field name to cluster (group) notified emails by (e.g., subject, sender).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching notified (reported) emails with filtering and pagination."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailResult": {
        "type": "string",
        "description": "Classification result of a notified email after analysis."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailSelectAllRequest": {
        "type": "object",
        "properties": {
          "excludedResourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers to exclude from the select-all operation.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.SearchNotifiedEmailClusterRequest"
          },
          "clusteredBy": {
            "type": "string",
            "description": "Field name used for clustering the notified email results.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Configuration for select-all operations across paginated notified email results."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailStatus": {
        "type": "string",
        "description": "Workflow status of a notified email in the incident response pipeline."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.SearchNotifiedEmailClusterRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records to return per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching notified email clusters with filtering and pagination."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.UpdateNotifiedEmailRequest": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailResult"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifiedEmail.NotifiedEmailStatus"
          },
          "tag": {
            "type": "string",
            "description": "Tag label to apply to the notified email for categorization.",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Analyst note or comment about the notified email.",
            "nullable": true
          },
          "isNotifyUser": {
            "type": "boolean",
            "description": "Whether to send a notification to the original reporter about the resolution."
          },
          "customMessage": {
            "type": "string",
            "description": "Custom message to include in the notification sent to the reporter.",
            "nullable": true
          },
          "notificationTemplateResourceId": {
            "type": "string",
            "description": "Resource identifier of the notification email template to use.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating the classification and status of a single notified email."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedHashRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Original file name of the attachment.",
            "nullable": true
          },
          "md5": {
            "type": "string",
            "description": "MD5 hash of the attachment file.",
            "nullable": true
          },
          "sha256": {
            "type": "string",
            "description": "SHA-256 hash of the attachment file.",
            "nullable": true
          },
          "sha512": {
            "type": "string",
            "description": "SHA-512 hash of the attachment file.",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "description": "MIME content type of the attachment (e.g., \"application/pdf\").",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload containing file hash information for a reported email attachment."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedIndicatorResultRequest": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of the notified email indicator.",
            "nullable": true
          },
          "scanType": {
            "type": "integer",
            "description": "Type of scan to retrieve results for (e.g., URL scan, hash scan).",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for retrieving analysis indicator results for a reported email."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.NotifyEmail.NotifiedUrlRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Display name or label for the URL indicator.",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "Full URL extracted from the reported email body or headers.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload containing a URL extracted from a reported email for analysis."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.GeneratedApplicationHistorySearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records to return per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching generated application history with filtering and pagination."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.PhishingReporterAddinDialogBoxSetting": {
        "type": "object",
        "properties": {
          "languageResourceId": {
            "type": "string",
            "description": "Resource identifier of the language for this dialog box setting.",
            "nullable": true
          },
          "msgBoxTitle": {
            "type": "string",
            "description": "Title text displayed in the message box dialog.",
            "nullable": true
          },
          "msgBoxBtnYesText": {
            "type": "string",
            "description": "Text for the \"Yes\" button in the message box.",
            "nullable": true
          },
          "msgBoxBtnNoText": {
            "type": "string",
            "description": "Text for the \"No\" button in the message box.",
            "nullable": true
          },
          "msgBoxBtnCancelText": {
            "type": "string",
            "description": "Text for the \"Cancel\" button in the message box.",
            "nullable": true
          },
          "msgBoxBtnOkText": {
            "type": "string",
            "description": "Text for the \"OK\" button in the message box.",
            "nullable": true
          },
          "analysisThankYouMessage": {
            "type": "string",
            "description": "Thank-you message displayed after successful analysis submission.",
            "nullable": true
          },
          "noInternetConnectionMessage": {
            "type": "string",
            "description": "Error message displayed when no internet connection is available.",
            "nullable": true
          },
          "emailSendingErrorMessage": {
            "type": "string",
            "description": "Error message displayed when email sending fails.",
            "nullable": true
          },
          "emailSelectionErrorMessage": {
            "type": "string",
            "description": "Error message displayed when email selection is invalid.",
            "nullable": true
          },
          "badFormatEmailMessage": {
            "type": "string",
            "description": "Error message displayed when the email format is invalid.",
            "nullable": true
          },
          "isConfirmationBeforeAnalysis": {
            "type": "boolean",
            "description": "Whether to show a confirmation dialog before starting analysis."
          },
          "analysisConfirmationMessage": {
            "type": "string",
            "description": "Confirmation message displayed before starting analysis.",
            "nullable": true
          },
          "isDeleteEmailBeforeAnalysis": {
            "type": "boolean",
            "description": "Whether to delete the email before starting analysis."
          },
          "isDeleteWithoutConfirmation": {
            "type": "boolean",
            "description": "Whether to delete the email without showing a confirmation dialog."
          },
          "analysisEmailDeleteMessage": {
            "type": "string",
            "description": "Message displayed when the email is deleted during analysis.",
            "nullable": true
          },
          "isSendSimulationMails": {
            "type": "boolean",
            "description": "Whether to send simulation phishing emails for testing."
          },
          "simulationMailMessage": {
            "type": "string",
            "description": "Message displayed when the reported email is identified as a simulation.",
            "nullable": true
          },
          "isDefault": {
            "type": "boolean",
            "description": "Whether this is the default language configuration for the add-in."
          },
          "addInName": {
            "maxLength": 125,
            "type": "string",
            "description": "Localized add-in display name for the Office manifest (max 125 chars).",
            "nullable": true
          },
          "brandName": {
            "maxLength": 125,
            "type": "string",
            "description": "Localized brand name for the Office manifest (max 125 chars).",
            "nullable": true
          },
          "description": {
            "maxLength": 250,
            "type": "string",
            "description": "Localized add-in description for the Office manifest (max 250 chars).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Localized dialog box configuration for the phishing reporter add-in UI."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.PhishingReporterUserBulkDeleteRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of resource identifiers of phishing reporter users to delete.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "Whether to select all users matching the filter for deletion."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers to exclude from deletion when SelectAll is true.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for bulk-deleting phishing reporter users by resource identifiers."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.PhishingReporter.PhishingReporterUserSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records to return per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching phishing reporter users with filtering and pagination."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.CreatePlaybookRequest": {
        "required": [
          "condition",
          "name",
          "priority"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Playbook display name."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Brief description of the playbook's purpose.",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookPriority"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Searchable tags associated with the playbook.",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether the playbook is currently active and will trigger on matching conditions."
          },
          "condition": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookCondition"
          },
          "playbookAction": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookAction"
          },
          "playbookActionStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionStatus"
          },
          "playbookActionAnalyzers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionAnalyzer"
            },
            "description": "Threat analysis engine integrations to run as part of this playbook.",
            "nullable": true
          },
          "playbookActionInvestigations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionInvestigation"
            },
            "description": "Investigation actions to execute when the playbook triggers.",
            "nullable": true
          },
          "playbookActionNotifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionNotification"
            },
            "description": "Notification actions to send when the playbook triggers.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new incident response playbook."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookAction": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of this action.",
            "nullable": true
          },
          "playbookId": {
            "type": "integer",
            "description": "Associated playbook identifier.",
            "format": "int32"
          },
          "markType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookMarkType"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Tags to apply to the incident.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Defines the marking and tagging action to apply to an incident."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionAnalyzer": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of this analyzer action.",
            "nullable": true
          },
          "integrationId": {
            "type": "string",
            "description": "Resource identifier of the analysis engine integration.",
            "nullable": true
          },
          "isCheckHash": {
            "type": "boolean",
            "description": "Whether to analyze file hashes with this engine."
          },
          "isCheckFile": {
            "type": "boolean",
            "description": "Whether to submit files for sandbox analysis."
          },
          "isCheckUrl": {
            "type": "boolean",
            "description": "Whether to analyze URLs found in the email."
          },
          "isCheckSenderIP": {
            "type": "boolean",
            "description": "Whether to check the sender's IP reputation."
          }
        },
        "additionalProperties": false,
        "description": "Configuration for a threat analysis engine integration within a playbook."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionInvestigation": {
        "required": [
          "durationType",
          "emailDateRangeType",
          "scanTypes",
          "targetUserType"
        ],
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of this investigation action.",
            "nullable": true
          },
          "isCreatedByAnalyzer": {
            "type": "boolean",
            "description": "Whether this investigation was automatically created by an analyzer result."
          },
          "scanTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.ScanConfiguration"
            },
            "description": "Types of scans to perform during the investigation."
          },
          "autoDetectFilters": {
            "type": "boolean",
            "description": "Whether to automatically detect investigation filters from the reported email."
          },
          "filters": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Manual filter values for narrowing the investigation scope.",
            "nullable": true
          },
          "emailDateRangeType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookInvestigationEmailDateRangeType"
          },
          "durationType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookInvestigationDurationType"
          },
          "targetUserType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Investigation.TargetUserType"
          },
          "targetUsers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Specific user identifiers whose mailboxes will be investigated.",
            "nullable": true
          },
          "actionType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookInvestigationActionType"
          },
          "actionNotifyTargetUserType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookInvestigationActionNotifyTargetUserType"
          },
          "actionNotifyTargetUsers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Specific user identifiers to notify about investigation results.",
            "nullable": true
          },
          "emailTemplateId": {
            "type": "integer",
            "description": "Identifier of the email template used for investigation notifications.",
            "format": "int32"
          },
          "autoAction": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.InvestigationAutoAction"
          }
        },
        "additionalProperties": false,
        "description": "Configuration for an investigation action within a playbook."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionNotification": {
        "required": [
          "targetUserType"
        ],
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of this notification action.",
            "nullable": true
          },
          "targetUserType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookNotifyTargetUserType"
          },
          "targetUsers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Specific user or group identifiers to notify.",
            "nullable": true
          },
          "emailTemplateId": {
            "type": "string",
            "description": "Resource identifier of the email template used for the notification.",
            "nullable": true
          },
          "analysisResultFilters": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Analysis result types that must be present to trigger this notification.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Configuration for a notification action within a playbook."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionStatus": {
        "type": "object",
        "properties": {
          "actionStatusType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionStatusType"
          }
        },
        "additionalProperties": false,
        "description": "Defines the status transition action for an incident."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionStatusType": {
        "type": "string"
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookCondition": {
        "type": "object",
        "properties": {
          "operator": {
            "type": "string",
            "description": "Logical operator combining condition groups (e.g., AND, OR).",
            "nullable": true
          },
          "conditionGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookConditionGroup"
            },
            "description": "Collection of condition groups evaluated by this condition.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Root condition tree that determines when a playbook triggers."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookConditionGroup": {
        "type": "object",
        "properties": {
          "operator": {
            "type": "string",
            "description": "Logical operator combining items within this group (e.g., AND, OR).",
            "nullable": true
          },
          "conditionItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookConditionItem"
            },
            "description": "Individual condition items in this group.",
            "nullable": true
          },
          "conditionGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookConditionGroup"
            },
            "description": "Nested condition sub-groups for complex expressions.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A group of condition items and nested sub-groups joined by a logical operator."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookConditionItem": {
        "type": "object",
        "properties": {
          "fieldName": {
            "type": "string",
            "description": "Name of the incident field to evaluate.",
            "nullable": true
          },
          "operator": {
            "type": "string",
            "description": "Comparison operator (e.g., eq, contains, gt).",
            "nullable": true
          },
          "format": {
            "type": "string",
            "description": "Expected format of the field value.",
            "nullable": true
          },
          "value": {
            "type": "string",
            "description": "Value to compare the field against.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A single condition comparing an incident field against a value."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookInvestigationActionNotifyTargetUserType": {
        "type": "string"
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookInvestigationActionType": {
        "type": "string"
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookInvestigationDurationType": {
        "type": "string"
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookInvestigationEmailDateRangeType": {
        "type": "string"
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookMarkType": {
        "type": "string"
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookNotifyTargetUserType": {
        "type": "string"
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookPriority": {
        "type": "string"
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort in ascending order."
          }
        },
        "additionalProperties": false,
        "description": "Paginated search request for playbooks."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.UpdatePlaybookRequest": {
        "required": [
          "condition",
          "name",
          "priority"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Playbook display name."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Brief description of the playbook's purpose.",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookPriority"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Searchable tags associated with the playbook.",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether the playbook is currently active and will trigger on matching conditions."
          },
          "condition": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookCondition"
          },
          "playbookAction": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookAction"
          },
          "playbookActionStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionStatus"
          },
          "playbookActionAnalyzers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionAnalyzer"
            },
            "description": "Threat analysis engine integrations to run as part of this playbook.",
            "nullable": true
          },
          "playbookActionInvestigations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionInvestigation"
            },
            "description": "Investigation actions to execute when the playbook triggers.",
            "nullable": true
          },
          "playbookActionNotifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.IncidentResponder.Playbook.PlaybookActionNotification"
            },
            "description": "Notification actions to send when the playbook triggers.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing incident response playbook."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISDashboardRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          }
        },
        "additionalProperties": false,
        "description": "Request model for the incident sharing dashboard overview."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISLogSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort in ascending order."
          }
        },
        "additionalProperties": false,
        "description": "Paginated search request for incident sharing logs."
      },
      "KeepnetLabs.DistributedService.Rest.Models.IncidentSharing.ISStatSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "filterSummary": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort in ascending order."
          }
        },
        "additionalProperties": false,
        "description": "Paginated search request for incident sharing statistics with a separate summary filter."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LDAP.ActiveDirectoryGroupSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 25.",
            "format": "int32"
          },
          "ldapSettingId": {
            "type": "string",
            "description": "Resource identifier of the LDAP connection setting to query groups from.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching Active Directory groups with pagination and filtering."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LDAP.ActiveDirectoryUserRequest": {
        "type": "object",
        "properties": {
          "fieldMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPMappingRequest"
            },
            "description": "List of field mappings between LDAP attributes and platform custom fields to apply during retrieval.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for retrieving Active Directory users with custom field mappings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LDAP.CreateLDAPSettingRequest": {
        "required": [
          "baseDN",
          "password",
          "username"
        ],
        "type": "object",
        "properties": {
          "username": {
            "minLength": 1,
            "type": "string",
            "description": "Bind username for LDAP authentication (e.g., \"CN=admin,DC=example,DC=com\"). Required."
          },
          "password": {
            "minLength": 1,
            "type": "string",
            "description": "Bind password for LDAP authentication. Required."
          },
          "baseDN": {
            "minLength": 1,
            "type": "string",
            "description": "Base Distinguished Name for the LDAP search scope (e.g., \"DC=example,DC=com\"). Required."
          },
          "relativeDN": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of Relative Distinguished Names to narrow the search scope within the Base DN.",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "LDAP server URL including protocol and port (e.g., \"ldaps://ldap.example.com:636\").",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether this LDAP connection is active and enabled for synchronization."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new LDAP/Active Directory connection setting."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPConfigCreate": {
        "required": [
          "groupFilterValues",
          "ldapSettingResourceId",
          "selectAll",
          "transactionId"
        ],
        "type": "object",
        "properties": {
          "ldapSettingResourceId": {
            "minLength": 1,
            "type": "string",
            "description": "Resource identifier of the LDAP connection setting to use. Required."
          },
          "transactionId": {
            "minLength": 1,
            "type": "string",
            "description": "Transaction identifier for tracking the import operation. Required."
          },
          "importType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.LDAPConfigEnum+ImportType"
          },
          "targetGroupResourceId": {
            "type": "string",
            "description": "Resource identifier of the target group to assign imported users to.",
            "nullable": true
          },
          "groupFilterValues": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of Active Directory group filter values to scope the user import. Required."
          },
          "selectedUserResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of individually selected user resource identifiers for import.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "isSchedule": {
            "type": "boolean",
            "description": "Whether this configuration is for a scheduled (recurring) synchronization."
          },
          "selectAll": {
            "type": "boolean",
            "description": "Whether all users matching the filter should be selected for import. Required."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of user resource identifiers to exclude from the import when SelectAll is true.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new LDAP synchronization configuration to import users from Active Directory."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPConfigUpdateRequest": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "description": "Transaction identifier for tracking the LDAP configuration update operation.",
            "nullable": true
          },
          "groupFilterValues": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of Active Directory group filter values to scope the user import.",
            "nullable": true
          },
          "selectedUserResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of individually selected user resource identifiers for import.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "isSchedule": {
            "type": "boolean",
            "description": "Whether this configuration is for a scheduled (recurring) synchronization."
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.LDAPConfigEnum+Status"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing LDAP synchronization configuration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPMappingRequest": {
        "type": "object",
        "properties": {
          "customFieldResourceId": {
            "type": "string",
            "description": "Resource identifier of the platform custom field to map the LDAP attribute to.",
            "nullable": true
          },
          "ldapFieldResourceId": {
            "type": "string",
            "description": "Resource identifier of the LDAP attribute to map from.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload representing a single field mapping between an LDAP attribute and a platform custom field."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingCreateMapping": {
        "required": [
          "groupFilterValues",
          "ldapSettingId",
          "selectAll"
        ],
        "type": "object",
        "properties": {
          "ldapSettingId": {
            "minLength": 1,
            "type": "string",
            "description": "Resource identifier of the LDAP setting to create mappings for. Required."
          },
          "groupFilterValues": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of Active Directory group filter values to scope the mapping. Required."
          },
          "selectAll": {
            "type": "boolean",
            "description": "Whether all groups matching the filter should be selected. Required."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of group identifiers to exclude from the mapping when SelectAll is true.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating LDAP field mappings between Active Directory groups and the platform."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 25.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order. False for descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching LDAP settings with pagination, filtering, and sorting."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPSettingTestConnectionRequest": {
        "required": [
          "password",
          "url",
          "username"
        ],
        "type": "object",
        "properties": {
          "username": {
            "minLength": 1,
            "type": "string",
            "description": "Bind username for LDAP authentication (e.g., \"CN=admin,DC=example,DC=com\"). Required."
          },
          "password": {
            "minLength": 1,
            "type": "string",
            "description": "Bind password for LDAP authentication. Required."
          },
          "url": {
            "minLength": 1,
            "type": "string",
            "description": "LDAP server URL including protocol and port (e.g., \"ldaps://ldap.example.com:636\"). Required."
          },
          "baseDN": {
            "type": "string",
            "description": "Base Distinguished Name for the LDAP search scope (e.g., \"DC=example,DC=com\").",
            "nullable": true
          },
          "relativeDN": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of Relative Distinguished Names to narrow the search scope within the Base DN.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for testing the connection to an LDAP/Active Directory server."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LDAP.UpdateLDAPSettingRequest": {
        "required": [
          "password",
          "url",
          "username"
        ],
        "type": "object",
        "properties": {
          "username": {
            "minLength": 1,
            "type": "string",
            "description": "Bind username for LDAP authentication (e.g., \"CN=admin,DC=example,DC=com\"). Required."
          },
          "password": {
            "minLength": 1,
            "type": "string",
            "description": "Bind password for LDAP authentication. Required."
          },
          "url": {
            "minLength": 1,
            "type": "string",
            "description": "LDAP server URL including protocol and port (e.g., \"ldaps://ldap.example.com:636\"). Required."
          },
          "baseDN": {
            "type": "string",
            "description": "Base Distinguished Name for the LDAP search scope (e.g., \"DC=example,DC=com\").",
            "nullable": true
          },
          "relativeDN": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of Relative Distinguished Names to narrow the search scope within the Base DN.",
            "nullable": true
          },
          "fieldMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LDAP.LDAPMappingRequest"
            },
            "description": "List of field mappings between LDAP attributes and platform user custom fields.",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether this LDAP connection is active and enabled for synchronization."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing LDAP/Active Directory connection setting."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.CreateLandingPageTemplateRequest": {
        "required": [
          "difficultyTypeId",
          "domainRecordId",
          "extensionTypeId",
          "methodTypeId",
          "name",
          "parameterTypeId",
          "pathTypeId",
          "subDomain",
          "urlSchemaTypeId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Template display name."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Brief description of the landing page template.",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "description": "Data capture method type (e.g., credential harvest, file download).",
            "format": "int32"
          },
          "difficultyTypeId": {
            "type": "integer",
            "description": "Difficulty level identifier for the landing page.",
            "format": "int32"
          },
          "urlSchemaTypeId": {
            "type": "integer",
            "description": "URL scheme type identifier (e.g., HTTP, HTTPS).",
            "format": "int32"
          },
          "subDomain": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Subdomain prefix for the phishing URL."
          },
          "domainRecordId": {
            "type": "integer",
            "description": "Identifier of the domain record used for the phishing URL.",
            "format": "int32"
          },
          "autoRotate": {
            "type": "boolean",
            "description": "When true, smishing target users are distributed across the domains configured in SmishingAutoRotate:Domains.\r\nEmail and quishing keep using DomainRecordId."
          },
          "pathTypeId": {
            "type": "integer",
            "description": "URL path type identifier.",
            "format": "int32"
          },
          "extensionTypeId": {
            "type": "integer",
            "description": "File extension type identifier for the phishing URL.",
            "format": "int32"
          },
          "parameterTypeId": {
            "type": "integer",
            "description": "URL parameter type identifier for tracking parameters.",
            "format": "int32"
          },
          "landingPages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageViewDto"
            },
            "description": "Ordered list of landing page views (multi-step pages).",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Searchable tags associated with the template.",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the template language.",
            "nullable": true
          },
          "isAssistedByAI": {
            "type": "boolean",
            "description": "Indicates whether the landing page content was generated with AI assistance."
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility rules controlling which companies or groups can use this template.",
            "nullable": true
          },
          "isInvisibleCaptchaEnabled": {
            "type": "boolean",
            "description": "Whether invisible CAPTCHA protection is enabled on the landing page."
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new phishing landing page template."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.GenerateLandingPageTemplateWithAIRequest": {
        "required": [
          "name",
          "prompt"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Name assigned to the generated landing page template."
          },
          "prompt": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string",
            "description": "AI prompt describing the desired landing page content and style."
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the target language for generated content.",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "description": "Identifier of the data capture method type for the landing page.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request model for generating a landing page template using AI."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageContentDto": {
        "required": [
          "content",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Name of the landing page view."
          },
          "content": {
            "minLength": 1,
            "type": "string",
            "description": "HTML content of the landing page view."
          },
          "order": {
            "type": "integer",
            "description": "Display order of the landing page view within the template.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Represents a single landing page view's content for translation."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageTemplateSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort in ascending order."
          }
        },
        "additionalProperties": false,
        "description": "Paginated search request for landing page templates."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageViewDto": {
        "required": [
          "content",
          "name",
          "order"
        ],
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of the landing page view.",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the landing page view."
          },
          "order": {
            "type": "integer",
            "description": "Display order of this view within the template sequence.",
            "format": "int32"
          },
          "content": {
            "minLength": 1,
            "type": "string",
            "description": "HTML content of the landing page view."
          },
          "prompt": {
            "type": "string",
            "description": "AI prompt used to generate this view's content.",
            "nullable": true
          },
          "parentId": {
            "type": "integer",
            "description": "Parent view identifier for language variants.",
            "format": "int32",
            "nullable": true
          },
          "languageType": {
            "type": "integer",
            "description": "Language type code for this view.",
            "format": "int32"
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type.",
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageViewDto"
            },
            "description": "Translated variants of this view in other languages.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single view (step) within a multi-page landing page template."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.TranslateLandingPageContentWithAIRequest": {
        "required": [
          "landingPages",
          "targetLanguages"
        ],
        "type": "object",
        "properties": {
          "landingPages": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageContentDto"
            },
            "description": "Landing page views to be translated."
          },
          "targetLanguages": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.TranslationLanguageRequest"
            },
            "description": "Target languages for the translation."
          }
        },
        "additionalProperties": false,
        "description": "Request model for translating landing page content into multiple languages using AI."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.TranslationLanguageRequest": {
        "required": [
          "languageResourceId"
        ],
        "type": "object",
        "properties": {
          "languageResourceId": {
            "minLength": 1,
            "type": "string",
            "description": "Resource identifier of the target language."
          }
        },
        "additionalProperties": false,
        "description": "Specifies a target language for content translation."
      },
      "KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.UpdateLandingPageTemplateRequest": {
        "required": [
          "difficultyTypeId",
          "domainRecordId",
          "extensionTypeId",
          "methodTypeId",
          "name",
          "parameterTypeId",
          "pathTypeId",
          "subDomain",
          "urlSchemaTypeId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Template display name."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Brief description of the landing page template.",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "description": "Data capture method type (e.g., credential harvest, file download).",
            "format": "int32"
          },
          "difficultyTypeId": {
            "type": "integer",
            "description": "Difficulty level identifier for the landing page.",
            "format": "int32"
          },
          "urlSchemaTypeId": {
            "type": "integer",
            "description": "URL scheme type identifier (e.g., HTTP, HTTPS).",
            "format": "int32"
          },
          "subDomain": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Subdomain prefix for the phishing URL."
          },
          "domainRecordId": {
            "type": "integer",
            "description": "Identifier of the domain record used for the phishing URL.",
            "format": "int32"
          },
          "autoRotate": {
            "type": "boolean",
            "description": "When true, smishing target users are distributed across the domains configured in SmishingAutoRotate:Domains.\r\nEmail and quishing keep using DomainRecordId."
          },
          "pathTypeId": {
            "type": "integer",
            "description": "URL path type identifier.",
            "format": "int32"
          },
          "extensionTypeId": {
            "type": "integer",
            "description": "File extension type identifier for the phishing URL.",
            "format": "int32"
          },
          "parameterTypeId": {
            "type": "integer",
            "description": "URL parameter type identifier for tracking parameters.",
            "format": "int32"
          },
          "landingPages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.LandingPageTemplate.LandingPageViewDto"
            },
            "description": "Ordered list of landing page views (multi-step pages).",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Searchable tags associated with the template.",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the template language.",
            "nullable": true
          },
          "isAssistedByAI": {
            "type": "boolean",
            "description": "Indicates whether the landing page content was generated with AI assistance."
          },
          "isInvisibleCaptchaEnabled": {
            "type": "boolean",
            "description": "Whether invisible CAPTCHA protection is enabled on the landing page."
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility rules controlling which companies or groups can use this template.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing phishing landing page template."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Lookup.LookupRequest": {
        "type": "object",
        "properties": {
          "typeName": {
            "type": "string",
            "description": "Name of the lookup type to query (e.g., language, category).",
            "nullable": true
          },
          "typeIdList": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Optional list of specific type identifiers to filter by.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for retrieving lookup values by type."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.PhishingCalculateScheduleInfoRequest": {
        "type": "object",
        "properties": {
          "scheduleTypeId": {
            "type": "integer",
            "description": "Schedule type identifier (e.g., immediate, scheduled).",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "description": "Date and time when the campaign is scheduled to start.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the scheduled date (e.g., \"Europe/Istanbul\").",
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "description": "Recurrence frequency value for recurring campaigns.",
            "format": "int32"
          },
          "phishingScenarioResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of phishing scenario resource identifiers used to calculate total schedule iterations.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for calculating schedule information for a phishing campaign, including recurrence dates."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.QuishingCalculateScheduleInfoRequest": {
        "type": "object",
        "properties": {
          "scheduleTypeId": {
            "type": "integer",
            "description": "Schedule type identifier (e.g., immediate, scheduled).",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "description": "Date and time when the campaign is scheduled to start.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the scheduled date (e.g., \"Europe/Istanbul\").",
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "description": "Recurrence frequency value for recurring campaigns.",
            "format": "int32"
          },
          "quishingScenarioResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of quishing scenario resource identifiers used to calculate total schedule iterations.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for calculating schedule information for a quishing campaign, including recurrence dates."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.SmishingCalculateScheduleInfoRequest": {
        "type": "object",
        "properties": {
          "scheduleTypeId": {
            "type": "integer",
            "description": "Schedule type identifier (e.g., immediate, scheduled).",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "description": "Date and time when the campaign is scheduled to start.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the scheduled date (e.g., \"Europe/Istanbul\").",
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "description": "Recurrence frequency value for recurring campaigns.",
            "format": "int32"
          },
          "smishingScenarioResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of smishing scenario resource identifiers used to calculate total schedule iterations.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for calculating schedule information for a smishing campaign, including recurrence dates."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreatePhishingCampaignRequest": {
        "required": [
          "name",
          "scheduleTypeId"
        ],
        "type": "object",
        "properties": {
          "phishingScenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingScenarioTrainingDTO"
            },
            "description": "List of phishing scenarios with their associated training assignments.",
            "nullable": true
          },
          "phishingScenarioResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of phishing scenario resource identifiers to include in the campaign.",
            "nullable": true
          },
          "smtpSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the SMTP setting used for sending campaign emails.",
            "nullable": true
          },
          "distributionEmailOver": {
            "type": "integer",
            "description": "Total number of emails distributed over the specified time period.",
            "format": "int32"
          },
          "distributionEmailOverTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the email-over distribution period. Allowed values: 1 = Minutes (minutes) | 2 = Hours (hours)",
            "format": "int32"
          },
          "emailDeliverySettingType": {
            "type": "integer",
            "description": "Email delivery setting type (e.g., SMTP relay, direct delivery, API). Allowed values: 0 = NotSet | 1 = SMTP | 2 = GoogleWorkspaceDirectEmail | 3 = Microsoft365DirectEmail",
            "format": "int32"
          },
          "directEmailSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the direct email delivery setting, if applicable.",
            "nullable": true
          },
          "useTargetUserTimeZone": {
            "type": "boolean",
            "description": "Whether to schedule email delivery based on each target user's local time zone."
          },
          "clickedUserGroupResourceId": {
            "type": "string",
            "description": "Resource identifier of the target group to assign users who clicked the phishing link.",
            "nullable": true
          },
          "trainingForCategory": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingScenarioTrainingBaseDTO"
          },
          "emailReplySettings": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignEmailReplyDTO"
          },
          "sendUserPreferredLanguage": {
            "type": "integer",
            "description": "Language preference for sending simulation emails. Defaults to manually selected language. Allowed values: 0 = SendInManually (Manually choose a language to send the scenario to all recipients.) | 1 = SendInTargetUserPreferredLanguage (Sent in each recipient's preferred language. If not set, it defaults to the company language ({0}).)",
            "format": "int32",
            "nullable": true
          },
          "barrelDelayMinutes": {
            "type": "integer",
            "description": "Delay in minutes between lure delivery completion and payload delivery for Double Barrel campaigns.",
            "format": "int32",
            "nullable": true
          },
          "barrelOrderType": {
            "type": "integer",
            "description": "Order type for Double Barrel campaigns: 1 = LureFirst, 2 = PayloadFirst.",
            "format": "int32",
            "nullable": true
          },
          "barrelSkipPayloadIfReported": {
            "type": "boolean",
            "description": "Whether to skip sending the payload if the user reported the lure email.",
            "nullable": true
          },
          "barrelResponsiveDelivery": {
            "type": "boolean",
            "description": "Whether payload delivery requires the user to have opened the lure email.",
            "nullable": true
          },
          "barrelUrgentFlagType": {
            "type": "integer",
            "description": "Urgent flag configuration for Double Barrel campaigns: 0 = None, 1 = LureOnly, 2 = PayloadOnly, 3 = Both.",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the campaign. Required. Maximum 200 characters."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Description of the campaign's purpose or scope. Maximum 300 characters.",
            "nullable": true
          },
          "scheduleTypeId": {
            "type": "integer",
            "description": "Schedule type identifier (e.g., immediate, scheduled). Required. Allowed values: 1 = SendNow (Send now) | 2 = SaveForLater (Save for later) | 3 = Schedule (Schedule to)",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "description": "Date and time when the campaign is scheduled to start.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the scheduled date (e.g., \"Europe/Istanbul\").",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "description": "Duration of the campaign in days.",
            "format": "int32"
          },
          "distributionStartTypeId": {
            "type": "integer",
            "description": "Distribution start type controlling when email delivery begins. Defaults to sending all when campaign starts. Allowed values: 1 = SendAllWhenCampaignStarts (Send when campaign starts) | 2 = SendWhenScheduledTime (Send when scheduled days & hours)",
            "format": "int32",
            "nullable": true
          },
          "distributionTypeId": {
            "type": "integer",
            "description": "Distribution type identifier controlling how emails are batched and sent. Allowed values: 1 = ViaSmtpDelay (Via SMTP delay) | 2 = ViaEmail (Via Email) | 3 = ViaSms (Via Sms) | 4 = ViaPrintout (Via Printout)",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "description": "Interval value for distribution delay between batches.",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the distribution delay (e.g., minutes, hours). Allowed values: 1 = Seconds (seconds) | 2 = Minutes (minutes) | 3 = Hours (hours)",
            "format": "int32"
          },
          "distributionStartTime": {
            "type": "string",
            "description": "Start time of the daily sending window for distributed delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "description": "End time of the daily sending window for distributed delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionDays": {
            "type": "integer",
            "description": "Bitmask or count representing the days of the week allowed for distribution.",
            "format": "int32",
            "nullable": true
          },
          "sendingLimit": {
            "type": "integer",
            "description": "Maximum number of emails to send per batch.",
            "format": "int32"
          },
          "excludeFromReports": {
            "type": "boolean",
            "description": "Whether to exclude this campaign's results from aggregate reports."
          },
          "sendOnlyActiveUsers": {
            "type": "boolean",
            "description": "Whether to send campaign emails only to active (non-disabled) users."
          },
          "sendRandomlyUsers": {
            "type": "boolean",
            "description": "Whether to randomly select a subset of target users."
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "description": "Number of users to randomly select when SendRandomlyUsers is enabled.",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "description": "Calculation type identifier for random user selection (e.g., count, percentage). Allowed values: 1 = Percent (percent) | 2 = Users (users)",
            "format": "int32"
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of target group resource identifiers whose members will receive the campaign.",
            "nullable": true
          },
          "frequency": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.PhishingCampaign.PhishingCampaignFrequency"
          },
          "enrollmentReminder": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentReminderDTO"
          },
          "awardCertificate": {
            "type": "boolean",
            "description": "Whether to award a certificate upon successful training completion."
          },
          "categoryFilter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "categoryDistributionType": {
            "type": "integer",
            "description": "Distribution type for category-based scenario assignment. Defaults to 0 (equal distribution). Allowed values: 0 = Manual (Manually) | 1 = RandomForEachUser (Random scenarios for each user) | 2 = SameRandomForAllUsers (Same random scenario for all users) | 3 = SelectWithAIAlly (AI Ally selects scenario for each user) | 4 = SelectWithAgenticAI (Agentic AI explicit user-scenario mapping)",
            "format": "int32",
            "nullable": true
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "description": "Optional fallback values for merge tags when target user data is empty.\r\nIf provided, these values will be used instead of excluding the user from the campaign.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new email-based phishing simulation campaign.\r\nExtends KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.CreatePhishingCampaignBaseRequest with email-specific settings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreateQuishingCampaignRequest": {
        "required": [
          "name",
          "scheduleTypeId"
        ],
        "type": "object",
        "properties": {
          "quishingScenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingScenarioTraining"
            },
            "description": "List of quishing scenarios with their associated training assignments.",
            "nullable": true
          },
          "quishingScenarioResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of quishing scenario resource identifiers to include in the campaign.",
            "nullable": true
          },
          "smtpSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the SMTP setting used for sending campaign emails.",
            "nullable": true
          },
          "distributionEmailOver": {
            "type": "integer",
            "description": "Total number of emails distributed over the specified time period.",
            "format": "int32"
          },
          "distributionEmailOverTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the email-over distribution period. Allowed values: 1 = Minutes (minutes) | 2 = Hours (hours)",
            "format": "int32"
          },
          "emailDeliverySettingType": {
            "type": "integer",
            "description": "Email delivery setting type (e.g., SMTP relay, direct delivery, API). Allowed values: 0 = NotSet | 1 = SMTP | 2 = GoogleWorkspaceDirectEmail | 3 = Microsoft365DirectEmail",
            "format": "int32"
          },
          "directEmailSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the direct email delivery setting, if applicable.",
            "nullable": true
          },
          "templateType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Enum.QuishingTemplateSearchTypeEnum"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the campaign. Required. Maximum 200 characters."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Description of the campaign's purpose or scope. Maximum 300 characters.",
            "nullable": true
          },
          "scheduleTypeId": {
            "type": "integer",
            "description": "Schedule type identifier (e.g., immediate, scheduled). Required. Allowed values: 1 = SendNow (Send now) | 2 = SaveForLater (Save for later) | 3 = Schedule (Schedule to)",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "description": "Date and time when the campaign is scheduled to start.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the scheduled date (e.g., \"Europe/Istanbul\").",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "description": "Duration of the campaign in days.",
            "format": "int32"
          },
          "distributionStartTypeId": {
            "type": "integer",
            "description": "Distribution start type controlling when email delivery begins. Defaults to sending all when campaign starts. Allowed values: 1 = SendAllWhenCampaignStarts (Send when campaign starts) | 2 = SendWhenScheduledTime (Send when scheduled days & hours)",
            "format": "int32",
            "nullable": true
          },
          "distributionTypeId": {
            "type": "integer",
            "description": "Distribution type identifier controlling how emails are batched and sent. Allowed values: 1 = ViaSmtpDelay (Via SMTP delay) | 2 = ViaEmail (Via Email) | 3 = ViaSms (Via Sms) | 4 = ViaPrintout (Via Printout)",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "description": "Interval value for distribution delay between batches.",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the distribution delay (e.g., minutes, hours). Allowed values: 1 = Seconds (seconds) | 2 = Minutes (minutes) | 3 = Hours (hours)",
            "format": "int32"
          },
          "distributionStartTime": {
            "type": "string",
            "description": "Start time of the daily sending window for distributed delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "description": "End time of the daily sending window for distributed delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionDays": {
            "type": "integer",
            "description": "Bitmask or count representing the days of the week allowed for distribution.",
            "format": "int32",
            "nullable": true
          },
          "sendingLimit": {
            "type": "integer",
            "description": "Maximum number of emails to send per batch.",
            "format": "int32"
          },
          "excludeFromReports": {
            "type": "boolean",
            "description": "Whether to exclude this campaign's results from aggregate reports."
          },
          "sendOnlyActiveUsers": {
            "type": "boolean",
            "description": "Whether to send campaign emails only to active (non-disabled) users."
          },
          "sendRandomlyUsers": {
            "type": "boolean",
            "description": "Whether to randomly select a subset of target users."
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "description": "Number of users to randomly select when SendRandomlyUsers is enabled.",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "description": "Calculation type identifier for random user selection (e.g., count, percentage). Allowed values: 1 = Percent (percent) | 2 = Users (users)",
            "format": "int32"
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of target group resource identifiers whose members will receive the campaign.",
            "nullable": true
          },
          "frequency": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.PhishingCampaign.PhishingCampaignFrequency"
          },
          "enrollmentReminder": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentReminderDTO"
          },
          "awardCertificate": {
            "type": "boolean",
            "description": "Whether to award a certificate upon successful training completion."
          },
          "categoryFilter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "categoryDistributionType": {
            "type": "integer",
            "description": "Distribution type for category-based scenario assignment. Defaults to 0 (equal distribution). Allowed values: 0 = Manual (Manually) | 1 = RandomForEachUser (Random scenarios for each user) | 2 = SameRandomForAllUsers (Same random scenario for all users) | 3 = SelectWithAIAlly (AI Ally selects scenario for each user) | 4 = SelectWithAgenticAI (Agentic AI explicit user-scenario mapping)",
            "format": "int32",
            "nullable": true
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "description": "Optional fallback values for merge tags when target user data is empty.\r\nIf provided, these values will be used instead of excluding the user from the campaign.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new QR code phishing (quishing) simulation campaign.\r\nExtends KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.CreatePhishingCampaignBaseRequest with quishing-specific settings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.CreateSmishingCampaignRequest": {
        "required": [
          "name",
          "scheduleTypeId"
        ],
        "type": "object",
        "properties": {
          "smsProviderNumberResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of SMS provider phone number resource identifiers to send messages from.",
            "nullable": true
          },
          "smishingScenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingScenarioTrainingDTO"
            },
            "description": "List of smishing scenarios with their associated training assignments.",
            "nullable": true
          },
          "smishingScenarioResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of smishing scenario resource identifiers to include in the campaign.",
            "nullable": true
          },
          "useTargetUserTimeZone": {
            "type": "boolean",
            "description": "Whether to schedule SMS delivery based on each target user's local time zone."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the campaign. Required. Maximum 200 characters."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Description of the campaign's purpose or scope. Maximum 300 characters.",
            "nullable": true
          },
          "scheduleTypeId": {
            "type": "integer",
            "description": "Schedule type identifier (e.g., immediate, scheduled). Required. Allowed values: 1 = SendNow (Send now) | 2 = SaveForLater (Save for later) | 3 = Schedule (Schedule to)",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "description": "Date and time when the campaign is scheduled to start.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the scheduled date (e.g., \"Europe/Istanbul\").",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "description": "Duration of the campaign in days.",
            "format": "int32"
          },
          "distributionStartTypeId": {
            "type": "integer",
            "description": "Distribution start type controlling when email delivery begins. Defaults to sending all when campaign starts. Allowed values: 1 = SendAllWhenCampaignStarts (Send when campaign starts) | 2 = SendWhenScheduledTime (Send when scheduled days & hours)",
            "format": "int32",
            "nullable": true
          },
          "distributionTypeId": {
            "type": "integer",
            "description": "Distribution type identifier controlling how emails are batched and sent. Allowed values: 1 = ViaSmtpDelay (Via SMTP delay) | 2 = ViaEmail (Via Email) | 3 = ViaSms (Via Sms) | 4 = ViaPrintout (Via Printout)",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "description": "Interval value for distribution delay between batches.",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the distribution delay (e.g., minutes, hours). Allowed values: 1 = Seconds (seconds) | 2 = Minutes (minutes) | 3 = Hours (hours)",
            "format": "int32"
          },
          "distributionStartTime": {
            "type": "string",
            "description": "Start time of the daily sending window for distributed delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "description": "End time of the daily sending window for distributed delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionDays": {
            "type": "integer",
            "description": "Bitmask or count representing the days of the week allowed for distribution.",
            "format": "int32",
            "nullable": true
          },
          "sendingLimit": {
            "type": "integer",
            "description": "Maximum number of emails to send per batch.",
            "format": "int32"
          },
          "excludeFromReports": {
            "type": "boolean",
            "description": "Whether to exclude this campaign's results from aggregate reports."
          },
          "sendOnlyActiveUsers": {
            "type": "boolean",
            "description": "Whether to send campaign emails only to active (non-disabled) users."
          },
          "sendRandomlyUsers": {
            "type": "boolean",
            "description": "Whether to randomly select a subset of target users."
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "description": "Number of users to randomly select when SendRandomlyUsers is enabled.",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "description": "Calculation type identifier for random user selection (e.g., count, percentage). Allowed values: 1 = Percent (percent) | 2 = Users (users)",
            "format": "int32"
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of target group resource identifiers whose members will receive the campaign.",
            "nullable": true
          },
          "frequency": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.PhishingCampaign.PhishingCampaignFrequency"
          },
          "enrollmentReminder": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentReminderDTO"
          },
          "awardCertificate": {
            "type": "boolean",
            "description": "Whether to award a certificate upon successful training completion."
          },
          "categoryFilter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "categoryDistributionType": {
            "type": "integer",
            "description": "Distribution type for category-based scenario assignment. Defaults to 0 (equal distribution). Allowed values: 0 = Manual (Manually) | 1 = RandomForEachUser (Random scenarios for each user) | 2 = SameRandomForAllUsers (Same random scenario for all users) | 3 = SelectWithAIAlly (AI Ally selects scenario for each user) | 4 = SelectWithAgenticAI (Agentic AI explicit user-scenario mapping)",
            "format": "int32",
            "nullable": true
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "description": "Optional fallback values for merge tags when target user data is empty.\r\nIf provided, these values will be used instead of excluding the user from the campaign.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new SMS phishing (smishing) simulation campaign.\r\nExtends KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.CreatePhishingCampaignBaseRequest with SMS-specific settings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCalculateSendingInfoRequest": {
        "type": "object",
        "properties": {
          "distributionTypeId": {
            "type": "integer",
            "description": "Distribution type identifier controlling how emails are batched and sent. Allowed values: 1 = ViaSmtpDelay (Via SMTP delay) | 2 = ViaEmail (Via Email) | 3 = ViaSms (Via Sms) | 4 = ViaPrintout (Via Printout)",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "description": "Interval value for distribution delay between batches.",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the distribution delay (e.g., minutes, hours). Allowed values: 1 = Seconds (seconds) | 2 = Minutes (minutes) | 3 = Hours (hours)",
            "format": "int32"
          },
          "distributionEmailOver": {
            "type": "integer",
            "description": "Total number of emails distributed over the specified time period.",
            "format": "int32"
          },
          "distributionEmailOverTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the email-over distribution period. Allowed values: 1 = Minutes (minutes) | 2 = Hours (hours)",
            "format": "int32"
          },
          "sendingLimit": {
            "type": "integer",
            "description": "Maximum number of emails to send per batch.",
            "format": "int32"
          },
          "sendOnlyActiveUsers": {
            "type": "boolean",
            "description": "Whether to send campaign emails only to active (non-disabled) users."
          },
          "sendRandomlyUsers": {
            "type": "boolean",
            "description": "Whether to randomly select a subset of target users."
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "description": "Number of users to randomly select when SendRandomlyUsers is enabled.",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "description": "Calculation type identifier for random user selection (e.g., count, percentage). Allowed values: 1 = Percent (percent) | 2 = Users (users)",
            "format": "int32"
          },
          "totalTargetUserCount": {
            "type": "integer",
            "description": "Total number of target users across all selected target groups.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for calculating estimated sending information for a phishing campaign.\r\nExtends KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.CalculateSendingInfoBaseRequest with email distribution settings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignDeleteRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of phishing campaign resource identifiers to delete.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "Whether all campaigns matching the filter should be selected for deletion."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of campaign resource identifiers to exclude from deletion when SelectAll is true.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for bulk deleting phishing campaigns, with support for select-all and exclusion."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.PhishingCampaignSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether to sort results in ascending order. False for descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching phishing campaigns with pagination, filtering, and sorting."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.QuishingCalculateSendingInfoRequest": {
        "type": "object",
        "properties": {
          "distributionTypeId": {
            "type": "integer",
            "description": "Distribution type identifier controlling how emails are batched and sent. Allowed values: 1 = ViaSmtpDelay (Via SMTP delay) | 2 = ViaEmail (Via Email) | 3 = ViaSms (Via Sms) | 4 = ViaPrintout (Via Printout)",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "description": "Interval value for distribution delay between batches.",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the distribution delay (e.g., minutes, hours). Allowed values: 1 = Seconds (seconds) | 2 = Minutes (minutes) | 3 = Hours (hours)",
            "format": "int32"
          },
          "distributionEmailOver": {
            "type": "integer",
            "description": "Total number of emails distributed over the specified time period.",
            "format": "int32"
          },
          "distributionEmailOverTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the email-over distribution period. Allowed values: 1 = Minutes (minutes) | 2 = Hours (hours)",
            "format": "int32"
          },
          "sendingLimit": {
            "type": "integer",
            "description": "Maximum number of emails to send per batch.",
            "format": "int32"
          },
          "sendOnlyActiveUsers": {
            "type": "boolean",
            "description": "Whether to send campaign emails only to active (non-disabled) users."
          },
          "sendRandomlyUsers": {
            "type": "boolean",
            "description": "Whether to randomly select a subset of target users."
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "description": "Number of users to randomly select when SendRandomlyUsers is enabled.",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "description": "Calculation type identifier for random user selection (e.g., count, percentage). Allowed values: 1 = Percent (percent) | 2 = Users (users)",
            "format": "int32"
          },
          "totalTargetUserCount": {
            "type": "integer",
            "description": "Total number of target users across all selected target groups.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for calculating estimated sending information for a quishing campaign.\r\nExtends KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.CalculateSendingInfoBaseRequest with email distribution settings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.QuishingCampaignDeleteRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of quishing campaign resource identifiers to delete.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "Whether all campaigns matching the filter should be selected for deletion."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of campaign resource identifiers to exclude from deletion when SelectAll is true.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for bulk deleting quishing campaigns, with support for select-all and exclusion."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.SmishingCalculateSendingInfoRequest": {
        "type": "object",
        "properties": {
          "distributionTypeId": {
            "type": "integer",
            "description": "Distribution type identifier controlling how SMS messages are batched and sent. Allowed values: 1 = ViaSmtpDelay (Via SMTP delay) | 2 = ViaEmail (Via Email) | 3 = ViaSms (Via Sms) | 4 = ViaPrintout (Via Printout)",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "description": "Interval value for distribution delay between batches.",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the distribution delay (e.g., minutes, hours). Allowed values: 1 = Seconds (seconds) | 2 = Minutes (minutes) | 3 = Hours (hours)",
            "format": "int32"
          },
          "sendingLimit": {
            "type": "integer",
            "description": "Maximum number of emails to send per batch.",
            "format": "int32"
          },
          "sendOnlyActiveUsers": {
            "type": "boolean",
            "description": "Whether to send campaign emails only to active (non-disabled) users."
          },
          "sendRandomlyUsers": {
            "type": "boolean",
            "description": "Whether to randomly select a subset of target users."
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "description": "Number of users to randomly select when SendRandomlyUsers is enabled.",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "description": "Calculation type identifier for random user selection (e.g., count, percentage). Allowed values: 1 = Percent (percent) | 2 = Users (users)",
            "format": "int32"
          },
          "totalTargetUserCount": {
            "type": "integer",
            "description": "Total number of target users across all selected target groups.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for calculating estimated sending information for a smishing campaign.\r\nExtends KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.CalculateSendingInfoBaseRequest with SMS distribution settings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdatePhishingCampaignRequest": {
        "required": [
          "distributionStartTypeId",
          "name"
        ],
        "type": "object",
        "properties": {
          "phishingScenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingScenarioTrainingDTO"
            },
            "description": "List of phishing scenarios with their associated training assignments.",
            "nullable": true
          },
          "phishingScenarioResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of phishing scenario resource identifiers to include in the campaign.",
            "nullable": true
          },
          "smtpSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the SMTP setting used for sending campaign emails.",
            "nullable": true
          },
          "emailDeliverySettingType": {
            "type": "integer",
            "description": "Email delivery setting type (e.g., SMTP relay, direct delivery, API). Allowed values: 0 = NotSet | 1 = SMTP | 2 = GoogleWorkspaceDirectEmail | 3 = Microsoft365DirectEmail",
            "format": "int32"
          },
          "directEmailSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the direct email delivery setting, if applicable.",
            "nullable": true
          },
          "useTargetUserTimeZone": {
            "type": "boolean",
            "description": "Whether to schedule email delivery based on each target user's local time zone."
          },
          "emailReplySettings": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingCampaignEmailReplyDTO"
          },
          "sendUserPreferredLanguage": {
            "type": "integer",
            "description": "Language preference for sending simulation emails to target users. Allowed values: 0 = SendInManually (Manually choose a language to send the scenario to all recipients.) | 1 = SendInTargetUserPreferredLanguage (Sent in each recipient's preferred language. If not set, it defaults to the company language ({0}).)",
            "format": "int32",
            "nullable": true
          },
          "barrelDelayMinutes": {
            "type": "integer",
            "description": "Delay in minutes between lure delivery completion and payload delivery for Double Barrel campaigns.",
            "format": "int32",
            "nullable": true
          },
          "barrelOrderType": {
            "type": "integer",
            "description": "Order type for Double Barrel campaigns: 1 = LureFirst, 2 = PayloadFirst.",
            "format": "int32",
            "nullable": true
          },
          "barrelSkipPayloadIfReported": {
            "type": "boolean",
            "description": "Whether to skip sending the payload if the user reported the lure email.",
            "nullable": true
          },
          "barrelResponsiveDelivery": {
            "type": "boolean",
            "description": "Whether payload delivery requires the user to have opened the lure email.",
            "nullable": true
          },
          "barrelUrgentFlagType": {
            "type": "integer",
            "description": "Urgent flag configuration for Double Barrel campaigns: 0 = None, 1 = LureOnly, 2 = PayloadOnly, 3 = Both.",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "description": "Resource identifier of the campaign to update.",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the campaign. Required. Maximum 200 characters."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Description of the campaign's purpose or scope. Maximum 300 characters.",
            "nullable": true
          },
          "distributionStartTypeId": {
            "type": "integer",
            "description": "Distribution start type controlling when email delivery begins. Required. Defaults to sending all when campaign starts. Allowed values: 1 = SendAllWhenCampaignStarts (Send when campaign starts) | 2 = SendWhenScheduledTime (Send when scheduled days & hours)",
            "format": "int32"
          },
          "scheduleTypeId": {
            "type": "integer",
            "description": "Schedule type identifier (e.g., immediate, scheduled). Allowed values: 1 = SendNow (Send now) | 2 = SaveForLater (Save for later) | 3 = Schedule (Schedule to)",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "description": "Date and time when the campaign is scheduled to start.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the scheduled date (e.g., \"Europe/Istanbul\").",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "description": "Duration of the campaign in days.",
            "format": "int32"
          },
          "sendingLimit": {
            "type": "integer",
            "description": "Maximum number of emails to send per batch.",
            "format": "int32"
          },
          "excludeFromReports": {
            "type": "boolean",
            "description": "Whether to exclude this campaign's results from aggregate reports."
          },
          "sendOnlyActiveUsers": {
            "type": "boolean",
            "description": "Whether to send campaign emails only to active (non-disabled) users."
          },
          "sendRandomlyUsers": {
            "type": "boolean",
            "description": "Whether to randomly select a subset of target users."
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "description": "Number of users to randomly select when SendRandomlyUsers is enabled.",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "description": "Calculation type identifier for random user selection (e.g., count, percentage). Allowed values: 1 = Percent (percent) | 2 = Users (users)",
            "format": "int32"
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of target group resource identifiers whose members will receive the campaign.",
            "nullable": true
          },
          "distributionStartTime": {
            "type": "string",
            "description": "Start time of the daily sending window for distributed delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "description": "End time of the daily sending window for distributed delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionDays": {
            "type": "integer",
            "description": "Bitmask or count representing the days of the week allowed for distribution.",
            "format": "int32",
            "nullable": true
          },
          "distributionTypeId": {
            "type": "integer",
            "description": "Distribution type identifier controlling how emails are batched and sent. Allowed values: 1 = ViaSmtpDelay (Via SMTP delay) | 2 = ViaEmail (Via Email) | 3 = ViaSms (Via Sms) | 4 = ViaPrintout (Via Printout)",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "description": "Interval value for distribution delay between batches.",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the distribution delay (e.g., minutes, hours). Allowed values: 1 = Seconds (seconds) | 2 = Minutes (minutes) | 3 = Hours (hours)",
            "format": "int32"
          },
          "distributionEmailOver": {
            "type": "integer",
            "description": "Total number of emails distributed over the specified time period.",
            "format": "int32"
          },
          "distributionEmailOverTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the email-over distribution period. Allowed values: 1 = Minutes (minutes) | 2 = Hours (hours)",
            "format": "int32"
          },
          "enrollmentReminder": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentReminderDTO"
          },
          "awardCertificate": {
            "type": "boolean",
            "description": "Whether to award a certificate upon successful training completion."
          },
          "categoryFilter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "categoryDistributionType": {
            "type": "integer",
            "description": "Distribution type for category-based scenario assignment. Defaults to 0 (equal distribution). Allowed values: 0 = Manual (Manually) | 1 = RandomForEachUser (Random scenarios for each user) | 2 = SameRandomForAllUsers (Same random scenario for all users) | 3 = SelectWithAIAlly (AI Ally selects scenario for each user) | 4 = SelectWithAgenticAI (Agentic AI explicit user-scenario mapping)",
            "format": "int32",
            "nullable": true
          },
          "trainingForCategory": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingScenarioTrainingBaseDTO"
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "description": "Optional fallback values for merge tags when target user data is empty.\r\nIf null, existing fallbacks are preserved. If empty list, all fallbacks are removed.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing email-based phishing simulation campaign.\r\nExtends KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.UpdatePhishingCampaignBaseRequest with email-specific settings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdateQuishingCampaignRequest": {
        "required": [
          "distributionStartTypeId",
          "name"
        ],
        "type": "object",
        "properties": {
          "quishingScenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingCampaign.Dto.QuishingScenarioTraining"
            },
            "description": "List of quishing scenarios with their associated training assignments.",
            "nullable": true
          },
          "smtpSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the SMTP setting used for sending campaign emails.",
            "nullable": true
          },
          "emailDeliverySettingType": {
            "type": "integer",
            "description": "Email delivery setting type (e.g., SMTP relay, direct delivery, API). Allowed values: 0 = NotSet | 1 = SMTP | 2 = GoogleWorkspaceDirectEmail | 3 = Microsoft365DirectEmail",
            "format": "int32"
          },
          "directEmailSettingResourceId": {
            "type": "string",
            "description": "Resource identifier of the direct email delivery setting, if applicable.",
            "nullable": true
          },
          "quishingScenarioResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of quishing scenario resource identifiers to include in the campaign.",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "description": "Resource identifier of the campaign to update.",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the campaign. Required. Maximum 200 characters."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Description of the campaign's purpose or scope. Maximum 300 characters.",
            "nullable": true
          },
          "distributionStartTypeId": {
            "type": "integer",
            "description": "Distribution start type controlling when email delivery begins. Required. Defaults to sending all when campaign starts. Allowed values: 1 = SendAllWhenCampaignStarts (Send when campaign starts) | 2 = SendWhenScheduledTime (Send when scheduled days & hours)",
            "format": "int32"
          },
          "scheduleTypeId": {
            "type": "integer",
            "description": "Schedule type identifier (e.g., immediate, scheduled). Allowed values: 1 = SendNow (Send now) | 2 = SaveForLater (Save for later) | 3 = Schedule (Schedule to)",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "description": "Date and time when the campaign is scheduled to start.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the scheduled date (e.g., \"Europe/Istanbul\").",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "description": "Duration of the campaign in days.",
            "format": "int32"
          },
          "sendingLimit": {
            "type": "integer",
            "description": "Maximum number of emails to send per batch.",
            "format": "int32"
          },
          "excludeFromReports": {
            "type": "boolean",
            "description": "Whether to exclude this campaign's results from aggregate reports."
          },
          "sendOnlyActiveUsers": {
            "type": "boolean",
            "description": "Whether to send campaign emails only to active (non-disabled) users."
          },
          "sendRandomlyUsers": {
            "type": "boolean",
            "description": "Whether to randomly select a subset of target users."
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "description": "Number of users to randomly select when SendRandomlyUsers is enabled.",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "description": "Calculation type identifier for random user selection (e.g., count, percentage). Allowed values: 1 = Percent (percent) | 2 = Users (users)",
            "format": "int32"
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of target group resource identifiers whose members will receive the campaign.",
            "nullable": true
          },
          "distributionStartTime": {
            "type": "string",
            "description": "Start time of the daily sending window for distributed delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "description": "End time of the daily sending window for distributed delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionDays": {
            "type": "integer",
            "description": "Bitmask or count representing the days of the week allowed for distribution.",
            "format": "int32",
            "nullable": true
          },
          "distributionTypeId": {
            "type": "integer",
            "description": "Distribution type identifier controlling how emails are batched and sent. Allowed values: 1 = ViaSmtpDelay (Via SMTP delay) | 2 = ViaEmail (Via Email) | 3 = ViaSms (Via Sms) | 4 = ViaPrintout (Via Printout)",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "description": "Interval value for distribution delay between batches.",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the distribution delay (e.g., minutes, hours). Allowed values: 1 = Seconds (seconds) | 2 = Minutes (minutes) | 3 = Hours (hours)",
            "format": "int32"
          },
          "distributionEmailOver": {
            "type": "integer",
            "description": "Total number of emails distributed over the specified time period.",
            "format": "int32"
          },
          "distributionEmailOverTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the email-over distribution period. Allowed values: 1 = Minutes (minutes) | 2 = Hours (hours)",
            "format": "int32"
          },
          "enrollmentReminder": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentReminderDTO"
          },
          "awardCertificate": {
            "type": "boolean",
            "description": "Whether to award a certificate upon successful training completion."
          },
          "categoryFilter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "categoryDistributionType": {
            "type": "integer",
            "description": "Distribution type for category-based scenario assignment. Defaults to 0 (equal distribution). Allowed values: 0 = Manual (Manually) | 1 = RandomForEachUser (Random scenarios for each user) | 2 = SameRandomForAllUsers (Same random scenario for all users) | 3 = SelectWithAIAlly (AI Ally selects scenario for each user) | 4 = SelectWithAgenticAI (Agentic AI explicit user-scenario mapping)",
            "format": "int32",
            "nullable": true
          },
          "trainingForCategory": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingScenarioTrainingBaseDTO"
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "description": "Optional fallback values for merge tags when target user data is empty.\r\nIf null, existing fallbacks are preserved. If empty list, all fallbacks are removed.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing QR code phishing (quishing) simulation campaign.\r\nExtends KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.UpdatePhishingCampaignBaseRequest with quishing-specific settings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.UpdateSmishingCampaignRequest": {
        "required": [
          "distributionStartTypeId",
          "name"
        ],
        "type": "object",
        "properties": {
          "smsProviderNumberResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of SMS provider phone number resource identifiers to send messages from.",
            "nullable": true
          },
          "smishingScenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingScenarioTrainingDTO"
            },
            "description": "List of smishing scenarios with their associated training assignments.",
            "nullable": true
          },
          "smishingScenarioResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of smishing scenario resource identifiers to include in the campaign.",
            "nullable": true
          },
          "useTargetUserTimeZone": {
            "type": "boolean",
            "description": "Whether to schedule SMS delivery based on each target user's local time zone."
          },
          "resourceId": {
            "type": "string",
            "description": "Resource identifier of the campaign to update.",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the campaign. Required. Maximum 200 characters."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Description of the campaign's purpose or scope. Maximum 300 characters.",
            "nullable": true
          },
          "distributionStartTypeId": {
            "type": "integer",
            "description": "Distribution start type controlling when email delivery begins. Required. Defaults to sending all when campaign starts. Allowed values: 1 = SendAllWhenCampaignStarts (Send when campaign starts) | 2 = SendWhenScheduledTime (Send when scheduled days & hours)",
            "format": "int32"
          },
          "scheduleTypeId": {
            "type": "integer",
            "description": "Schedule type identifier (e.g., immediate, scheduled). Allowed values: 1 = SendNow (Send now) | 2 = SaveForLater (Save for later) | 3 = Schedule (Schedule to)",
            "format": "int32"
          },
          "scheduledDate": {
            "type": "string",
            "description": "Date and time when the campaign is scheduled to start.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledDateTimeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the scheduled date (e.g., \"Europe/Istanbul\").",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "description": "Duration of the campaign in days.",
            "format": "int32"
          },
          "sendingLimit": {
            "type": "integer",
            "description": "Maximum number of emails to send per batch.",
            "format": "int32"
          },
          "excludeFromReports": {
            "type": "boolean",
            "description": "Whether to exclude this campaign's results from aggregate reports."
          },
          "sendOnlyActiveUsers": {
            "type": "boolean",
            "description": "Whether to send campaign emails only to active (non-disabled) users."
          },
          "sendRandomlyUsers": {
            "type": "boolean",
            "description": "Whether to randomly select a subset of target users."
          },
          "sendRandomlyUsersCount": {
            "type": "integer",
            "description": "Number of users to randomly select when SendRandomlyUsers is enabled.",
            "format": "int32"
          },
          "sendRandomlyUsersCalculateTypeId": {
            "type": "integer",
            "description": "Calculation type identifier for random user selection (e.g., count, percentage). Allowed values: 1 = Percent (percent) | 2 = Users (users)",
            "format": "int32"
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of target group resource identifiers whose members will receive the campaign.",
            "nullable": true
          },
          "distributionStartTime": {
            "type": "string",
            "description": "Start time of the daily sending window for distributed delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionEndTime": {
            "type": "string",
            "description": "End time of the daily sending window for distributed delivery.",
            "format": "date-span",
            "nullable": true
          },
          "distributionDays": {
            "type": "integer",
            "description": "Bitmask or count representing the days of the week allowed for distribution.",
            "format": "int32",
            "nullable": true
          },
          "distributionTypeId": {
            "type": "integer",
            "description": "Distribution type identifier controlling how emails are batched and sent. Allowed values: 1 = ViaSmtpDelay (Via SMTP delay) | 2 = ViaEmail (Via Email) | 3 = ViaSms (Via Sms) | 4 = ViaPrintout (Via Printout)",
            "format": "int32"
          },
          "distributionDelayEvery": {
            "type": "integer",
            "description": "Interval value for distribution delay between batches.",
            "format": "int32"
          },
          "distributionDelayTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the distribution delay (e.g., minutes, hours). Allowed values: 1 = Seconds (seconds) | 2 = Minutes (minutes) | 3 = Hours (hours)",
            "format": "int32"
          },
          "distributionEmailOver": {
            "type": "integer",
            "description": "Total number of emails distributed over the specified time period.",
            "format": "int32"
          },
          "distributionEmailOverTimeTypeId": {
            "type": "integer",
            "description": "Time unit type identifier for the email-over distribution period. Allowed values: 1 = Minutes (minutes) | 2 = Hours (hours)",
            "format": "int32"
          },
          "enrollmentReminder": {
            "$ref": "#/components/schemas/KeepnetLabs.AwarenessEducator.Core.Models.Enrollment.EnrollmentReminderDTO"
          },
          "awardCertificate": {
            "type": "boolean",
            "description": "Whether to award a certificate upon successful training completion."
          },
          "categoryFilter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "categoryDistributionType": {
            "type": "integer",
            "description": "Distribution type for category-based scenario assignment. Defaults to 0 (equal distribution). Allowed values: 0 = Manual (Manually) | 1 = RandomForEachUser (Random scenarios for each user) | 2 = SameRandomForAllUsers (Same random scenario for all users) | 3 = SelectWithAIAlly (AI Ally selects scenario for each user) | 4 = SelectWithAgenticAI (Agentic AI explicit user-scenario mapping)",
            "format": "int32",
            "nullable": true
          },
          "trainingForCategory": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.PhishingScenarioTrainingBaseDTO"
          },
          "mergeTagFallbacks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaign.Dto.MergeTagFallbackDto"
            },
            "description": "Optional fallback values for merge tags when target user data is empty.\r\nIf null, existing fallbacks are preserved. If empty list, all fallbacks are removed.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing SMS phishing (smishing) simulation campaign.\r\nExtends KeepnetLabs.DistributedService.Rest.Models.PhishingCampaign.Base.UpdatePhishingCampaignBaseRequest with SMS-specific settings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ExportPhishingCampaignJobRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 25.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "reportAllPages": {
            "type": "boolean",
            "description": "When true, all pages of data are exported regardless of pagination settings."
          },
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportType"
          },
          "phishingCampaignFrequencyGroup": {
            "type": "integer",
            "description": "Optional frequency group filter for recurring campaigns. Defaults to 0 (all groups).",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for exporting phishing campaign job data with filtering, pagination, and format options."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ExportQuishingCampaignJobRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 25.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "reportAllPages": {
            "type": "boolean",
            "description": "When true, all pages of data are exported regardless of pagination settings."
          },
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportType"
          },
          "phishingCampaignFrequencyGroup": {
            "type": "integer",
            "description": "Optional frequency group filter for recurring campaigns. Defaults to 0 (all groups).",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for exporting quishing (QR code phishing) campaign job data with filtering, pagination, and format options."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of user resource identifiers to resend the campaign job to.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "When true, all users matching the filter are selected for resend."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of user resource identifiers to exclude from resend when KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersListRequest.SelectAll is true.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          },
          "searchType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for resending a phishing campaign job to a list of selected users, with support for bulk selection."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.ResendPhishingCampaignJobToUsersRequest": {
        "type": "object",
        "properties": {
          "types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType"
            },
            "description": "Array of campaign job user search types indicating which activity categories should be resent. Maps to the KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType enum.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for resending a phishing campaign job to a single user, specifying activity types to resend."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingActivityUsersRequest": {
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "description": "Start date of the activity search range. Null for no lower bound.",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "End date of the activity search range. Null for no upper bound.",
            "format": "date-time",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 25.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "groupByUser": {
            "type": "boolean",
            "description": "If true, groups all activities by user (shows total counts per user).\r\nIf false (default), shows each activity as separate row."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching phishing activity records across users within a date range."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobReportRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 25.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through phishing campaign job reports."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 25.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "phishingCampaignFrequencyGroup": {
            "type": "integer",
            "description": "Optional frequency group filter for recurring campaigns. Defaults to 0 (all groups).",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through phishing campaign jobs."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.SearchPhishingCampaignJobUsersRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "activityType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.PhishingCampaignJobUserActivityType"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through users within a phishing campaign job."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingCampaignJob.UpdatePhishingCampaignJobUserActivityRequest": {
        "type": "object",
        "properties": {
          "searchType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PhishingCampaignJob.Dto.PhishingCampaignJobUserSearchType"
          },
          "activityType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.PhishingCampaignJobUserActivityType"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating the activity status of a user within a phishing campaign job."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreatePhishingScenarioRequest": {
        "required": [
          "categoryId",
          "emailTemplateId",
          "landingPageTemplateId",
          "methodTypeId",
          "name"
        ],
        "type": "object",
        "properties": {
          "emailTemplateId": {
            "type": "integer",
            "description": "Identifier of the email template to use in this phishing scenario.",
            "format": "int32"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the phishing scenario."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Optional description providing additional context about the scenario.",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "description": "Identifier for the delivery method type (e.g., email, SMS, QR code).",
            "format": "int32"
          },
          "landingPageTemplateId": {
            "type": "integer",
            "description": "Identifier of the landing page template associated with this scenario.",
            "format": "int32"
          },
          "categoryId": {
            "type": "integer",
            "description": "Identifier of the phishing category this scenario belongs to.",
            "format": "int32"
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type for localization.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of tag labels for categorizing and searching scenarios.",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility and sharing rules that control which entities can access this scenario.",
            "nullable": true
          },
          "mfaTextTemplate": {
            "type": "string",
            "description": "SMS text template used for multi-factor authentication simulation.",
            "nullable": true
          },
          "mfaSenderNumberResourceId": {
            "type": "string",
            "description": "Resource identifier of the sender phone number used for MFA SMS messages.",
            "nullable": true
          },
          "roleResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the roles that have access to this scenario.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new email-based phishing scenario."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreateQuishingScenarioRequest": {
        "required": [
          "categoryId",
          "landingPageTemplateId",
          "methodTypeId",
          "name",
          "templateResourceId",
          "templateType"
        ],
        "type": "object",
        "properties": {
          "templateResourceId": {
            "minLength": 1,
            "type": "string",
            "description": "Resource identifier of the quishing template to use."
          },
          "templateType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Enum.QuishingTemplateSearchTypeEnum"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the phishing scenario."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Optional description providing additional context about the scenario.",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "description": "Identifier for the delivery method type (e.g., email, SMS, QR code).",
            "format": "int32"
          },
          "landingPageTemplateId": {
            "type": "integer",
            "description": "Identifier of the landing page template associated with this scenario.",
            "format": "int32"
          },
          "categoryId": {
            "type": "integer",
            "description": "Identifier of the phishing category this scenario belongs to.",
            "format": "int32"
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type for localization.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of tag labels for categorizing and searching scenarios.",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility and sharing rules that control which entities can access this scenario.",
            "nullable": true
          },
          "mfaTextTemplate": {
            "type": "string",
            "description": "SMS text template used for multi-factor authentication simulation.",
            "nullable": true
          },
          "mfaSenderNumberResourceId": {
            "type": "string",
            "description": "Resource identifier of the sender phone number used for MFA SMS messages.",
            "nullable": true
          },
          "roleResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the roles that have access to this scenario.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new QR-code-based phishing (quishing) scenario."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.CreateSmishingScenarioRequest": {
        "required": [
          "categoryId",
          "landingPageTemplateId",
          "methodTypeId",
          "name",
          "textTemplateId"
        ],
        "type": "object",
        "properties": {
          "textTemplateId": {
            "type": "integer",
            "description": "Identifier of the SMS text template to use in this smishing scenario.",
            "format": "int32"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the phishing scenario."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Optional description providing additional context about the scenario.",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "description": "Identifier for the delivery method type (e.g., email, SMS, QR code).",
            "format": "int32"
          },
          "landingPageTemplateId": {
            "type": "integer",
            "description": "Identifier of the landing page template associated with this scenario.",
            "format": "int32"
          },
          "categoryId": {
            "type": "integer",
            "description": "Identifier of the phishing category this scenario belongs to.",
            "format": "int32"
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type for localization.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of tag labels for categorizing and searching scenarios.",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility and sharing rules that control which entities can access this scenario.",
            "nullable": true
          },
          "mfaTextTemplate": {
            "type": "string",
            "description": "SMS text template used for multi-factor authentication simulation.",
            "nullable": true
          },
          "mfaSenderNumberResourceId": {
            "type": "string",
            "description": "Resource identifier of the sender phone number used for MFA SMS messages.",
            "nullable": true
          },
          "roleResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the roles that have access to this scenario.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new SMS-based phishing (smishing) scenario."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioCategoryInfoSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records returned per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column or field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching phishing scenario category information with pagination."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.PhishingScenarioSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records returned per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column or field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "resourceId": {
            "type": "string",
            "description": "Optional resource identifier to look up a specific scenario.",
            "nullable": true
          },
          "templateTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of template type filters to restrict the result set.",
            "nullable": true
          },
          "roleResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of roles used to filter scenarios by role access.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating phishing scenarios."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdatePhishingScenarioRequest": {
        "required": [
          "categoryId",
          "emailTemplateId",
          "landingPageTemplateId",
          "methodTypeId",
          "name"
        ],
        "type": "object",
        "properties": {
          "emailTemplateId": {
            "type": "integer",
            "description": "Identifier of the email template to use in this phishing scenario.",
            "format": "int32"
          },
          "mfaSenderNumberResourceId": {
            "type": "string",
            "description": "Resource identifier of the sender phone number used for MFA SMS messages.",
            "nullable": true
          },
          "mfaTextTemplate": {
            "type": "string",
            "description": "SMS text template used for multi-factor authentication simulation.",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the phishing scenario."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Optional description providing additional context about the scenario.",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "description": "Identifier for the delivery method type (e.g., email, SMS, QR code).",
            "format": "int32"
          },
          "landingPageTemplateId": {
            "type": "integer",
            "description": "Identifier of the landing page template associated with this scenario.",
            "format": "int32"
          },
          "categoryId": {
            "type": "integer",
            "description": "Identifier of the phishing category this scenario belongs to.",
            "format": "int32"
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type for localization.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of tag labels for categorizing and searching scenarios.",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility and sharing rules that control which entities can access this scenario.",
            "nullable": true
          },
          "roleResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the roles that have access to this scenario.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing email-based phishing scenario."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdateQuishingScenarioRequest": {
        "required": [
          "categoryId",
          "landingPageTemplateId",
          "methodTypeId",
          "name",
          "templateResourceId"
        ],
        "type": "object",
        "properties": {
          "templateResourceId": {
            "minLength": 1,
            "type": "string",
            "description": "Resource identifier of the quishing template to use."
          },
          "templateType": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.QuishingTemplate.Enum.QuishingTemplateSearchTypeEnum"
          },
          "mfaSenderNumberResourceId": {
            "type": "string",
            "description": "Resource identifier of the sender phone number used for MFA SMS messages.",
            "nullable": true
          },
          "mfaTextTemplate": {
            "type": "string",
            "description": "SMS text template used for multi-factor authentication simulation.",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the phishing scenario."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Optional description providing additional context about the scenario.",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "description": "Identifier for the delivery method type (e.g., email, SMS, QR code).",
            "format": "int32"
          },
          "landingPageTemplateId": {
            "type": "integer",
            "description": "Identifier of the landing page template associated with this scenario.",
            "format": "int32"
          },
          "categoryId": {
            "type": "integer",
            "description": "Identifier of the phishing category this scenario belongs to.",
            "format": "int32"
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type for localization.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of tag labels for categorizing and searching scenarios.",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility and sharing rules that control which entities can access this scenario.",
            "nullable": true
          },
          "roleResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the roles that have access to this scenario.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing QR-code-based phishing (quishing) scenario."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PhishingScenario.UpdateSmishingScenarioRequest": {
        "required": [
          "categoryId",
          "landingPageTemplateId",
          "methodTypeId",
          "name",
          "textTemplateId"
        ],
        "type": "object",
        "properties": {
          "textTemplateId": {
            "type": "integer",
            "description": "Identifier of the SMS text template to use in this smishing scenario.",
            "format": "int32"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the phishing scenario."
          },
          "description": {
            "maxLength": 300,
            "type": "string",
            "description": "Optional description providing additional context about the scenario.",
            "nullable": true
          },
          "methodTypeId": {
            "type": "integer",
            "description": "Identifier for the delivery method type (e.g., email, SMS, QR code).",
            "format": "int32"
          },
          "landingPageTemplateId": {
            "type": "integer",
            "description": "Identifier of the landing page template associated with this scenario.",
            "format": "int32"
          },
          "categoryId": {
            "type": "integer",
            "description": "Identifier of the phishing category this scenario belongs to.",
            "format": "int32"
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type for localization.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of tag labels for categorizing and searching scenarios.",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility and sharing rules that control which entities can access this scenario.",
            "nullable": true
          },
          "mfaTextTemplate": {
            "type": "string",
            "description": "SMS text template used for multi-factor authentication simulation.",
            "nullable": true
          },
          "mfaSenderNumberResourceId": {
            "type": "string",
            "description": "Resource identifier of the sender phone number used for MFA SMS messages.",
            "nullable": true
          },
          "roleResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the roles that have access to this scenario.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing SMS-based phishing (smishing) scenario."
      },
      "KeepnetLabs.DistributedService.Rest.Models.ProxySetting.CreateProxySettingRequest": {
        "required": [
          "address",
          "authenticationTypeId",
          "isDefault",
          "name",
          "port"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the proxy configuration."
          },
          "address": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Proxy server hostname or IP address."
          },
          "port": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Port number the proxy server listens on."
          },
          "authenticationTypeId": {
            "type": "integer",
            "description": "Authentication type identifier (e.g., none, basic, NTLM).",
            "format": "int32"
          },
          "username": {
            "type": "string",
            "description": "Username for proxy authentication, if required.",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "Password for proxy authentication, if required.",
            "nullable": true
          },
          "isDefault": {
            "type": "boolean",
            "description": "Whether this proxy should be used as the system default."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new proxy server configuration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.ProxySetting.SearchProxySettingRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records returned per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column or field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating proxy server configurations."
      },
      "KeepnetLabs.DistributedService.Rest.Models.ProxySetting.TestProxySettingRequest": {
        "required": [
          "address",
          "authenticationTypeId",
          "port"
        ],
        "type": "object",
        "properties": {
          "address": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Proxy server hostname or IP address."
          },
          "port": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Port number the proxy server listens on."
          },
          "authenticationTypeId": {
            "type": "integer",
            "description": "Authentication type identifier (e.g., none, basic, NTLM).",
            "format": "int32"
          },
          "username": {
            "type": "string",
            "description": "Username for proxy authentication, if required.",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "Password for proxy authentication, if required.",
            "nullable": true
          },
          "testUrl": {
            "type": "string",
            "description": "URL used to verify connectivity through the proxy.",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "description": "Resource identifier of an existing proxy setting, if testing a saved configuration.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for testing proxy server connectivity with the specified configuration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.ProxySetting.UpdateProxySettingRequest": {
        "required": [
          "address",
          "authenticationTypeId",
          "isDefault",
          "name",
          "port"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the proxy configuration."
          },
          "address": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Proxy server hostname or IP address."
          },
          "port": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Port number the proxy server listens on."
          },
          "authenticationTypeId": {
            "type": "integer",
            "description": "Authentication type identifier (e.g., none, basic, NTLM).",
            "format": "int32"
          },
          "username": {
            "type": "string",
            "description": "Username for proxy authentication, if required.",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "Password for proxy authentication, if required.",
            "nullable": true
          },
          "isDefault": {
            "type": "boolean",
            "description": "Whether this proxy should be used as the system default."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing proxy server configuration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.BarrelPayloadTemplateDto": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "description": "Email subject line for the payload.",
            "nullable": true
          },
          "template": {
            "type": "string",
            "description": "HTML or plain-text body content of the payload email.",
            "nullable": true
          },
          "phishingFile": {
            "type": "string",
            "description": "Phishing attachment file for the payload email (tracked download).",
            "format": "binary",
            "nullable": true
          },
          "phishingFileType": {
            "type": "string",
            "description": "File type hint for the phishing file (e.g. \"exe\", \"pdf\").",
            "nullable": true
          },
          "phishingFileName": {
            "type": "string",
            "description": "Display name for the phishing file.",
            "nullable": true
          },
          "isPhishingFileModified": {
            "type": "boolean",
            "description": "Update only: true when the phishing file was changed or removed. Sent with no PhishingFile and an\r\nempty PhishingFileName, it removes the payload's phishing file."
          },
          "attachmentFiles": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "binary"
            },
            "description": "Embedded attachment files for the payload email (not tracked).",
            "nullable": true
          },
          "attachmentFilesToRemove": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Update only: resource ids of the payload's embedded attachments to remove.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Payload email content for barrel template pair."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.GeneratePsEmailTemplateWithAIRequest": {
        "required": [
          "fromAddress",
          "fromName",
          "name",
          "prompt",
          "subject"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the AI-generated email template."
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type for the generated content.",
            "nullable": true
          },
          "subject": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Email subject line for the generated template."
          },
          "fromName": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Sender display name shown in the generated email."
          },
          "fromAddress": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Sender email address used in the generated template."
          },
          "prompt": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string",
            "description": "AI prompt describing the desired email content and scenario."
          },
          "phishingTypeId": {
            "type": "integer",
            "description": "Phishing type identifier classifying the simulation category. Allowed values: 1 = Email | 2 = Sms | 3 = QRCode | 4 = Callback",
            "format": "int32"
          },
          "methodTypeId": {
            "type": "integer",
            "description": "Delivery method type identifier (e.g., email, SMS). Allowed values: 0 = Multiple (Multiple Method) | 1 = ClickOnly (Click-Only) | 2 = DataSubmission (Data Submission) | 3 = Attachment (Attachment) | 4 = Mfa (MFA) | 5 = Callback (Callback) | 6 = DoubleBarrel (Double Barrel)",
            "format": "int32"
          },
          "isPlainText": {
            "type": "boolean",
            "description": "Whether to generate plain text content instead of HTML."
          },
          "toneResourceId": {
            "type": "string",
            "description": "Resource identifier of the writing tone applied to the generated content.",
            "nullable": true
          },
          "localizationResourceId": {
            "type": "string",
            "description": "Resource identifier for the localization context of the generated template.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for generating a phishing simulation email template using AI."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.Search.PsEmailTemplateSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "phishingTypeId": {
            "type": "integer",
            "description": "Phishing type identifier to filter templates by the category of phishing attack they simulate. Allowed values: 1 = Email | 2 = Sms | 3 = QRCode | 4 = Callback",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through phishing simulation email templates."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.TranslatePsEmailTemplateWithAIRequest": {
        "required": [
          "languages",
          "subject",
          "template"
        ],
        "type": "object",
        "properties": {
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.OpenAI.Dto.TranslationLanguageDto"
            },
            "description": "Target languages the template should be translated into."
          },
          "template": {
            "minLength": 1,
            "type": "string",
            "description": "HTML or plain-text body content of the template to translate."
          },
          "subject": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Email subject line to translate."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for translating a phishing simulation email template into multiple languages using AI."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.UpdatePsEmailTemplateRequest": {
        "required": [
          "categoryResourceId",
          "description",
          "fromAddress",
          "fromName",
          "name",
          "subject",
          "template"
        ],
        "type": "object",
        "properties": {
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.PsEmailTemplate.Dto.UpdatePsEmailTemplateLanguageDto"
            },
            "description": "Localized language variants of the email template to update.",
            "nullable": true
          },
          "barrelPayload": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.PsEmailTemplate.BarrelPayloadTemplateDto"
          },
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the email template."
          },
          "description": {
            "minLength": 1,
            "type": "string",
            "description": "Description providing context about the template's purpose and content."
          },
          "categoryResourceId": {
            "minLength": 1,
            "type": "string",
            "description": "Resource identifier of the category this template belongs to."
          },
          "difficultyResourceId": {
            "type": "string",
            "description": "Resource identifier of the difficulty level assigned to this template.",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "description": "Resource identifier of the language type for localization.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of tag labels for categorizing and searching templates.",
            "nullable": true
          },
          "subject": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Email subject line used in the phishing simulation."
          },
          "fromName": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Sender display name shown in the email header."
          },
          "fromAddress": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Sender email address used in the From field."
          },
          "ccAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of CC (carbon copy) email addresses.",
            "nullable": true
          },
          "template": {
            "maxLength": 10485760,
            "minLength": 1,
            "type": "string",
            "description": "HTML or plain-text body content of the email template."
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility and sharing rules that control which entities can access this template.",
            "nullable": true
          },
          "attachmentFiles": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "binary"
            },
            "description": "Attachment files included with the phishing simulation email.",
            "nullable": true
          },
          "phishingFile": {
            "type": "string",
            "description": "Simulated malicious file attached to the phishing email for payload testing.",
            "format": "binary",
            "nullable": true
          },
          "phishingFileType": {
            "type": "string",
            "description": "MIME type or extension identifier of the phishing attachment file.",
            "nullable": true
          },
          "isPhishingFileModified": {
            "type": "boolean",
            "description": "Whether the phishing attachment file has been modified since the last save."
          },
          "phishingFileName": {
            "type": "string",
            "description": "Original file name of the phishing attachment.",
            "nullable": true
          },
          "phishingTypeId": {
            "type": "integer",
            "description": "Phishing type identifier classifying the simulation category.",
            "format": "int32"
          },
          "prompt": {
            "type": "string",
            "description": "AI prompt text used when the template content is AI-generated.",
            "nullable": true
          },
          "isAssistedByAI": {
            "type": "boolean",
            "description": "Whether this template was generated or refined with AI assistance."
          },
          "isPlainText": {
            "type": "boolean",
            "description": "Whether the template body is plain text instead of HTML."
          },
          "toneResourceId": {
            "type": "string",
            "description": "Resource identifier of the writing tone applied to the template (e.g., formal, urgent).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing phishing simulation email template."
      },
      "KeepnetLabs.DistributedService.Rest.Models.PsTextTemplate.Search.PsTextTemplateSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through phishing simulation text (SMS) templates."
      },
      "KeepnetLabs.DistributedService.Rest.Models.QuishingTemplate.Search.QuishingTemplateSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "templateTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of template type identifiers to filter results by specific quishing template categories.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through quishing (QR code phishing) templates."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SAMLSetting.SearchSamlSettingRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records returned per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column or field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating SAML SSO configurations."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SCIM.CreateScimIntegrationRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 30,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the SCIM integration."
          },
          "groupResourceId": {
            "maxLength": 12,
            "type": "string",
            "description": "Resource identifier of the default target group for provisioned users.",
            "nullable": true
          },
          "groupBySCIMFieldResourceId": {
            "maxLength": 12,
            "type": "string",
            "description": "Resource identifier of the SCIM field used for automatic group assignment.",
            "nullable": true
          },
          "fieldMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SCIM.DTO.SCIMIntegrationFieldMappingDto"
            },
            "description": "Attribute mappings between SCIM schema fields and platform user fields.",
            "nullable": true
          },
          "syncPlatformGroup": {
            "type": "boolean",
            "description": "Whether to synchronize platform groups with the identity provider."
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new SCIM user provisioning integration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SCIM.SCIMIntegrationSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Indicates whether the sort order is ascending."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching SCIM integration records."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SCIM.UpdateSCIMIntegrationRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Updated display name of the SCIM integration.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing SCIM integration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.CreateSIEMSettingRequest": {
        "required": [
          "isForwardHistoricalAuditLog",
          "name",
          "statusId",
          "typeId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Display name of the SIEM integration."
          },
          "apiUrl": {
            "type": "string",
            "description": "Base URL of the SIEM API endpoint.",
            "nullable": true
          },
          "token": {
            "type": "string",
            "description": "Authentication token for the SIEM API.",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "description": "Identifier for the SIEM provider type.",
            "format": "int32"
          },
          "statusId": {
            "type": "integer",
            "description": "Identifier for the integration status.",
            "format": "int32"
          },
          "isForwardHistoricalAuditLog": {
            "type": "boolean",
            "description": "Whether to forward historical audit logs to the SIEM."
          },
          "serverAddress": {
            "type": "string",
            "description": "Server address for syslog-based SIEM connections.",
            "nullable": true
          },
          "port": {
            "type": "string",
            "description": "Port number for syslog-based SIEM connections.",
            "nullable": true
          },
          "connectionType": {
            "type": "string",
            "description": "Transport protocol type (e.g., TCP, UDP) for syslog connections.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new SIEM integration setting."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.Search.SIEMSettingSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through SIEM integration settings."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.TestSIEMSettingRequest": {
        "required": [
          "typeId"
        ],
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of the SIEM setting to test.",
            "nullable": true
          },
          "apiUrl": {
            "type": "string",
            "description": "Base URL of the SIEM API endpoint.",
            "nullable": true
          },
          "token": {
            "type": "string",
            "description": "Authentication token for the SIEM API.",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "description": "Identifier for the SIEM provider type.",
            "format": "int32"
          },
          "serverAddress": {
            "type": "string",
            "description": "Server address for syslog-based SIEM connections.",
            "nullable": true
          },
          "port": {
            "type": "string",
            "description": "Port number for syslog-based SIEM connections.",
            "nullable": true
          },
          "connectionType": {
            "type": "string",
            "description": "Transport protocol type (e.g., TCP, UDP) for syslog connections.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for testing connectivity to a SIEM integration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SIEMSetting.UpdateSIEMSettingRequest": {
        "required": [
          "isForwardHistoricalAuditLog",
          "name",
          "statusId",
          "typeId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Display name of the SIEM integration."
          },
          "apiUrl": {
            "type": "string",
            "description": "Base URL of the SIEM API endpoint.",
            "nullable": true
          },
          "token": {
            "type": "string",
            "description": "Authentication token for the SIEM API.",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "description": "Identifier for the SIEM provider type.",
            "format": "int32"
          },
          "statusId": {
            "type": "integer",
            "description": "Identifier for the integration status.",
            "format": "int32"
          },
          "isForwardHistoricalAuditLog": {
            "type": "boolean",
            "description": "Whether to forward historical audit logs to the SIEM."
          },
          "serverAddress": {
            "type": "string",
            "description": "Server address for syslog-based SIEM connections.",
            "nullable": true
          },
          "port": {
            "type": "string",
            "description": "Port number for syslog-based SIEM connections.",
            "nullable": true
          },
          "connectionType": {
            "type": "string",
            "description": "Transport protocol type (e.g., TCP, UDP) for syslog connections.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing SIEM integration setting."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.CreateSmtpSettingRequest": {
        "required": [
          "name",
          "password",
          "serverAddress",
          "serverPort",
          "userName"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the SMTP configuration."
          },
          "serverAddress": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "SMTP server hostname or IP address."
          },
          "serverPort": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Port number the SMTP server listens on (e.g., 25, 465, 587)."
          },
          "userName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Username for SMTP authentication."
          },
          "password": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Password for SMTP authentication."
          },
          "useAuthentication": {
            "type": "boolean",
            "description": "Whether the SMTP server requires authentication credentials."
          },
          "useSSL": {
            "type": "boolean",
            "description": "Whether to use SSL/TLS encryption for the SMTP connection."
          },
          "hasSMTPRelay": {
            "type": "boolean",
            "description": "Indicates whether the SMTP server is configured as a relay."
          },
          "replyTo": {
            "maxLength": 200,
            "type": "string",
            "description": "Reply-To email address included in outgoing messages.",
            "nullable": true
          },
          "errorTo": {
            "maxLength": 200,
            "type": "string",
            "description": "Email address that receives bounce and error notifications.",
            "nullable": true
          },
          "cc": {
            "maxLength": 200,
            "type": "string",
            "description": "CC (carbon copy) email address added to all outgoing messages.",
            "nullable": true
          },
          "bcc": {
            "maxLength": 200,
            "type": "string",
            "description": "BCC (blind carbon copy) email address added to all outgoing messages.",
            "nullable": true
          },
          "customHeader": {
            "maxLength": 2048,
            "type": "string",
            "description": "Custom email header value to append to outgoing SMTP messages.",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "Status identifier for the SMTP setting (e.g., active, inactive).",
            "format": "int32",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility and sharing rules that control which entities can access this SMTP configuration.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new SMTP server configuration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.Search.SmtpSettingSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination (1-based).",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records returned per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column or field name to order results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating SMTP server configurations."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.TestSmtpSettingRequest": {
        "required": [
          "from",
          "fromName",
          "message",
          "port",
          "serverAddress",
          "to"
        ],
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Resource identifier of an existing SMTP setting, used when testing a saved configuration.",
            "nullable": true
          },
          "serverAddress": {
            "minLength": 1,
            "type": "string",
            "description": "SMTP server hostname or IP address."
          },
          "port": {
            "type": "integer",
            "description": "Port number the SMTP server listens on.",
            "format": "int32"
          },
          "username": {
            "type": "string",
            "description": "Username for SMTP authentication.",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "Password for SMTP authentication.",
            "nullable": true
          },
          "useAuthentication": {
            "type": "boolean",
            "description": "Whether the SMTP server requires authentication credentials."
          },
          "useSsl": {
            "type": "boolean",
            "description": "Whether to use SSL/TLS encryption for the SMTP connection."
          },
          "from": {
            "minLength": 1,
            "type": "string",
            "description": "Sender email address for the test message."
          },
          "fromName": {
            "minLength": 1,
            "type": "string",
            "description": "Display name of the sender for the test message."
          },
          "to": {
            "minLength": 1,
            "type": "string",
            "description": "Recipient email address for the test message."
          },
          "message": {
            "minLength": 1,
            "type": "string",
            "description": "Body content of the test email message."
          },
          "customHeader": {
            "type": "string",
            "description": "Custom email header value to include in the test message.",
            "nullable": true
          },
          "phishingTypeId": {
            "type": "integer",
            "description": "Phishing type identifier controlling the context of the test (defaults to 1 for standard phishing). Allowed values: 1 = Email | 2 = Sms | 3 = QRCode | 4 = Callback",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for testing SMTP connectivity by sending a test email with inline server details."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.TestSmtpSettingWithResourceIdRequest": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "description": "Sender email address for the test message.",
            "nullable": true
          },
          "fromName": {
            "type": "string",
            "description": "Display name of the sender for the test message.",
            "nullable": true
          },
          "to": {
            "type": "string",
            "description": "Recipient email address for the test message.",
            "nullable": true
          },
          "message": {
            "type": "string",
            "description": "Body content of the test email message.",
            "nullable": true
          },
          "phishingTypeId": {
            "type": "integer",
            "description": "Phishing type identifier controlling the context of the test (defaults to 1 for standard phishing). Allowed values: 1 = Email | 2 = Sms | 3 = QRCode | 4 = Callback",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for testing an existing SMTP configuration identified by its resource ID."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SMTPSetting.UpdateSmtpSettingRequest": {
        "required": [
          "name",
          "password",
          "serverAddress",
          "serverPort",
          "userName"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name for the SMTP configuration."
          },
          "serverAddress": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "SMTP server hostname or IP address."
          },
          "serverPort": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Port number the SMTP server listens on (e.g., 25, 465, 587)."
          },
          "userName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Username for SMTP authentication."
          },
          "password": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Password for SMTP authentication."
          },
          "useAuthentication": {
            "type": "boolean",
            "description": "Whether the SMTP server requires authentication credentials."
          },
          "useSSL": {
            "type": "boolean",
            "description": "Whether to use SSL/TLS encryption for the SMTP connection."
          },
          "hasSMTPRelay": {
            "type": "boolean",
            "description": "Indicates whether the SMTP server is configured as a relay."
          },
          "replyTo": {
            "maxLength": 200,
            "type": "string",
            "description": "Reply-To email address included in outgoing messages.",
            "nullable": true
          },
          "errorTo": {
            "maxLength": 200,
            "type": "string",
            "description": "Email address that receives bounce and error notifications.",
            "nullable": true
          },
          "cc": {
            "maxLength": 200,
            "type": "string",
            "description": "CC (carbon copy) email address added to all outgoing messages.",
            "nullable": true
          },
          "bcc": {
            "maxLength": 200,
            "type": "string",
            "description": "BCC (blind carbon copy) email address added to all outgoing messages.",
            "nullable": true
          },
          "customHeader": {
            "maxLength": 2048,
            "type": "string",
            "description": "Custom email header value to append to outgoing SMTP messages.",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "Status identifier for the SMTP setting (e.g., active, inactive).",
            "format": "int32",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility and sharing rules that control which entities can access this SMTP configuration.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing SMTP server configuration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SbmBehaviourNudge.SendBehaviourNudgeRequest": {
        "type": "object",
        "properties": {
          "targetUserResourceId": {
            "type": "string",
            "description": "The person to nudge. A resource id belonging to another company is answered as not found\r\nrather than forbidden, so this endpoint cannot be used to find out who exists elsewhere.",
            "nullable": true
          },
          "channel": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SbmBehaviourNudge.BehaviourNudgeChannel"
          },
          "templateKey": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SbmBehaviourNudge.BehaviourNudgeTemplateKey"
          },
          "eventIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "description": "The behaviour events this message is about. Each is checked against the behaviour read model\r\nand must belong to this company and this person - the rule that stops a message asserting\r\nsomething the person never did.",
            "nullable": true
          },
          "agentMessage": {
            "type": "string",
            "description": "Optional paragraph, rendered into the template's message slot. Plain text only: markup,\r\nmerge tags and links are refused rather than stripped, so a caller learns the rule instead\r\nof silently having its text altered.",
            "nullable": true
          },
          "requestKey": {
            "type": "string",
            "description": "Idempotency key. Repeating a request with the same key returns the first answer and sends\r\nnothing further - the usual source of duplicates is a retried call or a button pressed\r\ntwice.",
            "nullable": true
          },
          "dryRun": {
            "type": "boolean",
            "description": "Validates, applies every rule and renders the message without sending it. Nothing is recorded,\r\nnothing is queued, and no cooldown starts - so a caller can preview the wording, or show it to\r\na person for approval, before anybody receives it."
          },
          "previewHash": {
            "type": "string",
            "description": "Optional. The `previewHash` the approved dry run returned. When present, the send is\r\nrefused with 409 and `PreviewStale` unless it would deliver exactly what that dry run\r\nshowed.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to send one person a message about behaviours already recorded for them.\r\n            \r\nThere is no subject and no body, and no email address either. The copy comes from the company's\r\nown template and the address is resolved from the resource id, which is what stops a caller\r\nwriting whatever it likes to whomever it likes."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SbmCube.SbmCubeSqlCredentialRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "What the administrator calls this credential: \"Exec weekly report\", \"SOC dashboard\".\r\n            \r\nRequired, because the reason to hold more than one is knowing which consumer each belongs to,\r\nso that a single Power BI can be cut off without breaking the others. A list of unnamed rows\r\nwould be worse than the one credential this replaces.\r\n            \r\n100 characters, matching the column. Validated in the service as well as here: the annotation\r\nanswers a malformed request and the service answers a name that is only whitespace, which\r\npasses Required and is not a name."
          }
        },
        "additionalProperties": false,
        "description": "What a caller sends to issue an additional BYO Power BI credential.\r\n            \r\nA name and nothing else. The company is never taken from the body — it comes from the resolved\r\nserver-side company context, after the company-switch header has been validated — because a\r\ncompany id a caller could type is a cross-tenant credential waiting to be minted."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SbmDashboardWidgetsOrdering.CreateSbmDashboardWidgetsOrderingRequest": {
        "type": "object",
        "properties": {
          "settings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.Dashboard.Dto.DashboardSetting"
            },
            "description": "The widgets on the dashboard, each with the grid position it was left in. A widget the reader\r\nremoved is absent from the list rather than flagged, so the list is the whole arrangement.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to create or update the arrangement of the Secure Behaviour Dashboard's widgets."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthLoginRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "Username credential for authentication.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for Security Growth platform login."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthLoginResponse": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the authenticated user.",
            "nullable": true
          },
          "saml": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthSamlResponse"
          }
        },
        "additionalProperties": false,
        "description": "Response model containing login result and SAML configuration."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthMagicLinkSendRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address to send the magic link to.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for sending a magic link to a user's email."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthMagicLinkSendResponse": {
        "type": "object",
        "properties": {
          "ml": {
            "type": "string",
            "description": "Magic link token for passwordless authentication.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response model containing a magic link token for passwordless login."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SecurityGrowth.SecurityGrowthSamlResponse": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "description": "Name of the SAML identity provider.",
            "nullable": true
          },
          "redirectUrl": {
            "type": "string",
            "description": "URL to redirect the user to for SAML authentication.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "SAML provider details for Security Growth SSO authentication."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SmishingCampaignJob.ExportSmishingCampaignJobRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 25.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "reportAllPages": {
            "type": "boolean",
            "description": "When true, all pages of data are exported regardless of pagination settings."
          },
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportType"
          },
          "smishingCampaignFrequencyGroup": {
            "type": "integer",
            "description": "Optional frequency group filter for recurring smishing campaigns. Defaults to 0 (all groups).",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for exporting smishing (SMS phishing) campaign job data with filtering, pagination, and format options."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemInfo.SystemInfoSummaryData": {
        "type": "object",
        "properties": {
          "versionInfo": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          },
          "companyLicense": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          },
          "company": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.DataResponse"
          }
        },
        "additionalProperties": false,
        "description": "Aggregated summary of system information including version, license, and company details."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemRole.CreateSystemRoleRequest": {
        "required": [
          "description",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the system role."
          },
          "description": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string",
            "description": "Description of the role's purpose and scope."
          },
          "permissionResourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the permissions granted to this role.",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Visibility and sharing rules that control which entities can use this role.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new system role with permission assignments."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemRole.SearchSystemRoleRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Indicates whether the sort order is ascending."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching system roles with pagination and sorting."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemRole.UpdateSystemRoleRequest": {
        "required": [
          "description",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the system role."
          },
          "description": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string",
            "description": "Descriptive text explaining the purpose of the role."
          },
          "permissionResourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of permission resource identifiers assigned to this role.",
            "nullable": true
          },
          "availableForRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.EntityAvailableFor.Dto.EntityAvailableForRequest"
            },
            "description": "Entity-level access restrictions defining which entities this role can manage.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing system role definition."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.AddToRoleRequest": {
        "type": "object",
        "properties": {
          "userResourceId": {
            "type": "string",
            "description": "Resource identifier of the system user to assign to the role.",
            "nullable": true
          },
          "roleResourceId": {
            "type": "string",
            "description": "Resource identifier of the role to assign to the user.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for assigning a system user to a specific role."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.ChangePasswordRequest": {
        "type": "object",
        "properties": {
          "currentPassword": {
            "type": "string",
            "description": "The user's current password, used to verify identity before allowing the change.",
            "nullable": true
          },
          "newPassword": {
            "type": "string",
            "description": "The new password to set for the system user.",
            "nullable": true
          },
          "confirmNewPassword": {
            "type": "string",
            "description": "Confirmation of the new password. Must match KeepnetLabs.DistributedService.Rest.Models.SystemUser.ChangePasswordRequest.NewPassword.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for changing the currently authenticated system user's password."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.CreatePasswordRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Invitation token received via email, used to authorize the password creation.",
            "nullable": true
          },
          "newPassword": {
            "type": "string",
            "description": "The password to set for the system user.",
            "nullable": true
          },
          "confirmNewPassword": {
            "type": "string",
            "description": "Confirmation of the new password. Must match KeepnetLabs.DistributedService.Rest.Models.SystemUser.CreatePasswordRequest.NewPassword.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating an initial password for a newly invited system user."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.CreateSystemUserRequest": {
        "required": [
          "email",
          "firstName",
          "lastName",
          "phoneNumber"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 40,
            "minLength": 1,
            "type": "string",
            "description": "First name of the system user. Required, max 40 characters."
          },
          "lastName": {
            "maxLength": 40,
            "minLength": 1,
            "type": "string",
            "description": "Last name of the system user. Required, max 40 characters."
          },
          "email": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Email address of the system user. Must be unique within the company. Required, max 320 characters."
          },
          "phoneNumber": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "description": "Phone number of the system user. Required, max 20 characters."
          },
          "statusId": {
            "type": "integer",
            "description": "Status identifier indicating whether the user is active or inactive.",
            "format": "int32"
          },
          "roleResourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of role resource identifiers to assign to the newly created user.",
            "nullable": true
          },
          "companyResourceId": {
            "type": "string",
            "description": "Resource identifier of the company to which this user belongs.",
            "nullable": true
          },
          "bypassSsoRedirect": {
            "type": "boolean",
            "description": "When true, this user will bypass SSO/SAML redirect and use password-based login even if SSO is configured for the company domain."
          },
          "bypassMfa": {
            "type": "boolean",
            "description": "When true, this user will bypass MFA verification during login even if MFA is enforced platform-wide."
          },
          "bypassIpRestriction": {
            "type": "boolean",
            "description": "When true, this user will bypass company-level IP restriction checks."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a new system user with role assignments."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.DisableMfaRequest": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Current verification code from the authenticator app, used to confirm the MFA disable action.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for disabling multi-factor authentication (MFA) for a system user."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.ExportSystemUserRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          },
          "reportAllPages": {
            "type": "boolean",
            "description": "When true, all pages of data are exported regardless of pagination settings."
          },
          "exportType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Export.ExportType"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for exporting system user data with filtering, pagination, and format options."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.GetMfaRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the system user requesting MFA setup information.",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "Current password of the system user, used to verify identity before revealing MFA setup details.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for retrieving the MFA setup details (e.g., QR code) for a system user."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.GetNotificationSettingRequest": {
        "type": "object",
        "properties": {
          "entityResourceId": {
            "type": "string",
            "description": "Resource identifier of the entity whose notification settings are being retrieved.",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "description": "Notification type identifier that specifies the category of notification to retrieve.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for retrieving notification settings for a specific entity and notification type."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.ResetPasswordRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Password reset token received via email, used to authorize the password change.",
            "nullable": true
          },
          "newPassword": {
            "type": "string",
            "description": "The new password to set for the system user.",
            "nullable": true
          },
          "confirmNewPassword": {
            "type": "string",
            "description": "Confirmation of the new password. Must match KeepnetLabs.DistributedService.Rest.Models.SystemUser.ResetPasswordRequest.NewPassword.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for resetting a system user's password using a reset token."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.ResyncMfaRequest": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Current verification code from the authenticator app, used to resynchronize the MFA time counter.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for resynchronizing the MFA authenticator for a system user."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.SearchSystemUserRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for pagination. Defaults to 1.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page. Defaults to 5.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "When true, results are sorted in ascending order; otherwise descending."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for searching and paginating through system users."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.SendMfaRecoverySmsRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the system user requesting MFA recovery.",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "Current password of the system user, used to verify identity before sending the recovery SMS.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for sending an MFA recovery SMS to the user's registered phone number."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.SendPasswordResetLinkRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the system user who will receive the password reset link.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for sending a password reset link to a system user's email."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetMfaRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the system user enabling MFA.",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "Current password of the system user, used to verify identity before enabling MFA.",
            "nullable": true
          },
          "code": {
            "type": "string",
            "description": "Verification code from the authenticator app to confirm MFA setup.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for enabling multi-factor authentication (MFA) for a system user."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetNotificationSettingRequest": {
        "type": "object",
        "properties": {
          "entityResourceId": {
            "type": "string",
            "description": "Resource identifier of the entity whose notification settings are being configured.",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "description": "Notification type identifier that specifies the category of notification being configured.",
            "format": "int32"
          },
          "isSMSEnabled": {
            "type": "boolean",
            "description": "When true, SMS notifications are enabled for this notification type."
          },
          "isEmailEnabled": {
            "type": "boolean",
            "description": "When true, email notifications are enabled for this notification type."
          },
          "isDashboardEnabled": {
            "type": "boolean",
            "description": "When true, dashboard notifications are enabled for this notification type."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for configuring notification preferences for a specific entity and notification type."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.SetSystemUserSettingsRequest": {
        "type": "object",
        "properties": {
          "timeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the user's preferred time zone (e.g., \"Europe/Istanbul\").",
            "nullable": true
          },
          "dateFormat": {
            "type": "string",
            "description": "Preferred date format pattern (e.g., \"dd/MM/yyyy\" or \"MM/dd/yyyy\").",
            "nullable": true
          },
          "timeFormat": {
            "type": "string",
            "description": "Preferred time format pattern (e.g., \"HH:mm\" for 24-hour or \"hh:mm tt\" for 12-hour).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating a system user's locale and display preferences."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.SystemUserDeleteRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of system user resource identifiers to delete.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "When true, all system users matching the filter are selected for deletion."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of system user resource identifiers to exclude from deletion when KeepnetLabs.DistributedService.Rest.Models.SystemUser.SystemUserDeleteRequest.SelectAll is true.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          }
        },
        "additionalProperties": false,
        "description": "Request payload for deleting one or more system users, with support for bulk selection."
      },
      "KeepnetLabs.DistributedService.Rest.Models.SystemUser.UpdateSystemUserRequest": {
        "required": [
          "email",
          "firstName",
          "lastName",
          "phoneNumber"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 40,
            "minLength": 1,
            "type": "string",
            "description": "Updated first name of the system user. Required, max 40 characters."
          },
          "lastName": {
            "maxLength": 40,
            "minLength": 1,
            "type": "string",
            "description": "Updated last name of the system user. Required, max 40 characters."
          },
          "email": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Updated email address of the system user. Required, max 320 characters."
          },
          "phoneNumber": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "description": "Updated phone number of the system user. Required, max 20 characters."
          },
          "statusId": {
            "type": "integer",
            "description": "Status identifier indicating whether the user is active or inactive.",
            "format": "int32"
          },
          "roleResourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Updated list of role resource identifiers assigned to the user.",
            "nullable": true
          },
          "bypassSsoRedirect": {
            "type": "boolean",
            "description": "When true, this user will bypass SSO/SAML redirect and use password-based login even if SSO is configured for the company domain."
          },
          "bypassMfa": {
            "type": "boolean",
            "description": "When true, this user will bypass MFA verification during login even if MFA is enforced platform-wide."
          },
          "bypassIpRestriction": {
            "type": "boolean",
            "description": "When true, this user will bypass company-level IP restriction checks."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for updating an existing system user's profile and role assignments."
      },
      "KeepnetLabs.DistributedService.Rest.Models.Tag.SearchTagRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Indicates whether the sort order is ascending."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching tags with pagination and sorting."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetGroup.CreateTargetGroupRequest": {
        "required": [
          "name",
          "priority"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the target group."
          },
          "priority": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupPriority"
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new target group."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetGroup.CreateTargetGroupUsersRequest": {
        "type": "object",
        "properties": {
          "targetUserResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the target users to add.",
            "nullable": true
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the target groups to add users to.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "When true, selects all users matching the filter instead of the explicit list."
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          },
          "excludedResourceIdList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers to exclude from a select-all operation.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding users to one or more target groups."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetGroup.DeleteTargetGroupUsersRequest": {
        "type": "object",
        "properties": {
          "targetUserResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the target users to remove.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for removing users from a target group."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetGroup.GetTargetGroupByNameRequest": {
        "type": "object",
        "properties": {
          "groupName": {
            "type": "string",
            "description": "Group name or partial name to search for.",
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Indicates whether the sort order is ascending."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching target groups by name with pagination."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetGroup.GetTargetGroupUserCountDetailRequest": {
        "type": "object",
        "properties": {
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the target groups to query.",
            "nullable": true
          },
          "scenarioResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the scenarios to calculate user counts for.",
            "nullable": true
          },
          "categoryFilter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          },
          "sendUserPreferredLanguage": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.PhishingCampaign.PhishingCampaignSendUserPreferredLanguageType"
          }
        },
        "additionalProperties": false,
        "description": "Request model for retrieving target group user count details per scenario."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupPriority": {
        "type": "string",
        "description": "Priority classification levels for target groups."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Indicates whether the sort order is ascending."
          },
          "selectTargetUserResourceIds": {
            "type": "string",
            "description": "Comma-separated target user resource identifiers to pre-select.",
            "nullable": true
          },
          "systemGeneratedGroups": {
            "type": "boolean",
            "description": "When true, includes system-generated groups in the results."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching target groups with filtering and pagination."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupUsersSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Indicates whether the sort order is ascending."
          },
          "excludeGroupUsers": {
            "type": "boolean",
            "description": "When true, returns users not in the group instead of group members."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching users within a target group."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetGroup.UpdateTargetGroupRequest": {
        "required": [
          "name",
          "priority"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Updated display name of the target group."
          },
          "priority": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetGroup.TargetGroupPriority"
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether the target group is active. Null leaves the current value unchanged.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing target group."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetUser.CreateTargetUserFieldMappingRequest": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "description": "Unique transaction identifier for the file upload session.",
            "nullable": true
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the target groups to assign imported users to.",
            "nullable": true
          },
          "fieldMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.TargetUser.TargetUserFieldMapping"
            },
            "description": "Mappings between file columns and target user fields.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for mapping uploaded file fields to target user properties."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetUser.CreateTargetUserRequest": {
        "required": [
          "email",
          "phoneNumber"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Email address of the target user."
          },
          "firstName": {
            "maxLength": 256,
            "type": "string",
            "description": "First name of the target user.",
            "nullable": true
          },
          "lastName": {
            "maxLength": 256,
            "type": "string",
            "description": "Last name of the target user.",
            "nullable": true
          },
          "department": {
            "maxLength": 256,
            "type": "string",
            "description": "Department the target user belongs to.",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.TargetUserEnum+TargetUserPriority"
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether the target user account is active."
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TargetUserCustomFieldValueDto"
            },
            "description": "Custom field values associated with the target user.",
            "nullable": true
          },
          "phoneNumber": {
            "minLength": 1,
            "type": "string",
            "description": "Phone number of the target user."
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the target groups this user belongs to.",
            "nullable": true
          },
          "timeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the target user.",
            "nullable": true
          },
          "preferredLanguageId": {
            "type": "string",
            "description": "Preferred language identifier for localized content delivery.",
            "nullable": true
          },
          "managerFirstName": {
            "maxLength": 256,
            "type": "string",
            "description": "First name of the target user's manager.",
            "nullable": true
          },
          "managerLastName": {
            "maxLength": 256,
            "type": "string",
            "description": "Last name of the target user's manager.",
            "nullable": true
          },
          "managerEmail": {
            "maxLength": 320,
            "type": "string",
            "description": "Email address of the target user's manager.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new target user."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetUser.GetTargetUserByEmailRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address to search for.",
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Indicates whether the sort order is ascending."
          }
        },
        "additionalProperties": false,
        "description": "Request model for looking up target users by email address."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetUser.SearchTargetGroupsByUserSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Indicates whether the sort order is ascending."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching target groups that a specific user belongs to."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetUser.TargetUserDeleteRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the target users to delete.",
            "nullable": true
          },
          "selectAll": {
            "type": "boolean",
            "description": "When true, selects all users matching the filter for deletion."
          },
          "excludedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers to exclude from a select-all deletion.",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          }
        },
        "additionalProperties": false,
        "description": "Request model for bulk-deleting target users."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetUser.TargetUserSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Indicates whether the sort order is ascending."
          },
          "newVersion": {
            "type": "boolean",
            "description": "When true, uses the optimized query path for search."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching target users with filtering and pagination."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetUser.UpdateTargetUserRequest": {
        "required": [
          "email",
          "phoneNumber"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string",
            "description": "Email address of the target user."
          },
          "firstName": {
            "maxLength": 40,
            "type": "string",
            "description": "First name of the target user.",
            "nullable": true
          },
          "lastName": {
            "maxLength": 40,
            "type": "string",
            "description": "Last name of the target user.",
            "nullable": true
          },
          "department": {
            "maxLength": 64,
            "type": "string",
            "description": "Department the target user belongs to.",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.TargetUserEnum+TargetUserPriority"
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether the target user account is active."
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TargetUserCustomFieldValueDto"
            },
            "description": "Custom field values associated with the target user.",
            "nullable": true
          },
          "phoneNumber": {
            "minLength": 1,
            "type": "string",
            "description": "Phone number of the target user."
          },
          "targetGroupResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the target groups this user belongs to.",
            "nullable": true
          },
          "timeZoneId": {
            "type": "string",
            "description": "IANA time zone identifier for the target user.",
            "nullable": true
          },
          "preferredLanguageId": {
            "type": "string",
            "description": "Preferred language identifier for localized content delivery.",
            "nullable": true
          },
          "managerFirstName": {
            "maxLength": 40,
            "type": "string",
            "description": "First name of the target user's manager.",
            "nullable": true
          },
          "managerLastName": {
            "maxLength": 40,
            "type": "string",
            "description": "Last name of the target user's manager.",
            "nullable": true
          },
          "managerEmail": {
            "maxLength": 320,
            "type": "string",
            "description": "Email address of the target user's manager.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing target user."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.BulkUpdateTargetUserCustomFieldRequest": {
        "type": "object",
        "properties": {
          "targetUserCustomFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.TargetUserCustomFieldRequest"
            },
            "description": "Collection of custom field definitions to update.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating multiple custom fields in a single operation."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.CreateTargetUserCustomFieldRequest": {
        "required": [
          "fieldDataType",
          "name",
          "ownerType"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the custom field."
          },
          "ownerType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.TargetUserCustomFieldOwner"
          },
          "fieldDataType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.TargetUserCustomFieldDataType"
          },
          "targetGroupResourceId": {
            "type": "string",
            "description": "Resource identifier of the target group this field is scoped to, when owner is group-level.",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether the custom field is active and visible."
          },
          "sortOrder": {
            "type": "integer",
            "description": "Display order position of the custom field.",
            "format": "int32"
          },
          "isRequired": {
            "type": "boolean",
            "description": "Whether a value is required for this custom field."
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new custom field for target users."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.TargetUserCustomFieldDataType": {
        "type": "string",
        "description": "Supported data types for target user custom field values."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.TargetUserCustomFieldOwner": {
        "type": "string",
        "description": "Defines the ownership scope of a target user custom field."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.TargetUserCustomFieldRequest": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Unique resource identifier of the custom field.",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "Display name of the custom field.",
            "nullable": true
          },
          "ownerType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.TargetUserCustomFieldOwner"
          },
          "fieldDataType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.TargetUserCustomFieldDataType"
          },
          "targetGroupResourceId": {
            "type": "string",
            "description": "Resource identifier of the target group this field is scoped to.",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether the custom field is active and visible."
          },
          "sortOrder": {
            "type": "integer",
            "description": "Display order position of the custom field.",
            "format": "int32"
          },
          "isRequired": {
            "type": "boolean",
            "description": "Whether a value is required for this custom field."
          }
        },
        "additionalProperties": false,
        "description": "Represents a single custom field definition for a target user."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.UpdateTargetUserCustomFieldRequest": {
        "required": [
          "fieldDataType",
          "name",
          "resourceId"
        ],
        "type": "object",
        "properties": {
          "resourceId": {
            "minLength": 1,
            "type": "string",
            "description": "Unique resource identifier of the custom field to update."
          },
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Updated display name of the custom field."
          },
          "fieldDataType": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.TargetUserCustomField.TargetUserCustomFieldDataType"
          },
          "targetGroupResourceId": {
            "type": "string",
            "description": "Resource identifier of the target group this field is scoped to.",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether the custom field is active and visible."
          },
          "sortOrder": {
            "type": "integer",
            "description": "Display order position of the custom field.",
            "format": "int32"
          },
          "isRequired": {
            "type": "boolean",
            "description": "Whether a value is required for this custom field."
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing custom field for target users."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TmpTargetUser.TmpTargetUserImportRequest": {
        "type": "object",
        "properties": {
          "importType": {
            "type": "string",
            "description": "Import strategy type (e.g., merge, overwrite).",
            "nullable": true
          },
          "selectedResourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resource identifiers of the temporary users to import. Empty imports all.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for importing staged temporary target users into the system."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TmpTargetUser.TmpTargetUserSearchRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.DistributedService.Rest.Models.Filter.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "description": "Page number for paginated results.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of records per page.",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "description": "Column name to sort the results by.",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "description": "Indicates whether the sort order is ascending."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching temporary (staged) target users pending import."
      },
      "KeepnetLabs.DistributedService.Rest.Models.TrainingReport.SearchTrainingUsersByDateRangeRequest": {
        "required": [
          "filter"
        ],
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "groupByUser": {
            "type": "boolean",
            "description": "If true, groups all activities by user (shows total counts per user)\r\nIf false (default), shows each activity as separate row"
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.Common.Core.Models.Filter"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "orderBy": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.DistributedService.Rest.Models.WhiteLabeling.CheckDNSRequest": {
        "type": "object",
        "properties": {
          "mainDomainUrl": {
            "type": "string",
            "description": "Custom domain URL whose DNS records should be validated.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for verifying DNS record configuration for a white-labeled domain."
      },
      "KeepnetLabs.Domain.Entities.AnalysisEngine.AnalysisExclusionType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.AnalysisEngine.AttachmentExtensionType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.AuditLog.AuditLogOperation": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.DnsService.DnsServiceProviderType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Enrollment.ShowByExamStatusEnum": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.EntityAvailableFor.EntityAvailableForType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Google.Method": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Google.ProvisioningConfig": {
        "type": "object",
        "properties": {
          "source": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Google.Source"
          },
          "selected": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "sync": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Google.Sync"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Entities.Google.Source": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Google.Sync": {
        "type": "object",
        "properties": {
          "method": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Google.Method"
          },
          "details": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Entities.Investigation.InvestigationActionType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Investigation.InvestigationAutoAction": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.InvestigationActionType"
          },
          "isPermanentDelete": {
            "type": "boolean"
          },
          "warningMessage": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Entities.Investigation.InvestigationPriority": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Investigation.InvestigationStatus": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Investigation.InvestigationType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Investigation.ScanConfiguration": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.ScanType"
          },
          "mailConfigurationResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Entities.Investigation.ScanConfigurationDetail": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.ScanType"
          },
          "typeId": {
            "type": "integer",
            "format": "int32"
          },
          "mailConfigurationResourceId": {
            "type": "string",
            "nullable": true
          },
          "mailConfigurationName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Entities.Investigation.ScanConfigurationDetailDto": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.Investigation.ScanType"
          },
          "typeId": {
            "type": "integer",
            "format": "int32"
          },
          "typeText": {
            "type": "string",
            "nullable": true
          },
          "mailConfigurationResourceId": {
            "type": "string",
            "nullable": true
          },
          "mailConfigurationName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Entities.Investigation.ScanType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Investigation.TargetUserType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Notifications.NotificationActivityLogStatus": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Notifications.NotificationActivityLogType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.NotifiedEmail.NotifiedEmailResult": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.NotifiedEmail.NotifiedEmailStatus": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.NotifiedEmail.NotifiedEmailUrlQrCodeSource": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.PhishingCampaign.PhishingCampaignFrequency": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.PhishingCampaign.PhishingCampaignSendUserPreferredLanguageType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.PhishingScenario.PhishingScenarioDifficultyType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Playbook.PlaybookActionStatusType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Playbook.PlaybookInvestigationActionNotifyTargetUserType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Playbook.PlaybookInvestigationActionType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Playbook.PlaybookInvestigationDurationType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Playbook.PlaybookInvestigationEmailDateRangeType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Playbook.PlaybookMarkType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Playbook.PlaybookNotifyTargetUserType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.Playbook.PlaybookPriority": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.TargetGroup.TargetGroupPriority": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.TargetUser.TargetUserFieldMapping": {
        "type": "object",
        "properties": {
          "excelColumnName": {
            "type": "string",
            "nullable": true
          },
          "fieldName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Entities.TargetUserCustomField.TargetUserCustomFieldDataType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.TargetUserCustomField.TargetUserCustomFieldOwner": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Entities.TmpTargetUser.ValidationError": {
        "type": "object",
        "properties": {
          "fieldName": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Entities.Vishing.VishingTemplateStepInputType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Enums.AllowListEnum+Status": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Enums.LDAPConfigEnum+ImportType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Enums.LDAPConfigEnum+Status": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Enums.PhishingCampaignJobUserActivityType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Enums.PhishingDetailActionTypeEnum+PhishingDetailActionType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Enums.ReportSchedulingFrequency": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Enums.ReportType": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Enums.TargetUserEnum+TargetUserPriority": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Enums.UserStatusFilter": {
        "type": "string"
      },
      "KeepnetLabs.Domain.Models.TrainingReport.TargetUserCustomFieldValueDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "dataType": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "timestampValue": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Models.TrainingReport.TrainingActivityUsersSearchView": {
        "type": "object",
        "properties": {
          "targetUserId": {
            "type": "integer",
            "format": "int32"
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "enrollmentName": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "trainingStatus": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "enrolledOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "startedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "completedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastOpenedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastClickedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "openedTrainingEmail": {
            "type": "integer",
            "format": "int32"
          },
          "clickedTrainingEmail": {
            "type": "integer",
            "format": "int32"
          },
          "examScore": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "completedCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "notCompletedCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "totalRowCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Models.TrainingReport.TrainingReportClickedLinkSearchView": {
        "type": "object",
        "properties": {
          "lastClickedDate": {
            "type": "string",
            "format": "date-time"
          },
          "clickedCount": {
            "type": "integer",
            "format": "int32"
          },
          "targetUserStatus": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "targetUserIsDeleted": {
            "type": "boolean"
          },
          "userStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.UserStatusFilter"
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "isMainScore": {
            "type": "boolean"
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Models.TrainingReport.TrainingReportExamResultsSearchView": {
        "type": "object",
        "properties": {
          "examResultDate": {
            "type": "string",
            "format": "date-time"
          },
          "firstCompletionDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "examScore": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "mainScore": {
            "type": "string",
            "nullable": true
          },
          "examStatus": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "targetUserStatus": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "targetUserIsDeleted": {
            "type": "boolean"
          },
          "userStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.UserStatusFilter"
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "isMainScore": {
            "type": "boolean"
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Models.TrainingReport.TrainingReportNoResponseSearchView": {
        "type": "object",
        "properties": {
          "lastSendDate": {
            "type": "string",
            "format": "date-time"
          },
          "targetUserStatus": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "targetUserIsDeleted": {
            "type": "boolean"
          },
          "userStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.UserStatusFilter"
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "isMainScore": {
            "type": "boolean"
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Models.TrainingReport.TrainingReportOpenedEmailSearchView": {
        "type": "object",
        "properties": {
          "lastOpenedDate": {
            "type": "string",
            "format": "date-time"
          },
          "openedCount": {
            "type": "integer",
            "format": "int32"
          },
          "targetUserStatus": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "targetUserIsDeleted": {
            "type": "boolean"
          },
          "userStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.UserStatusFilter"
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "isMainScore": {
            "type": "boolean"
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Models.TrainingReport.TrainingReportProgressSearchView": {
        "type": "object",
        "properties": {
          "enrollmentDate": {
            "type": "string",
            "format": "date-time"
          },
          "sessionStartDate": {
            "type": "string",
            "format": "date-time"
          },
          "sessionEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sessionCount": {
            "type": "integer",
            "format": "int32"
          },
          "progress": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "targetUserStatus": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "targetUserIsDeleted": {
            "type": "boolean"
          },
          "userStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.UserStatusFilter"
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "isMainScore": {
            "type": "boolean"
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Models.TrainingReport.TrainingReportReminderMailSearchDTO": {
        "type": "object",
        "properties": {
          "userEmailId": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "emailDelivery": {
            "type": "string",
            "nullable": true
          },
          "firstSendDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastSendDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastSendingStatus": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Models.TrainingReport.TrainingReportSendingReportSearchView": {
        "type": "object",
        "properties": {
          "emailDelivery": {
            "type": "string",
            "nullable": true
          },
          "firstSendDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastSendDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastSendingStatus": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "targetUserStatus": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "targetUserIsDeleted": {
            "type": "boolean"
          },
          "userStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.UserStatusFilter"
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "isMainScore": {
            "type": "boolean"
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Domain.Models.TrainingReport.TrainingReportUsersSearchView": {
        "type": "object",
        "properties": {
          "firstCompletionDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastInteractionDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "deliveryType": {
            "type": "string",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "currentStep": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "examStatusName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "examScore": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "lastInteractedStep": {
            "type": "string",
            "nullable": true
          },
          "targetUserStatus": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "targetUserIsDeleted": {
            "type": "boolean"
          },
          "userStatus": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.UserStatusFilter"
          },
          "enrollmentId": {
            "type": "string",
            "nullable": true
          },
          "targetUserResourceId": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "isMainScore": {
            "type": "boolean"
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Models.TrainingReport.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.EmailParser.EmlParser+Uri": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "orderNumber": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Import.Core.Dto.ImportFileType": {
        "type": "string"
      },
      "KeepnetLabs.LDAP.ApplicationService.Models.ActiveDirectoryGroup": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "filterValue": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.LDAP.ApplicationService.Models.LDAPFieldDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.LDAP.ApplicationService.Models.LDAPFieldListResult": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.LDAP.ApplicationService.Models.LDAPFieldDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.LDAP.ApplicationService.Models.LDAPMappingModel": {
        "type": "object",
        "properties": {
          "customFieldResourceId": {
            "type": "string",
            "nullable": true
          },
          "ldapFieldResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.LDAP.ApplicationService.Models.LDAPMappingStatusResult": {
        "type": "object",
        "properties": {
          "newUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "existingUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "invalidUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "result": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.LDAP.ApplicationService.Models.LDAPScheduleDetailResult": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "ldapSettingResourceId": {
            "type": "string",
            "nullable": true
          },
          "importType": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.LDAPConfigEnum+ImportType"
          },
          "targetGroupResourceId": {
            "type": "string",
            "nullable": true
          },
          "filter": {
            "$ref": "#/components/schemas/KeepnetLabs.ApplicationService.SearchBuilder.Filter"
          },
          "isSchedule": {
            "type": "boolean"
          },
          "schedule": {
            "$ref": "#/components/schemas/KeepnetLabs.LDAP.ApplicationService.Models.LDAPScheduleResult"
          },
          "groupFilterValues": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.LDAP.ApplicationService.Models.LDAPScheduleResult": {
        "type": "object",
        "properties": {
          "time": {
            "type": "string",
            "format": "date-time"
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.LDAP.ApplicationService.Models.LDAPScheduleSearchResult": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "nextRunTime": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.LDAPConfigEnum+Status"
          },
          "count": {
            "type": "integer",
            "format": "int32"
          },
          "lastRunTime": {
            "type": "string",
            "format": "date-time"
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.LDAP.ApplicationService.Models.LDAPSettingConnectionResult": {
        "type": "object",
        "properties": {
          "isSuccess": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.LDAP.ApplicationService.Models.LDAPSettingCreateMappingResult": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.LDAP.ApplicationService.Models.LDAPSettingDetailResult": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "username": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "baseDN": {
            "type": "string",
            "nullable": true
          },
          "relativeDN": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "hashPassword": {
            "type": "string",
            "nullable": true
          },
          "fieldMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.LDAP.ApplicationService.Models.LDAPMappingModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.LDAP.ApplicationService.Models.TargetGroupForLDAPSelectBoxResult": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "isSelectable": {
            "type": "boolean"
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Mailer.Domain.Dtos.Worker.DecSettingDTO": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "tenantId": {
            "type": "string",
            "nullable": true
          },
          "allowedDomains": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "isDefault": {
            "type": "boolean"
          },
          "companyResourceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Mailer.Domain.Dtos.Worker.EmailInformationResult": {
        "type": "object",
        "properties": {
          "template": {
            "$ref": "#/components/schemas/KeepnetLabs.Mailer.Domain.Dtos.Worker.EmailTemplateDTO"
          },
          "smtpSetting": {
            "$ref": "#/components/schemas/KeepnetLabs.Mailer.Domain.Dtos.Worker.SMTPSettingDTO"
          },
          "decSetting": {
            "$ref": "#/components/schemas/KeepnetLabs.Mailer.Domain.Dtos.Worker.DecSettingDTO"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Mailer.Domain.Dtos.Worker.EmailTemplateDTO": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "fromName": {
            "type": "string",
            "nullable": true
          },
          "fromAddress": {
            "type": "string",
            "nullable": true
          },
          "ccAddresses": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "smtpSettingId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "directEmailSettingId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "deliveryType": {
            "type": "integer",
            "format": "int32"
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "string",
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Mailer.Domain.Dtos.Worker.EmailTemplateLanguageDetailsDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Mailer.Domain.Dtos.Worker.EmailTemplateLanguageDetailsDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeResourceId": {
            "type": "string",
            "nullable": true
          },
          "languageTypeName": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "fromName": {
            "type": "string",
            "nullable": true
          },
          "fromAddress": {
            "type": "string",
            "nullable": true
          },
          "ccAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "template": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Mailer.Domain.Dtos.Worker.SMTPSettingDTO": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "replyTo": {
            "type": "string",
            "nullable": true
          },
          "serverAddress": {
            "type": "string",
            "nullable": true
          },
          "serverPort": {
            "type": "string",
            "nullable": true
          },
          "userName": {
            "type": "string",
            "nullable": true
          },
          "password": {
            "type": "string",
            "nullable": true
          },
          "useAuthentication": {
            "type": "boolean",
            "nullable": true
          },
          "useSSL": {
            "type": "boolean",
            "nullable": true
          },
          "customHeader": {
            "type": "string",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "userId": {
            "type": "integer",
            "format": "int32"
          },
          "errorTo": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Mailer.Domain.Enums.EmailEventTypeEnum": {
        "type": "string"
      },
      "KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.TargetGroup.TargetGroupPriority"
          },
          "createDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isEditable": {
            "type": "boolean"
          },
          "isScimGroup": {
            "type": "boolean"
          },
          "isGoogleGroup": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUploadedFileDto": {
        "type": "object",
        "properties": {
          "fileType": {
            "$ref": "#/components/schemas/KeepnetLabs.Import.Core.Dto.ImportFileType"
          },
          "sheetNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "data": {
            "nullable": true
          },
          "fileFieldNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUserCountDetailDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "nullable": true
          },
          "companyPreferredLanguage": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "format": "int32"
          },
          "domainAllowList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUserCountDetailDto"
            },
            "nullable": true
          },
          "hasPhoneNumber": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUserCountDetailDto"
            },
            "nullable": true
          },
          "hasPreferredLanguage": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUserCountDetailDto"
            },
            "nullable": true
          },
          "hasCompanyPreferredLanguage": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUserCountDetailDto"
            },
            "nullable": true
          },
          "targetGroupName": {
            "type": "string",
            "nullable": true
          },
          "timeZone": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUserCountDetailDto"
            },
            "nullable": true
          },
          "hasRandomLanguage": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TargetGroupUserCountDetailDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Target.ApplicationService.TargetGroup.Dto.TransactionDto": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchCompanyModel": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "userCount": {
            "type": "integer",
            "format": "int32"
          },
          "priority": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "updateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchForOwnerCompanyView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "userCount": {
            "type": "integer",
            "format": "int32"
          },
          "priority": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "updateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isCreatedBySystem": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Target.ApplicationService.TargetGroup.Search.TargetGroupSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "userCount": {
            "type": "integer",
            "format": "int32"
          },
          "userCountWithPhoneNumber": {
            "type": "integer",
            "format": "int32"
          },
          "priority": {
            "type": "string",
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "updateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isEditable": {
            "type": "boolean"
          },
          "scimSettingName": {
            "type": "string",
            "nullable": true
          },
          "ldapConfigName": {
            "type": "string",
            "nullable": true
          },
          "isSelected": {
            "type": "boolean"
          },
          "isScimGroup": {
            "type": "boolean"
          },
          "isGoogleGroup": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Target.ApplicationService.TargetUser.Dto.SearchTmpTargetUserServiceResult": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetUser.Dto.SearchTmpTargetUserStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "items": {
            "$ref": "#/components/schemas/KeepnetLabs.Core.Pagination.PagedResults`1[[KeepnetLabs.Target.ApplicationService.TargetUser.Search.TmpTargetUserSearchView, KeepnetLabs.Target.ApplicationService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
          },
          "newUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "existingUserCount": {
            "type": "integer",
            "format": "int32"
          },
          "invalidUserCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Target.ApplicationService.TargetUser.Dto.SearchTmpTargetUserStatus": {
        "type": "string"
      },
      "KeepnetLabs.Target.ApplicationService.TargetUser.Search.TargetUserSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "dateAdded": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isEditable": {
            "type": "boolean"
          },
          "scimSettingName": {
            "type": "string",
            "nullable": true
          },
          "ldapConfigName": {
            "type": "string",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "nullable": true
          },
          "preferredLanguage": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Target.ApplicationService.TargetUser.Search.TmpTargetUserCustomField": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "dataType": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.Target.ApplicationService.TargetUser.Search.TmpTargetUserSearchView": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "string",
            "nullable": true
          },
          "transactionId": {
            "type": "string",
            "nullable": true
          },
          "validationDetail": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Domain.Entities.TmpTargetUser.ValidationError"
            },
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.Target.ApplicationService.TargetUser.Search.TmpTargetUserCustomField"
            },
            "nullable": true
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          },
          "updateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "nullable": true
          },
          "preferredLanguage": {
            "type": "string",
            "nullable": true
          },
          "managerFirstName": {
            "type": "string",
            "nullable": true
          },
          "managerLastName": {
            "type": "string",
            "nullable": true
          },
          "managerEmail": {
            "type": "string",
            "nullable": true
          },
          "managerFullName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.TargetUser.Core.Dto.TargetUserCustomFieldValueDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "dataType": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "timestampValue": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.TargetUser.Core.Dto.TargetUserDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/KeepnetLabs.Domain.Enums.TargetUserEnum+TargetUserPriority"
          },
          "isActive": {
            "type": "boolean"
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeepnetLabs.TargetUser.Core.Dto.TargetUserCustomFieldValueDto"
            },
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "timeZoneId": {
            "type": "string",
            "nullable": true
          },
          "preferredLanguageId": {
            "type": "string",
            "nullable": true
          },
          "managerFirstName": {
            "type": "string",
            "nullable": true
          },
          "managerLastName": {
            "type": "string",
            "nullable": true
          },
          "managerEmail": {
            "type": "string",
            "nullable": true
          },
          "managerFullName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.TargetUser.Core.Dto.TargetUserUploadedFileDto": {
        "type": "object",
        "properties": {
          "fileType": {
            "$ref": "#/components/schemas/KeepnetLabs.Import.Core.Dto.ImportFileType"
          },
          "sheetNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "data": {
            "nullable": true
          },
          "fileFieldNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.TargetUser.Core.Dto.TransactionIdDto": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "nullable": true
          },
          "oldTransactionId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeepnetLabs.TargetUser.Core.Dto.UploadFileDto": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "nullable": true
          },
          "rowCount": {
            "type": "integer",
            "format": "int32"
          },
          "columnCount": {
            "type": "integer",
            "format": "int32"
          },
          "duplicateCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Microsoft.AspNetCore.Mvc.ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "Microsoft.PowerBI.Api.Models.EmbedToken": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "tokenId": {
            "type": "string",
            "format": "uuid"
          },
          "expiration": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "System.Tuple`2[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
        "type": "object",
        "properties": {
          "item1": {
            "type": "string",
            "nullable": true
          },
          "item2": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "oauth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.keepnetlabs.com/connect/token",
            "scopes": {
              "api1": "API"
            }
          }
        }
      },
      "bearerAuth": {
        "type": "http",
        "description": "Enter the JWT token obtained from /connect/token",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "api1"
      ],
      "bearerAuth": [ ]
    }
  ]
}