{
  "service": "talentlms",
  "displayName": "TalentLMS",
  "categories": [
    "Productivity"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "talentlms_api_key",
      "description": "TalentLMS API key sent with the X-API-Key header. Enable the API and generate a key in TalentLMS under Account & Settings > Integrations > API: https://help.talentlms.com/hc/en-us/articles/9651527213468-Can-I-integrate-my-site-with-TalentLMS-Do-you-offer-an-API.",
      "extraFields": [
        {
          "key": "domain",
          "label": "Domain",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "samples or samples.talentlms.com",
          "description": "Your TalentLMS portal domain or subdomain. If your portal is samples.talentlms.com, enter samples or samples.talentlms.com."
        }
      ]
    }
  ],
  "homepageUrl": "https://www.talentlms.com",
  "actions": [
    {
      "id": "talentlms.create_user",
      "service": "talentlms",
      "name": "create_user",
      "description": "Create a TalentLMS user with common user fields and optional raw API fields.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The user's email address.",
            "format": "email"
          },
          "firstName": {
            "type": "string",
            "minLength": 1,
            "description": "The user's first name."
          },
          "lastName": {
            "type": "string",
            "minLength": 1,
            "description": "The user's last name."
          },
          "login": {
            "type": "string",
            "minLength": 1,
            "description": "The user's TalentLMS login name."
          },
          "password": {
            "type": "string",
            "minLength": 1,
            "description": "The user's password."
          },
          "userType": {
            "type": "string",
            "minLength": 1,
            "description": "The TalentLMS user type, such as learner, trainer, or administrator."
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "description": "The user's timezone value accepted by TalentLMS."
          },
          "language": {
            "type": "string",
            "minLength": 1,
            "description": "The user's language value accepted by TalentLMS."
          },
          "status": {
            "type": "string",
            "minLength": 1,
            "description": "The user's TalentLMS status value."
          },
          "rawFields": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Additional official TalentLMS user fields to send unchanged in the JSON request body."
          }
        },
        "additionalProperties": false,
        "required": [
          "email",
          "firstName",
          "lastName",
          "login",
          "password"
        ],
        "description": "Input parameters for creating a TalentLMS user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A TalentLMS user object."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized TalentLMS user response."
      }
    },
    {
      "id": "talentlms.delete_user",
      "service": "talentlms",
      "name": "delete_user",
      "description": "Delete a TalentLMS user by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS user ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for deleting a TalentLMS user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "deleted": {
            "type": "boolean",
            "description": "Whether the TalentLMS delete request completed successfully."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload, or an empty object for 204 responses."
          }
        },
        "additionalProperties": false,
        "description": "The normalized TalentLMS delete response."
      }
    },
    {
      "id": "talentlms.get_branch",
      "service": "talentlms",
      "name": "get_branch",
      "description": "Get a TalentLMS branch by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "branchId": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS branch ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for getting a TalentLMS branch."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "branch": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A TalentLMS branch object."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized TalentLMS branch response."
      }
    },
    {
      "id": "talentlms.get_category",
      "service": "talentlms",
      "name": "get_category",
      "description": "Get a TalentLMS category by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "categoryId": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS category ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for getting a TalentLMS category."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "category": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A TalentLMS category object."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized TalentLMS category response."
      }
    },
    {
      "id": "talentlms.get_course",
      "service": "talentlms",
      "name": "get_course",
      "description": "Get a TalentLMS course by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "courseId": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS course ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for getting a TalentLMS course."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "course": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A TalentLMS course object."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized TalentLMS course response."
      }
    },
    {
      "id": "talentlms.get_group",
      "service": "talentlms",
      "name": "get_group",
      "description": "Get a TalentLMS group by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS group ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for getting a TalentLMS group."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "group": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A TalentLMS group object."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized TalentLMS group response."
      }
    },
    {
      "id": "talentlms.get_user",
      "service": "talentlms",
      "name": "get_user",
      "description": "Get a TalentLMS user by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS user ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for getting a TalentLMS user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A TalentLMS user object."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized TalentLMS user response."
      }
    },
    {
      "id": "talentlms.health_check",
      "service": "talentlms",
      "name": "health_check",
      "description": "Check whether the configured TalentLMS API domain and API key can reach API v2.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input parameters are required for the TalentLMS health check."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "healthy": {
            "type": "boolean",
            "description": "Whether the TalentLMS health endpoint responded successfully."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The TalentLMS health check response."
      }
    },
    {
      "id": "talentlms.list_branches",
      "service": "talentlms",
      "name": "list_branches",
      "description": "List TalentLMS branches with optional API v2 pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS page number to request."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS page size to request. TalentLMS supports up to 100."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing TalentLMS branches."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "branches": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A TalentLMS branch object."
            },
            "description": "The TalentLMS branches returned by the API."
          },
          "links": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Pagination links returned by TalentLMS, such as self, first, last, prev, or next."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized TalentLMS branch list response."
      }
    },
    {
      "id": "talentlms.list_categories",
      "service": "talentlms",
      "name": "list_categories",
      "description": "List TalentLMS categories with optional API v2 pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS page number to request."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS page size to request. TalentLMS supports up to 100."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing TalentLMS categories."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "categories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A TalentLMS category object."
            },
            "description": "The TalentLMS categories returned by the API."
          },
          "links": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Pagination links returned by TalentLMS, such as self, first, last, prev, or next."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized TalentLMS category list response."
      }
    },
    {
      "id": "talentlms.list_courses",
      "service": "talentlms",
      "name": "list_courses",
      "description": "List TalentLMS courses with optional API v2 pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS page number to request."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS page size to request. TalentLMS supports up to 100."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing TalentLMS courses."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "courses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A TalentLMS course object."
            },
            "description": "The TalentLMS courses returned by the API."
          },
          "links": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Pagination links returned by TalentLMS, such as self, first, last, prev, or next."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized TalentLMS course list response."
      }
    },
    {
      "id": "talentlms.list_groups",
      "service": "talentlms",
      "name": "list_groups",
      "description": "List TalentLMS groups with optional API v2 pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS page number to request."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS page size to request. TalentLMS supports up to 100."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing TalentLMS groups."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A TalentLMS group object."
            },
            "description": "The TalentLMS groups returned by the API."
          },
          "links": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Pagination links returned by TalentLMS, such as self, first, last, prev, or next."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized TalentLMS group list response."
      }
    },
    {
      "id": "talentlms.list_users",
      "service": "talentlms",
      "name": "list_users",
      "description": "List TalentLMS users with optional API v2 pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS page number to request."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS page size to request. TalentLMS supports up to 100."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing TalentLMS users."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A TalentLMS user object."
            },
            "description": "The TalentLMS users returned by the API."
          },
          "links": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Pagination links returned by TalentLMS, such as self, first, last, prev, or next."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized TalentLMS user list response."
      }
    },
    {
      "id": "talentlms.update_user",
      "service": "talentlms",
      "name": "update_user",
      "description": "Update a TalentLMS user with common user fields and optional raw API fields.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "minimum": 1,
            "description": "The TalentLMS user ID."
          },
          "email": {
            "type": "string",
            "description": "The user's email address.",
            "format": "email"
          },
          "firstName": {
            "type": "string",
            "minLength": 1,
            "description": "The user's first name."
          },
          "lastName": {
            "type": "string",
            "minLength": 1,
            "description": "The user's last name."
          },
          "login": {
            "type": "string",
            "minLength": 1,
            "description": "The user's TalentLMS login name."
          },
          "password": {
            "type": "string",
            "minLength": 1,
            "description": "The user's password."
          },
          "userType": {
            "type": "string",
            "minLength": 1,
            "description": "The TalentLMS user type, such as learner, trainer, or administrator."
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "description": "The user's timezone value accepted by TalentLMS."
          },
          "language": {
            "type": "string",
            "minLength": 1,
            "description": "The user's language value accepted by TalentLMS."
          },
          "status": {
            "type": "string",
            "minLength": 1,
            "description": "The user's TalentLMS status value."
          },
          "rawFields": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Additional official TalentLMS user fields to send unchanged in the JSON request body."
          }
        },
        "additionalProperties": false,
        "required": [
          "userId"
        ],
        "description": "Input parameters for updating a TalentLMS user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A TalentLMS user object."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw TalentLMS API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized TalentLMS user response."
      }
    }
  ]
}
