The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

WebService::Mattermost::V4::API::Resource::User - Wrapped API methods for the users API endpoints.

VERSION

version 0.30

DESCRIPTION

API methods relating to a single user by ID.

USAGE

    use WebService::Mattermost;

    my $mm = WebService::Mattermost->new({
        authenticate => 1,
        username     => 'me@somewhere.com',
        password     => 'hunter2',
        base_url     => 'https://my.mattermost.server.com/api/v4/',
    });

    my $resource = $mm->api->user;

Optionally, you can set a global user ID for the resource and not pass the ID to every method:

    $resource->id('USER-ID-HERE');

METHODS

All of the below methods can either be called as documented under each item, or from a user result object:

    my $user = $resource->get('USER-ID-HERE')->item;

    # Calls method "teams"
    my $response = $user->call('teams');

    # Calls method "update"
    $response = $user->call('update', {
        # parameters
    });
get()

Get a user

Get a user by their ID.

    my $response = $resource->get('USER-ID-HERE');
update()

Update a user

Update a user by their ID.

    my $response = $resource->update('USER-ID-HERE', {
        # Optional arguments
        email        => '...',
        username     => '...',
        first_name   => '...',
        last_name    => '...',
        nickname     => '...',
        locale       => '...',
        position     => '...',
        props        => {
            # ...
        },
        notify_props => {
            email         => \1,
            push          => \1,
            desktop       => \1,
            desktop_sound => \1,
            mention_keys  => \1,
            channel       => \1,
            first_name    => \1,
        },
    });
teams()

Get a user's teams

deactivate()

Deactivate a user account

Set a user as inactive by ID.

    $response->deactivate('USER-ID-HERE');
patch()

Patch a user

    my $response = $resource->patch('USER-ID-HERE', {
        # Optional parameters:
        email        => '...',
        username     => '...',
        first_name   => '...',
        last_name    => '...',
        nickname     => '...',
        locale       => '...',
        position     => '...',
        props        => {
            # ...
        },
        notify_props => {
            email         => \1,
            push          => \1,
            desktop       => \1,
            desktop_sound => \1,
            mention_keys  => \1,
            channel       => \1,
            first_name    => \1,
        },
    });
update_roles()

Update a user's roles

Valid roles are system_user and system_admin.

    my $response = $resource->update_roles('USER-ID-HERE', [
        'ROLE-NAME-HERE',
        'ANOTHER-ROLE-HERE',
    ]);
generate_mfa_secret()

Generate MFA secret

Returns a base64 encoded QR code image.

    my $response = $resource->generate_mfa_secret('USER-ID-HERE');
update_mfa()

Update a user's MFA

Set whether a user requires multi-factor auth. If the user currently has MFA active, a code from the MFA client is required.

    my $response = $resource->update_mfa('ID-HERE', {
        activate => \1,   # or \0 for false
        code     => 1234, # required if MFA is already active
    });
get_profile_image()

Get user's profile image

Get a user's profile image. Warning: returns binary content.

    my $response = $resource->get_profile_image('ID-HERE');

    # $response->raw_content contains the image as binary
set_profile_image()

Set user's profile image

Set a user's profile image.

    my $response = $resource->set_profile_image('ID-HERE', '/path/to/file.jpg');
update_active_status()

Update user active status

Set a user as active or inactive.

    $resource->update_active_status('ID-HERE', {
        active => \1, # \1 for true, \0 for false
    });
update_password()

Update a user's password

    my $response = $resource->update_password('ID-HERE', {
        old_password => '...',
        new_password => '...',
    });
update_authentication_method()

Update a user's authentication method

    my $response = $resource->update_authentication_method('USER-ID-HERE', {
        # Optional parameters:
        auth_data    => '...',
        auth_service => '...',
        password     => '...',
    });
get_status()

Get a user's status

    my $response = $resource->get_status('USER-ID-HERE');
set_status()

Update a user's status

    my $response = $resource->set_status('USER-ID-HERE', 'STATUS-HERE');

Available statuses are "online", "away", "offline" and "dnd".

get_sessions()

Get a user's sessions

    my $response = $resource->get_sessions('USER-ID-HERE');
revoke_session()

Revoke a user sesssion

    my $response = $resource->revoke_session('USER-ID-HERE', 'SESSION-ID-HERE');
revoke_all_sessions()

Revoke all active sessions for a user

    my $response = $resource->revoke_all_sessions('USER-ID-HERE');
get_preferences()

Get the user's preferences

    my $response = $resource->get_preferences('USER-ID-HERE');
set_preferences()

Save the user's preferences

    my $response = $resource->set_preferences('USER-ID-HERE', [
        { user_id => 'USER-ID-HERE', category => '...', name => '...', value => '...' },
        { user_id => 'USER-ID-HERE', category => '...', name => '...', value => '...' },
        { user_id => 'USER-ID-HERE', category => '...', name => '...', value => '...' },
    ]);
delete_preferences()

Delete user's preferences

    my $response = $resource->delete_preferences('USER-ID-HERE', [
        { user_id => 'USER-ID-HERE', category => '...', name => '...', value => '...' },
        { user_id => 'USER-ID-HERE', category => '...', name => '...', value => '...' },
        { user_id => 'USER-ID-HERE', category => '...', name => '...', value => '...' },
    ]);
list_preferences_by_category()

List a user's preferences by category

    my $response = $resource->list_preferences_by_category('USER-ID-HERE', 'CATEGORY-HERE');
get_preference_by_category_and_name()

Get a specific user preference

    my $response = $resource->get_preference_by_category_and_name(
        'USER-ID-HERE',
        'CATEGORY-HERE',
        'NAME-HERE',
    );
get_flagged_posts()

Get a list of flagged posts

Retrieve a list of posts flagged by the user with the given ID.

    my $response = $resource->get_flagged_posts('USER-ID-HERE', {
        # Optional parameters
        team_id    => '...',
        channel_id => '...',
        page       => 0,
        per_page   => 60,
    });
remove_reaction()

Remove a reaction from a user's post

    my $response = $resource->remove_reaction(
        'USER-ID-HERE',
        'POST-ID-HERE',
        'EMOJI-NAME-HERE',
    );
get_authorized_apps()

Alias for get_authorised_apps().

get_authorised_apps()

Get authorized OAuth apps

    my $response = $resource->get_authorised_apps('USER-ID-HERE', {
        # Optional parameters:
        page     => 0,
        per_page => 60,
    });

AUTHOR

Mike Jones <mike@netsplit.org.uk>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2023 by Mike Jones.

This is free software, licensed under:

  The MIT (X11) License