# Source: api/licenseRole.js

    "use strict";

    module.exports = LicenseRoleClient;

    /**
     * Used to access Jira REST endpoints in '/rest/api/2/licenserole'
     * @param {JiraClient} jiraClient
     * @constructor LicenseRoleClient
     */
    function LicenseRoleClient(jiraClient) {
        this.jiraClient = jiraClient;

        /**
         * Returns all license roles in the system.
         *
         * @method getAllLicenseRoles
         * @memberOf LicenseRoleClient#
         * @param opts Ignored
         * @param callback Called when the license roles have been retrieved.
         */
        this.getAllLicenseRoles = function (opts, callback) {
            var options = {
                uri: this.jiraClient.buildURL('/licenserole'),
                method: 'GET',
                json: true,
                followAllRedirects: true
            };

            this.jiraClient.makeRequest(options, callback);
        };

        /**
         * Gets the passed license role if it exists.
         *
         * @method getLicenseRole
         * @memberOf LicenseRoleClient#
         * @param opts The request options sent to the Jira API.
         * @param opts.roleId The id of the license role to retrieve.
         * @param callback Called when the license role is retrieved.
         */
        this.getLicenseRole = function (opts, callback) {
            var options = {
                uri: this.jiraClient.buildURL('/licenserole/' + opts.roleId),
                method: 'GET',
                json: true,
                followAllRedirects: true
            };

            this.jiraClient.makeRequest(options, callback);
        };

        /**
         * Updates the license role with the passed data. Only the groups of the role may be updated. Requests to change
         * the id or the name of the role will be silently ignored.
         *
         * @method editLicenseRole
         * @memberOf LicenseRoleClient#
         * @param opts The request options sent to the Jira API.
         * @param opts.roleId The id of the license role to retrieve.
         * @param opts.role The new data to place in the role.  See
         *  {@link https://docs.atlassian.com/jira/REST/latest/#d2e365}
         * @param callback Called when the license role is edited.
         */
        this.editLicenseRole = function (opts, callback) {
            var options = {
                uri: this.jiraClient.buildURL('/licenserole/' + opts.roleId),
                method: 'PUT',
                json: true,
                followAllRedirects: true,
                body: opts.role
            };

            this.jiraClient.makeRequest(options, callback);
        }
    }