{
  "service": "knowbe4",
  "displayName": "KnowBe4",
  "categories": [
    "Security"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "Reporting API Key",
      "placeholder": "KNOWBE4_REPORTING_API_KEY",
      "description": "KnowBe4 Reporting API key sent as a Bearer token. Generate it in the Reporting API Management Console: https://training.knowbe4.com/app/api_tokens/reporting.",
      "extraFields": [
        {
          "key": "region",
          "label": "Region",
          "inputType": "text",
          "required": false,
          "secret": false,
          "placeholder": "us",
          "description": "KnowBe4 account region for Reporting API calls. Use us, eu, ca, uk, or de based on your KnowBe4 console host."
        }
      ]
    }
  ],
  "homepageUrl": "https://www.knowbe4.com",
  "actions": [
    {
      "id": "knowbe4.get_account",
      "service": "knowbe4",
      "name": "get_account",
      "description": "Get KnowBe4 account and subscription data from the Reporting API.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input is required to get KnowBe4 account data."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "account": {
            "type": "object",
            "properties": {
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "KnowBe4 organization name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "domains": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Account domain."
                },
                "description": "Allowed domains on the KnowBe4 account."
              },
              "subscriptionLevel": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "KnowBe4 subscription level."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "subscriptionEndDate": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "KnowBe4 subscription end date.",
                    "format": "date"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "numberOfSeats": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Number of seats available on the account."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "currentRiskScore": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "Current account risk score."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Raw KnowBe4 API object."
              }
            },
            "additionalProperties": true,
            "description": "Normalized KnowBe4 account data."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw KnowBe4 API object."
          }
        },
        "additionalProperties": false,
        "description": "KnowBe4 account response."
      }
    },
    {
      "id": "knowbe4.get_group",
      "service": "knowbe4",
      "name": "get_group",
      "description": "Get a specific KnowBe4 group by group ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "integer",
            "minimum": 1,
            "description": "KnowBe4 group ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving a KnowBe4 group."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "group": {
            "type": "object",
            "properties": {
              "id": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "KnowBe4 group ID."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "KnowBe4 group name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "groupType": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "KnowBe4 group type."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "memberCount": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Number of users in the group."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "KnowBe4 group status."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "currentRiskScore": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "Current group risk score."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Raw KnowBe4 API object."
              }
            },
            "additionalProperties": true,
            "description": "Normalized KnowBe4 group data."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw KnowBe4 API object."
          }
        },
        "additionalProperties": false,
        "description": "KnowBe4 group response."
      }
    },
    {
      "id": "knowbe4.get_user",
      "service": "knowbe4",
      "name": "get_user",
      "description": "Get a specific KnowBe4 user by user ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "minimum": 1,
            "description": "KnowBe4 user ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving a KnowBe4 user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {
              "id": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "KnowBe4 user ID."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "email": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "KnowBe4 user email address."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "firstName": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "KnowBe4 user first name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lastName": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "KnowBe4 user last name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "jobTitle": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "KnowBe4 user job title."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "KnowBe4 user status."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "groups": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "description": "KnowBe4 group ID."
                },
                "description": "KnowBe4 group IDs assigned to the user."
              },
              "currentRiskScore": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "Current user risk score."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Raw KnowBe4 API object."
              }
            },
            "additionalProperties": true,
            "description": "Normalized KnowBe4 user data."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw KnowBe4 API object."
          }
        },
        "additionalProperties": false,
        "description": "KnowBe4 user response."
      }
    },
    {
      "id": "knowbe4.list_groups",
      "service": "knowbe4",
      "name": "list_groups",
      "description": "List KnowBe4 groups with optional status, per_page, and cursor filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "archived"
            ],
            "description": "Optional KnowBe4 record status filter."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "Maximum number of records to request from KnowBe4."
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "description": "KnowBe4 cursor value returned by a previous request."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing KnowBe4 groups."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "KnowBe4 group ID."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "KnowBe4 group name."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "groupType": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "KnowBe4 group type."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "memberCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "Number of users in the group."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "status": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "KnowBe4 group status."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "currentRiskScore": {
                  "anyOf": [
                    {
                      "type": "number",
                      "description": "Current group risk score."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Raw KnowBe4 API object."
                }
              },
              "additionalProperties": true,
              "description": "Normalized KnowBe4 group data."
            },
            "description": "KnowBe4 groups returned by the API."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "requestCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Cursor value sent to KnowBe4."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "requestPerPage": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 500,
                    "description": "Maximum number of records requested from KnowBe4."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "nextCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Next cursor detected in KnowBe4 response headers."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "requestId": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "KnowBe4 X-Request-Id response header."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false,
            "description": "KnowBe4 request pagination metadata."
          },
          "raw": {
            "description": "Raw KnowBe4 response payload."
          }
        },
        "additionalProperties": false,
        "description": "KnowBe4 groups list response."
      }
    },
    {
      "id": "knowbe4.list_users",
      "service": "knowbe4",
      "name": "list_users",
      "description": "List KnowBe4 users with optional status, group, expanded group, per_page, and cursor filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "archived"
            ],
            "description": "Optional KnowBe4 record status filter."
          },
          "groupId": {
            "type": "integer",
            "minimum": 1,
            "description": "Only return users who are members of this KnowBe4 group ID."
          },
          "expandGroups": {
            "type": "boolean",
            "description": "Whether to ask KnowBe4 to expand group details on each user."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "Maximum number of records to request from KnowBe4."
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "description": "KnowBe4 cursor value returned by a previous request."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing KnowBe4 users."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "KnowBe4 user ID."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "email": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "KnowBe4 user email address."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "firstName": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "KnowBe4 user first name."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lastName": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "KnowBe4 user last name."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "jobTitle": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "KnowBe4 user job title."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "status": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "KnowBe4 user status."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "groups": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "description": "KnowBe4 group ID."
                  },
                  "description": "KnowBe4 group IDs assigned to the user."
                },
                "currentRiskScore": {
                  "anyOf": [
                    {
                      "type": "number",
                      "description": "Current user risk score."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Raw KnowBe4 API object."
                }
              },
              "additionalProperties": true,
              "description": "Normalized KnowBe4 user data."
            },
            "description": "KnowBe4 users returned by the API."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "requestCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Cursor value sent to KnowBe4."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "requestPerPage": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 500,
                    "description": "Maximum number of records requested from KnowBe4."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "nextCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Next cursor detected in KnowBe4 response headers."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "requestId": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "KnowBe4 X-Request-Id response header."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false,
            "description": "KnowBe4 request pagination metadata."
          },
          "raw": {
            "description": "Raw KnowBe4 response payload."
          }
        },
        "additionalProperties": false,
        "description": "KnowBe4 users list response."
      }
    }
  ]
}
