require 'ostruct' require 'fusionauth/rest_client' # # Copyright (c) 2018-2019, FusionAuth, All Rights Reserved # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, # either express or implied. See the License for the specific # language governing permissions and limitations under the License. # module FusionAuth # # This class is the the Ruby client library for the FusionAuth CIAM Platform {https://fusionauth.io} # # Each method on this class calls one of the APIs for FusionAuth. In most cases, the methods will take either a Hash, an # OpenStruct or any object that can be safely converted to JSON that conforms to the FusionAuth API interface. Likewise, # most methods will return an OpenStruct that contains the response JSON from FusionAuth. # # noinspection RubyInstanceMethodNamingConvention,RubyTooManyMethodsInspection,RubyParameterNamingConvention class FusionAuthClient attr_accessor :api_key, :base_url, :connect_timeout, :read_timeout def initialize(api_key, base_url) @api_key = api_key @base_url = base_url @connect_timeout = 1000 @read_timeout = 2000 end # # Takes an action on a user. The user being actioned is called the "actionee" and the user taking the action is called the # "actioner". Both user ids are required. You pass the actionee's user id into the method and the actioner's is put into the # request object. # # @param actionee_user_id [string] The actionee's user id. # @param request [OpenStruct, Hash] The action request that includes all of the information about the action being taken including # the id of the action, any options and the duration (if applicable). # @return [FusionAuth::ClientResponse] The ClientResponse object. # def action_user(actionee_user_id, request) start.uri('/api/user/action') .url_segment(actionee_user_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Adds a user to an existing family. The family id must be specified. # # @param family_id [string] The id of the family. # @param request [OpenStruct, Hash] The request object that contains all of the information used to determine which user to add to the family. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def add_user_to_family(family_id, request) start.uri('/api/user/family') .url_segment(family_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .put() .go() end # # Cancels the user action. # # @param action_id [string] The action id of the action to cancel. # @param request [OpenStruct, Hash] The action request that contains the information about the cancellation. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def cancel_action(action_id, request) start.uri('/api/user/action') .url_segment(action_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .delete() .go() end # # Changes a user's password using the change password Id. This usually occurs after an email has been sent to the user # and they clicked on a link to reset their password. # # @param change_password_id [string] The change password Id used to find the user. This value is generated by FusionAuth once the change password workflow has been initiated. # @param request [OpenStruct, Hash] The change password request that contains all of the information used to change the password. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def change_password(change_password_id, request) start.uri('/api/user/change-password') .url_segment(change_password_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Changes a user's password using their identity (login id and password). Using a loginId instead of the changePasswordId # bypasses the email verification and allows a password to be changed directly without first calling the #forgotPassword # method. # # @param request [OpenStruct, Hash] The change password request that contains all of the information used to change the password. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def change_password_by_identity(request) start.uri('/api/user/change-password') .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Adds a comment to the user's account. # # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the user comment. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def comment_on_user(request) start.uri('/api/user/comment') .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates an application. You can optionally specify an Id for the application, if not provided one will be generated. # # @param application_id [string] (Optional) The Id to use for the application. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the application. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_application(application_id, request) start.uri('/api/application') .url_segment(application_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates a new role for an application. You must specify the id of the application you are creating the role for. # You can optionally specify an Id for the role inside the ApplicationRole object itself, if not provided one will be generated. # # @param application_id [string] The Id of the application to create the role on. # @param role_id [string] (Optional) The Id of the role. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the application role. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_application_role(application_id, role_id, request) start.uri('/api/application') .url_segment(application_id) .url_segment("role") .url_segment(role_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates an audit log with the message and user name (usually an email). Audit logs should be written anytime you # make changes to the FusionAuth database. When using the FusionAuth App web interface, any changes are automatically # written to the audit log. However, if you are accessing the API, you must write the audit logs yourself. # # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the audit log entry. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_audit_log(request) start.uri('/api/system/audit-log') .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates a user consent type. You can optionally specify an Id for the consent type, if not provided one will be generated. # # @param consent_id [string] (Optional) The Id for the consent. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the consent. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_consent(consent_id, request) start.uri('/api/consent') .url_segment(consent_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates an email template. You can optionally specify an Id for the template, if not provided one will be generated. # # @param email_template_id [string] (Optional) The Id for the template. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the email template. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_email_template(email_template_id, request) start.uri('/api/email/template') .url_segment(email_template_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates a family with the user id in the request as the owner and sole member of the family. You can optionally specify an id for the # family, if not provided one will be generated. # # @param family_id [string] (Optional) The id for the family. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the family. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_family(family_id, request) start.uri('/api/user/family') .url_segment(family_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates a group. You can optionally specify an Id for the group, if not provided one will be generated. # # @param group_id [string] (Optional) The Id for the group. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the group. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_group(group_id, request) start.uri('/api/group') .url_segment(group_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates a member in a group. # # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the group member(s). # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_group_members(request) start.uri('/api/group/member') .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates an identity provider. You can optionally specify an Id for the identity provider, if not provided one will be generated. # # @param identity_provider_id [string] (Optional) The Id of the identity provider. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the identity provider. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_identity_provider(identity_provider_id, request) start.uri('/api/identity-provider') .url_segment(identity_provider_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates a Lambda. You can optionally specify an Id for the lambda, if not provided one will be generated. # # @param lambda_id [string] (Optional) The Id for the lambda. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the lambda. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_lambda(lambda_id, request) start.uri('/api/lambda') .url_segment(lambda_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates a tenant. You can optionally specify an Id for the tenant, if not provided one will be generated. # # @param tenant_id [string] (Optional) The Id for the tenant. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the tenant. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_tenant(tenant_id, request) start.uri('/api/tenant') .url_segment(tenant_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates a user. You can optionally specify an Id for the user, if not provided one will be generated. # # @param user_id [string] (Optional) The Id for the user. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the user. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_user(user_id, request) start.uri('/api/user') .url_segment(user_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates a user action. This action cannot be taken on a user until this call successfully returns. Anytime after # that the user action can be applied to any user. # # @param user_action_id [string] (Optional) The Id for the user action. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the user action. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_user_action(user_action_id, request) start.uri('/api/user-action') .url_segment(user_action_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates a user reason. This user action reason cannot be used when actioning a user until this call completes # successfully. Anytime after that the user action reason can be used. # # @param user_action_reason_id [string] (Optional) The Id for the user action reason. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the user action reason. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_user_action_reason(user_action_reason_id, request) start.uri('/api/user-action-reason') .url_segment(user_action_reason_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates a single User consent. # # @param user_consent_id [string] (Optional) The Id for the User consent. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request that contains the user consent information. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_user_consent(user_consent_id, request) start.uri('/api/user/consent') .url_segment(user_consent_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Creates a webhook. You can optionally specify an Id for the webhook, if not provided one will be generated. # # @param webhook_id [string] (Optional) The Id for the webhook. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the webhook. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def create_webhook(webhook_id, request) start.uri('/api/webhook') .url_segment(webhook_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Deactivates the application with the given Id. # # @param application_id [string] The Id of the application to deactivate. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def deactivate_application(application_id) start.uri('/api/application') .url_segment(application_id) .delete() .go() end # # Deactivates the user with the given Id. # # @param user_id [string] The Id of the user to deactivate. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def deactivate_user(user_id) start.uri('/api/user') .url_segment(user_id) .delete() .go() end # # Deactivates the user action with the given Id. # # @param user_action_id [string] The Id of the user action to deactivate. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def deactivate_user_action(user_action_id) start.uri('/api/user-action') .url_segment(user_action_id) .delete() .go() end # # Deactivates the users with the given ids. # # @param user_ids [Array] The ids of the users to deactivate. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def deactivate_users(user_ids) start.uri('/api/user/bulk') .url_parameter('userId', user_ids) .delete() .go() end # # Hard deletes an application. This is a dangerous operation and should not be used in most circumstances. This will # delete the application, any registrations for that application, metrics and reports for the application, all the # roles for the application, and any other data associated with the application. This operation could take a very # long time, depending on the amount of data in your database. # # @param application_id [string] The Id of the application to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_application(application_id) start.uri('/api/application') .url_segment(application_id) .url_parameter('hardDelete', true) .delete() .go() end # # Hard deletes an application role. This is a dangerous operation and should not be used in most circumstances. This # permanently removes the given role from all users that had it. # # @param application_id [string] The Id of the application to deactivate. # @param role_id [string] The Id of the role to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_application_role(application_id, role_id) start.uri('/api/application') .url_segment(application_id) .url_segment("role") .url_segment(role_id) .delete() .go() end # # Deletes the consent for the given Id. # # @param consent_id [string] The Id of the consent to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_consent(consent_id) start.uri('/api/consent') .url_segment(consent_id) .delete() .go() end # # Deletes the email template for the given Id. # # @param email_template_id [string] The Id of the email template to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_email_template(email_template_id) start.uri('/api/email/template') .url_segment(email_template_id) .delete() .go() end # # Deletes the group for the given Id. # # @param group_id [string] The Id of the group to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_group(group_id) start.uri('/api/group') .url_segment(group_id) .delete() .go() end # # Removes users as members of a group. # # @param request [OpenStruct, Hash] The member request that contains all of the information used to remove members to the group. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_group_members(request) start.uri('/api/group/member') .body_handler(FusionAuth::JSONBodyHandler.new(request)) .delete() .go() end # # Deletes the identity provider for the given Id. # # @param identity_provider_id [string] The Id of the identity provider to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_identity_provider(identity_provider_id) start.uri('/api/identity-provider') .url_segment(identity_provider_id) .delete() .go() end # # Deletes the key for the given Id. # # @param key_od [string] The Id of the key to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_key(key_od) start.uri('/api/key') .url_segment(key_od) .delete() .go() end # # Deletes the lambda for the given Id. # # @param lambda_id [string] The Id of the lambda to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_lambda(lambda_id) start.uri('/api/lambda') .url_segment(lambda_id) .delete() .go() end # # Deletes the user registration for the given user and application. # # @param user_id [string] The Id of the user whose registration is being deleted. # @param application_id [string] The Id of the application to remove the registration for. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_registration(user_id, application_id) start.uri('/api/user/registration') .url_segment(user_id) .url_segment(application_id) .delete() .go() end # # Deletes the tenant for the given Id. # # @param tenant_id [string] The Id of the tenant to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_tenant(tenant_id) start.uri('/api/tenant') .url_segment(tenant_id) .delete() .go() end # # Deletes the user for the given Id. This permanently deletes all information, metrics, reports and data associated # with the user. # # @param user_id [string] The Id of the user to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_user(user_id) start.uri('/api/user') .url_segment(user_id) .url_parameter('hardDelete', true) .delete() .go() end # # Deletes the user action for the given Id. This permanently deletes the user action and also any history and logs of # the action being applied to any users. # # @param user_action_id [string] The Id of the user action to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_user_action(user_action_id) start.uri('/api/user-action') .url_segment(user_action_id) .url_parameter('hardDelete', true) .delete() .go() end # # Deletes the user action reason for the given Id. # # @param user_action_reason_id [string] The Id of the user action reason to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_user_action_reason(user_action_reason_id) start.uri('/api/user-action-reason') .url_segment(user_action_reason_id) .delete() .go() end # # Deletes the users with the given ids. # # @param request [OpenStruct, Hash] The ids of the users to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_users(request) start.uri('/api/user/bulk') .body_handler(FusionAuth::JSONBodyHandler.new(request)) .delete() .go() end # # Deletes the webhook for the given Id. # # @param webhook_id [string] The Id of the webhook to delete. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def delete_webhook(webhook_id) start.uri('/api/webhook') .url_segment(webhook_id) .delete() .go() end # # Disable Two Factor authentication for a user. # # @param user_id [string] The Id of the User for which you're disabling Two Factor authentication. # @param code [string] The Two Factor code used verify the the caller knows the Two Factor secret. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def disable_two_factor(user_id, code) start.uri('/api/user/two-factor') .url_parameter('userId', user_id) .url_parameter('code', code) .delete() .go() end # # Enable Two Factor authentication for a user. # # @param user_id [string] The Id of the user to enable Two Factor authentication. # @param request [OpenStruct, Hash] The two factor enable request information. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def enable_two_factor(user_id, request) start.uri('/api/user/two-factor') .url_segment(user_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Exchange a refresh token for a new JWT. # # @param request [OpenStruct, Hash] The refresh request. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def exchange_refresh_token_for_jwt(request) start.uri('/api/jwt/refresh') .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Begins the forgot password sequence, which kicks off an email to the user so that they can reset their password. # # @param request [OpenStruct, Hash] The request that contains the information about the user so that they can be emailed. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def forgot_password(request) start.uri('/api/user/forgot-password') .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Generate a new Email Verification Id to be used with the Verify Email API. This API will not attempt to send an # email to the User. This API may be used to collect the verificationId for use with a third party system. # # @param email [string] The email address of the user that needs a new verification email. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def generate_email_verification_id(email) start.uri('/api/user/verify-email') .url_parameter('email', email) .url_parameter('sendVerifyPasswordEmail', false) .put() .go() end # # Generate a new RSA or EC key pair or an HMAC secret. # # @param key_id [string] (Optional) The Id for the key. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the key. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def generate_key(key_id, request) start.uri('/api/key/generate') .url_segment(key_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Generate a new Application Registration Verification Id to be used with the Verify Registration API. This API will not attempt to send an # email to the User. This API may be used to collect the verificationId for use with a third party system. # # @param email [string] The email address of the user that needs a new verification email. # @param application_id [string] The Id of the application to be verified. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def generate_registration_verification_id(email, application_id) start.uri('/api/user/verify-registration') .url_parameter('email', email) .url_parameter('sendVerifyPasswordEmail', false) .url_parameter('applicationId', application_id) .put() .go() end # # Generate a Two Factor secret that can be used to enable Two Factor authentication for a User. The response will contain # both the secret and a Base32 encoded form of the secret which can be shown to a User when using a 2 Step Authentication # application such as Google Authenticator. # # @return [FusionAuth::ClientResponse] The ClientResponse object. # def generate_two_factor_secret() start.uri('/api/two-factor/secret') .get() .go() end # # Generate a Two Factor secret that can be used to enable Two Factor authentication for a User. The response will contain # both the secret and a Base32 encoded form of the secret which can be shown to a User when using a 2 Step Authentication # application such as Google Authenticator. # # @param encoded_jwt [string] The encoded JWT (access token). # @return [FusionAuth::ClientResponse] The ClientResponse object. # def generate_two_factor_secret_using_jwt(encoded_jwt) start.uri('/api/two-factor/secret') .authorization('JWT ' + encoded_jwt) .get() .go() end # # Handles login via third-parties including Social login, external OAuth and OpenID Connect, and other # login systems. # # @param request [OpenStruct, Hash] The third-party login request that contains information from the third-party login # providers that FusionAuth uses to reconcile the user's account. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def identity_provider_login(request) start.uri('/api/identity-provider/login') .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Import an existing RSA or EC key pair or an HMAC secret. # # @param key_id [string] (Optional) The Id for the key. If not provided a secure random UUID will be generated. # @param request [OpenStruct, Hash] The request object that contains all of the information used to create the key. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def import_key(key_id, request) start.uri('/api/key/import') .url_segment(key_id) .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Bulk imports multiple users. This does some validation, but then tries to run batch inserts of users. This reduces # latency when inserting lots of users. Therefore, the error response might contain some information about failures, # but it will likely be pretty generic. # # @param request [OpenStruct, Hash] The request that contains all of the information about all of the users to import. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def import_users(request) start.uri('/api/user/import') .body_handler(FusionAuth::JSONBodyHandler.new(request)) .post() .go() end # # Issue a new access token (JWT) for the requested Application after ensuring the provided JWT is valid. A valid # access token is properly signed and not expired. #
# This API may be used in an SSO configuration to issue new tokens for another application after the user has
# obtained a valid token from authentication.
#
# @param application_id [string] The Application Id for which you are requesting a new access token be issued.
# @param encoded_jwt [string] The encoded JWT (access token).
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def issue_jwt(application_id, encoded_jwt)
start.uri('/api/jwt/issue')
.authorization('JWT ' + encoded_jwt)
.url_parameter('applicationId', application_id)
.get()
.go()
end
#
# Logs a user in.
#
# @param request [OpenStruct, Hash] The login request that contains the user credentials used to log them in.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def login(request)
start.uri('/api/login')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Sends a ping to FusionAuth indicating that the user was automatically logged into an application. When using
# FusionAuth's SSO or your own, you should call this if the user is already logged in centrally, but accesses an
# application where they no longer have a session. This helps correctly track login counts, times and helps with
# reporting.
#
# @param user_id [string] The Id of the user that was logged in.
# @param application_id [string] The Id of the application that they logged into.
# @param caller_ip_address [string] (Optional) The IP address of the end-user that is logging in. If a null value is provided
# the IP address will be that of the client or last proxy that sent the request.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def login_ping(user_id, application_id, caller_ip_address)
start.uri('/api/login')
.url_segment(user_id)
.url_segment(application_id)
.url_parameter('ipAddress', caller_ip_address)
.put()
.go()
end
#
# The Logout API is intended to be used to remove the refresh token and access token cookies if they exist on the
# client and revoke the refresh token stored. This API does nothing if the request does not contain an access
# token or refresh token cookies.
#
# @param global [Boolean] When this value is set to true all of the refresh tokens issued to the owner of the
# provided token will be revoked.
# @param refresh_token [string] (Optional) The refresh_token as a request parameter instead of coming in via a cookie.
# If provided this takes precedence over the cookie.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def logout(global, refresh_token)
start.uri('/api/logout')
.url_parameter('global', global)
.url_parameter('refreshToken', refresh_token)
.post()
.go()
end
#
# Retrieves the identity provider for the given domain. A 200 response code indicates the domain is managed
# by a registered identity provider. A 404 indicates the domain is not managed.
#
# @param domain [string] The domain or email address to lookup.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def lookup_identity_provider(domain)
start.uri('/api/identity-provider/lookup')
.url_parameter('domain', domain)
.get()
.go()
end
#
# Modifies a temporal user action by changing the expiration of the action and optionally adding a comment to the
# action.
#
# @param action_id [string] The Id of the action to modify. This is technically the user action log id.
# @param request [OpenStruct, Hash] The request that contains all of the information about the modification.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def modify_action(action_id, request)
start.uri('/api/user/action')
.url_segment(action_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Complete a login request using a passwordless code
#
# @param request [OpenStruct, Hash] The passwordless login request that contains all of the information used to complete login.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def passwordless_login(request)
start.uri('/api/passwordless/login')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Reactivates the application with the given Id.
#
# @param application_id [string] The Id of the application to reactivate.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def reactivate_application(application_id)
start.uri('/api/application')
.url_segment(application_id)
.url_parameter('reactivate', true)
.put()
.go()
end
#
# Reactivates the user with the given Id.
#
# @param user_id [string] The Id of the user to reactivate.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def reactivate_user(user_id)
start.uri('/api/user')
.url_segment(user_id)
.url_parameter('reactivate', true)
.put()
.go()
end
#
# Reactivates the user action with the given Id.
#
# @param user_action_id [string] The Id of the user action to reactivate.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def reactivate_user_action(user_action_id)
start.uri('/api/user-action')
.url_segment(user_action_id)
.url_parameter('reactivate', true)
.put()
.go()
end
#
# Reconcile a User to FusionAuth using JWT issued from another Identity Provider.
#
# @param request [OpenStruct, Hash] The reconcile request that contains the data to reconcile the User.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def reconcile_jwt(request)
start.uri('/api/jwt/reconcile')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Registers a user for an application. If you provide the User and the UserRegistration object on this request, it
# will create the user as well as register them for the application. This is called a Full Registration. However, if
# you only provide the UserRegistration object, then the user must already exist and they will be registered for the
# application. The user id can also be provided and it will either be used to look up an existing user or it will be
# used for the newly created User.
#
# @param user_id [string] (Optional) The Id of the user being registered for the application and optionally created.
# @param request [OpenStruct, Hash] The request that optionally contains the User and must contain the UserRegistration.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def register(user_id, request)
start.uri('/api/user/registration')
.url_segment(user_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Removes a user from the family with the given id.
#
# @param family_id [string] The id of the family to remove the user from.
# @param user_id [string] The id of the user to remove from the family.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def remove_user_from_family(family_id, user_id)
start.uri('/api/user/family')
.url_segment(family_id)
.url_segment(user_id)
.delete()
.go()
end
#
# Re-sends the verification email to the user.
#
# @param email [string] The email address of the user that needs a new verification email.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def resend_email_verification(email)
start.uri('/api/user/verify-email')
.url_parameter('email', email)
.put()
.go()
end
#
# Re-sends the application registration verification email to the user.
#
# @param email [string] The email address of the user that needs a new verification email.
# @param application_id [string] The Id of the application to be verified.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def resend_registration_verification(email, application_id)
start.uri('/api/user/verify-registration')
.url_parameter('email', email)
.url_parameter('applicationId', application_id)
.put()
.go()
end
#
# Retrieves a single action log (the log of a user action that was taken on a user previously) for the given Id.
#
# @param action_id [string] The Id of the action to retrieve.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_action(action_id)
start.uri('/api/user/action')
.url_segment(action_id)
.get()
.go()
end
#
# Retrieves all of the actions for the user with the given Id. This will return all time based actions that are active,
# and inactive as well as non-time based actions.
#
# @param user_id [string] The Id of the user to fetch the actions for.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_actions(user_id)
start.uri('/api/user/action')
.url_parameter('userId', user_id)
.get()
.go()
end
#
# Retrieves all of the actions for the user with the given Id that are currently preventing the User from logging in.
#
# @param user_id [string] The Id of the user to fetch the actions for.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_actions_preventing_login(user_id)
start.uri('/api/user/action')
.url_parameter('userId', user_id)
.url_parameter('preventingLogin', true)
.get()
.go()
end
#
# Retrieves all of the actions for the user with the given Id that are currently active.
# An active action means one that is time based and has not been canceled, and has not ended.
#
# @param user_id [string] The Id of the user to fetch the actions for.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_active_actions(user_id)
start.uri('/api/user/action')
.url_parameter('userId', user_id)
.url_parameter('active', true)
.get()
.go()
end
#
# Retrieves the application for the given id or all of the applications if the id is null.
#
# @param application_id [string] (Optional) The application id.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_application(application_id)
start.uri('/api/application')
.url_segment(application_id)
.get()
.go()
end
#
# Retrieves all of the applications.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_applications()
start.uri('/api/application')
.get()
.go()
end
#
# Retrieves a single audit log for the given Id.
#
# @param audit_log_id [Numeric] The Id of the audit log to retrieve.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_audit_log(audit_log_id)
start.uri('/api/system/audit-log')
.url_segment(audit_log_id)
.get()
.go()
end
#
# Retrieves the Consent for the given Id.
#
# @param consent_id [string] The Id of the consent.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_consent(consent_id)
start.uri('/api/consent')
.url_segment(consent_id)
.get()
.go()
end
#
# Retrieves all of the consent.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_consents()
start.uri('/api/consent')
.get()
.go()
end
#
# Retrieves the daily active user report between the two instants. If you specify an application id, it will only
# return the daily active counts for that application.
#
# @param application_id [string] (Optional) The application id.
# @param start [OpenStruct, Hash] The start instant as UTC milliseconds since Epoch.
# @param _end [OpenStruct, Hash] The end instant as UTC milliseconds since Epoch.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_daily_active_report(application_id, start, _end)
start.uri('/api/report/daily-active-user')
.url_parameter('applicationId', application_id)
.url_parameter('start', start)
.url_parameter('end', _end)
.get()
.go()
end
#
# Retrieves the email template for the given Id. If you don't specify the id, this will return all of the email templates.
#
# @param email_template_id [string] (Optional) The Id of the email template.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_email_template(email_template_id)
start.uri('/api/email/template')
.url_segment(email_template_id)
.get()
.go()
end
#
# Creates a preview of the email template provided in the request. This allows you to preview an email template that
# hasn't been saved to the database yet. The entire email template does not need to be provided on the request. This
# will create the preview based on whatever is given.
#
# @param request [OpenStruct, Hash] The request that contains the email template and optionally a locale to render it in.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_email_template_preview(request)
start.uri('/api/email/template/preview')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Retrieves all of the email templates.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_email_templates()
start.uri('/api/email/template')
.get()
.go()
end
#
# Retrieves a single event log for the given Id.
#
# @param event_log_id [Numeric] The Id of the event log to retrieve.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_event_log(event_log_id)
start.uri('/api/system/event-log')
.url_segment(event_log_id)
.get()
.go()
end
#
# Retrieves all of the families that a user belongs to.
#
# @param user_id [string] The User's id
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_families(user_id)
start.uri('/api/user/family')
.url_parameter('userId', user_id)
.get()
.go()
end
#
# Retrieves all of the members of a family by the unique Family Id.
#
# @param family_id [string] The unique Id of the Family.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_family_members_by_family_id(family_id)
start.uri('/api/user/family')
.url_segment(family_id)
.get()
.go()
end
#
# Retrieves the group for the given Id.
#
# @param group_id [string] The Id of the group.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_group(group_id)
start.uri('/api/group')
.url_segment(group_id)
.get()
.go()
end
#
# Retrieves all of the groups.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_groups()
start.uri('/api/group')
.get()
.go()
end
#
# Retrieves the identity provider for the given id or all of the identity providers if the id is null.
#
# @param identity_provider_id [string] (Optional) The identity provider id.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_identity_provider(identity_provider_id)
start.uri('/api/identity-provider')
.url_segment(identity_provider_id)
.get()
.go()
end
#
# Retrieves all of the identity providers.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_identity_providers()
start.uri('/api/identity-provider')
.get()
.go()
end
#
# Retrieves all of the actions for the user with the given Id that are currently inactive.
# An inactive action means one that is time based and has been canceled or has expired, or is not time based.
#
# @param user_id [string] The Id of the user to fetch the actions for.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_inactive_actions(user_id)
start.uri('/api/user/action')
.url_parameter('userId', user_id)
.url_parameter('active', false)
.get()
.go()
end
#
# Retrieves all of the applications that are currently inactive.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_inactive_applications()
start.uri('/api/application')
.url_parameter('inactive', true)
.get()
.go()
end
#
# Retrieves all of the user actions that are currently inactive.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_inactive_user_actions()
start.uri('/api/user-action')
.url_parameter('inactive', true)
.get()
.go()
end
#
# Retrieves the available integrations.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_integration()
start.uri('/api/integration')
.get()
.go()
end
#
# Retrieves the Public Key configured for verifying JSON Web Tokens (JWT) by the key Id. If the key Id is provided a
# single public key will be returned if one is found by that id. If the optional parameter key Id is not provided all
# public keys will be returned.
#
# @param key_id [string] (Optional) The Id of the public key.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_jwt_public_key(key_id)
start.uri('/api/jwt/public-key')
.url_segment(key_id)
.get()
.go()
end
#
# Retrieves all Public Keys configured for verifying JSON Web Tokens (JWT).
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_jwt_public_keys()
start.uri('/api/jwt/public-key')
.get()
.go()
end
#
# Retrieves the key for the given Id.
#
# @param key_id [string] The Id of the key.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_key(key_id)
start.uri('/api/key')
.url_segment(key_id)
.get()
.go()
end
#
# Retrieves all of the keys.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_keys()
start.uri('/api/key')
.get()
.go()
end
#
# Retrieves the lambda for the given Id.
#
# @param lambda_id [string] The Id of the lambda.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_lambda(lambda_id)
start.uri('/api/lambda')
.url_segment(lambda_id)
.get()
.go()
end
#
# Retrieves all of the lambdas.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_lambdas()
start.uri('/api/lambda')
.get()
.go()
end
#
# Retrieves all of the lambdas for the provided type.
#
# @param type [OpenStruct, Hash] The type of the lambda to return.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_lambdas_by_type(type)
start.uri('/api/lambda')
.url_parameter('type', type)
.get()
.go()
end
#
# Retrieves the login report between the two instants. If you specify an application id, it will only return the
# login counts for that application.
#
# @param application_id [string] (Optional) The application id.
# @param start [OpenStruct, Hash] The start instant as UTC milliseconds since Epoch.
# @param _end [OpenStruct, Hash] The end instant as UTC milliseconds since Epoch.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_login_report(application_id, start, _end)
start.uri('/api/report/login')
.url_parameter('applicationId', application_id)
.url_parameter('start', start)
.url_parameter('end', _end)
.get()
.go()
end
#
# Retrieves the monthly active user report between the two instants. If you specify an application id, it will only
# return the monthly active counts for that application.
#
# @param application_id [string] (Optional) The application id.
# @param start [OpenStruct, Hash] The start instant as UTC milliseconds since Epoch.
# @param _end [OpenStruct, Hash] The end instant as UTC milliseconds since Epoch.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_monthly_active_report(application_id, start, _end)
start.uri('/api/report/monthly-active-user')
.url_parameter('applicationId', application_id)
.url_parameter('start', start)
.url_parameter('end', _end)
.get()
.go()
end
#
# Retrieves the Oauth2 configuration for the application for the given Application Id.
#
# @param application_id [string] The Id of the Application to retrieve OAuth configuration.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_oauth_configuration(application_id)
start.uri('/api/application')
.url_segment(application_id)
.url_segment("oauth-configuration")
.get()
.go()
end
#
# Retrieves the password validation rules.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_password_validation_rules()
start.uri('/api/system-configuration/password-validation-rules')
.get()
.go()
end
#
# Retrieves all of the children for the given parent email address.
#
# @param parent_email [string] The email of the parent.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_pending_children(parent_email)
start.uri('/api/user/family/pending')
.url_parameter('parentEmail', parent_email)
.get()
.go()
end
#
# Retrieves the last number of login records.
#
# @param offset [Numeric] The initial record. e.g. 0 is the last login, 100 will be the 100th most recent login.
# @param limit [Numeric] (Optional, defaults to 10) The number of records to retrieve.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_recent_logins(offset, limit)
start.uri('/api/user/recent-login')
.url_parameter('offset', offset)
.url_parameter('limit', limit)
.get()
.go()
end
#
# Retrieves the refresh tokens that belong to the user with the given Id.
#
# @param user_id [string] The Id of the user.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_refresh_tokens(user_id)
start.uri('/api/jwt/refresh')
.url_parameter('userId', user_id)
.get()
.go()
end
#
# Retrieves the user registration for the user with the given id and the given application id.
#
# @param user_id [string] The Id of the user.
# @param application_id [string] The Id of the application.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_registration(user_id, application_id)
start.uri('/api/user/registration')
.url_segment(user_id)
.url_segment(application_id)
.get()
.go()
end
#
# Retrieves the registration report between the two instants. If you specify an application id, it will only return
# the registration counts for that application.
#
# @param application_id [string] (Optional) The application id.
# @param start [OpenStruct, Hash] The start instant as UTC milliseconds since Epoch.
# @param _end [OpenStruct, Hash] The end instant as UTC milliseconds since Epoch.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_registration_report(application_id, start, _end)
start.uri('/api/report/registration')
.url_parameter('applicationId', application_id)
.url_parameter('start', start)
.url_parameter('end', _end)
.get()
.go()
end
#
# Retrieves the system configuration.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_system_configuration()
start.uri('/api/system-configuration')
.get()
.go()
end
#
# Retrieves the tenant for the given Id.
#
# @param tenant_id [string] The Id of the tenant.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_tenant(tenant_id)
start.uri('/api/tenant')
.url_segment(tenant_id)
.get()
.go()
end
#
# Retrieves all of the tenants.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_tenants()
start.uri('/api/tenant')
.get()
.go()
end
#
# Retrieves the totals report. This contains all of the total counts for each application and the global registration
# count.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_total_report()
start.uri('/api/report/totals')
.get()
.go()
end
#
# Retrieves the user for the given Id.
#
# @param user_id [string] The Id of the user.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user(user_id)
start.uri('/api/user')
.url_segment(user_id)
.get()
.go()
end
#
# Retrieves the user action for the given Id. If you pass in null for the id, this will return all of the user
# actions.
#
# @param user_action_id [string] (Optional) The Id of the user action.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_action(user_action_id)
start.uri('/api/user-action')
.url_segment(user_action_id)
.get()
.go()
end
#
# Retrieves the user action reason for the given Id. If you pass in null for the id, this will return all of the user
# action reasons.
#
# @param user_action_reason_id [string] (Optional) The Id of the user action reason.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_action_reason(user_action_reason_id)
start.uri('/api/user-action-reason')
.url_segment(user_action_reason_id)
.get()
.go()
end
#
# Retrieves all the user action reasons.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_action_reasons()
start.uri('/api/user-action-reason')
.get()
.go()
end
#
# Retrieves all of the user actions.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_actions()
start.uri('/api/user-action')
.get()
.go()
end
#
# Retrieves the user by a change password Id. The intended use of this API is to retrieve a user after the forgot
# password workflow has been initiated and you may not know the user's email or username.
#
# @param change_password_id [string] The unique change password Id that was sent via email or returned by the Forgot Password API.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_by_change_password_id(change_password_id)
start.uri('/api/user')
.url_parameter('changePasswordId', change_password_id)
.get()
.go()
end
#
# Retrieves the user for the given email.
#
# @param email [string] The email of the user.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_by_email(email)
start.uri('/api/user')
.url_parameter('email', email)
.get()
.go()
end
#
# Retrieves the user for the loginId. The loginId can be either the username or the email.
#
# @param login_id [string] The email or username of the user.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_by_login_id(login_id)
start.uri('/api/user')
.url_parameter('loginId', login_id)
.get()
.go()
end
#
# Retrieves the user for the given username.
#
# @param username [string] The username of the user.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_by_username(username)
start.uri('/api/user')
.url_parameter('username', username)
.get()
.go()
end
#
# Retrieves the user by a verificationId. The intended use of this API is to retrieve a user after the forgot
# password workflow has been initiated and you may not know the user's email or username.
#
# @param verification_id [string] The unique verification Id that has been set on the user object.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_by_verification_id(verification_id)
start.uri('/api/user')
.url_parameter('verificationId', verification_id)
.get()
.go()
end
#
# Retrieves all of the comments for the user with the given Id.
#
# @param user_id [string] The Id of the user.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_comments(user_id)
start.uri('/api/user/comment')
.url_segment(user_id)
.get()
.go()
end
#
# Retrieve a single User consent by Id.
#
# @param user_consent_id [string] The User consent Id
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_consent(user_consent_id)
start.uri('/api/user/consent')
.url_segment(user_consent_id)
.get()
.go()
end
#
# Retrieves all of the consents for a User.
#
# @param user_id [string] The User's Id
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_consents(user_id)
start.uri('/api/user/consent')
.url_parameter('userId', user_id)
.get()
.go()
end
#
# Retrieves the login report between the two instants for a particular user by Id. If you specify an application id, it will only return the
# login counts for that application.
#
# @param application_id [string] (Optional) The application id.
# @param user_id [string] The userId id.
# @param start [OpenStruct, Hash] The start instant as UTC milliseconds since Epoch.
# @param _end [OpenStruct, Hash] The end instant as UTC milliseconds since Epoch.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_login_report(application_id, user_id, start, _end)
start.uri('/api/report/login')
.url_parameter('applicationId', application_id)
.url_parameter('userId', user_id)
.url_parameter('start', start)
.url_parameter('end', _end)
.get()
.go()
end
#
# Retrieves the login report between the two instants for a particular user by login Id. If you specify an application id, it will only return the
# login counts for that application.
#
# @param application_id [string] (Optional) The application id.
# @param login_id [string] The userId id.
# @param start [OpenStruct, Hash] The start instant as UTC milliseconds since Epoch.
# @param _end [OpenStruct, Hash] The end instant as UTC milliseconds since Epoch.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_login_report_by_login_id(application_id, login_id, start, _end)
start.uri('/api/report/login')
.url_parameter('applicationId', application_id)
.url_parameter('loginId', login_id)
.url_parameter('start', start)
.url_parameter('end', _end)
.get()
.go()
end
#
# Retrieves the last number of login records for a user.
#
# @param user_id [string] The Id of the user.
# @param offset [Numeric] The initial record. e.g. 0 is the last login, 100 will be the 100th most recent login.
# @param limit [Numeric] (Optional, defaults to 10) The number of records to retrieve.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_recent_logins(user_id, offset, limit)
start.uri('/api/user/recent-login')
.url_parameter('userId', user_id)
.url_parameter('offset', offset)
.url_parameter('limit', limit)
.get()
.go()
end
#
# Retrieves the user for the given Id. This method does not use an API key, instead it uses a JSON Web Token (JWT) for authentication.
#
# @param encoded_jwt [string] The encoded JWT (access token).
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_user_using_jwt(encoded_jwt)
start.uri('/api/user')
.authorization('JWT ' + encoded_jwt)
.get()
.go()
end
#
# Retrieves the webhook for the given Id. If you pass in null for the id, this will return all the webhooks.
#
# @param webhook_id [string] (Optional) The Id of the webhook.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_webhook(webhook_id)
start.uri('/api/webhook')
.url_segment(webhook_id)
.get()
.go()
end
#
# Retrieves all the webhooks.
#
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def retrieve_webhooks()
start.uri('/api/webhook')
.get()
.go()
end
#
# Revokes a single refresh token, all tokens for a user or all tokens for an application. If you provide a user id
# and an application id, this will delete all the refresh tokens for that user for that application.
#
# @param token [string] (Optional) The refresh token to delete.
# @param user_id [string] (Optional) The user id whose tokens to delete.
# @param application_id [string] (Optional) The application id of the tokens to delete.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def revoke_refresh_token(token, user_id, application_id)
start.uri('/api/jwt/refresh')
.url_parameter('token', token)
.url_parameter('userId', user_id)
.url_parameter('applicationId', application_id)
.delete()
.go()
end
#
# Revokes a single User consent by Id.
#
# @param user_consent_id [string] The User Consent Id
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def revoke_user_consent(user_consent_id)
start.uri('/api/user/consent')
.url_segment(user_consent_id)
.delete()
.go()
end
#
# Searches the audit logs with the specified criteria and pagination.
#
# @param request [OpenStruct, Hash] The search criteria and pagination information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def search_audit_logs(request)
start.uri('/api/system/audit-log/search')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Searches the event logs with the specified criteria and pagination.
#
# @param request [OpenStruct, Hash] The search criteria and pagination information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def search_event_logs(request)
start.uri('/api/system/event-log/search')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Searches the login records with the specified criteria and pagination.
#
# @param request [OpenStruct, Hash] The search criteria and pagination information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def search_login_records(request)
start.uri('/api/system/login-record/search')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Retrieves the users for the given ids. If any id is invalid, it is ignored.
#
# @param ids [Array] The user ids to search for.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def search_users(ids)
start.uri('/api/user/search')
.url_parameter('ids', ids)
.get()
.go()
end
#
# Retrieves the users for the given search criteria and pagination.
#
# @param request [OpenStruct, Hash] The search criteria and pagination constraints. Fields used: queryString, numberOfResults, startRow,
# and sort fields.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def search_users_by_query_string(request)
start.uri('/api/user/search')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Send an email using an email template id. You can optionally provide requestData
to access key value
# pairs in the email template.
#
# @param email_template_id [string] The id for the template.
# @param request [OpenStruct, Hash] The send email request that contains all of the information used to send the email.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def send_email(email_template_id, request)
start.uri('/api/email/send')
.url_segment(email_template_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Sends out an email to a parent that they need to register and create a family or need to log in and add a child to their existing family.
#
# @param request [OpenStruct, Hash] The request object that contains the parent email.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def send_family_request_email(request)
start.uri('/api/user/family/request')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Send a passwordless authentication code in an email to complete login.
#
# @param request [OpenStruct, Hash] The passwordless send request that contains all of the information used to send an email containing a code.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def send_passwordless_code(request)
start.uri('/api/passwordless/send')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Send a Two Factor authentication code to assist in setting up Two Factor authentication or disabling.
#
# @param request [OpenStruct, Hash] The request object that contains all of the information used to send the code.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def send_two_factor_code(request)
start.uri('/api/two-factor/send')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Send a Two Factor authentication code to allow the completion of Two Factor authentication.
#
# @param two_factor_id [string] The Id returned by the Login API necessary to complete Two Factor authentication.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def send_two_factor_code_for_login(two_factor_id)
start.uri('/api/two-factor/send')
.url_segment(two_factor_id)
.post()
.go()
end
#
# Complete login using a 2FA challenge
#
# @param request [OpenStruct, Hash] The login request that contains the user credentials used to log them in.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def two_factor_login(request)
start.uri('/api/two-factor/login')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.post()
.go()
end
#
# Updates the application with the given Id.
#
# @param application_id [string] The Id of the application to update.
# @param request [OpenStruct, Hash] The request that contains all of the new application information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_application(application_id, request)
start.uri('/api/application')
.url_segment(application_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the application role with the given id for the application.
#
# @param application_id [string] The Id of the application that the role belongs to.
# @param role_id [string] The Id of the role to update.
# @param request [OpenStruct, Hash] The request that contains all of the new role information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_application_role(application_id, role_id, request)
start.uri('/api/application')
.url_segment(application_id)
.url_segment("role")
.url_segment(role_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the consent with the given Id.
#
# @param consent_id [string] The Id of the consent to update.
# @param request [OpenStruct, Hash] The request that contains all of the new consent information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_consent(consent_id, request)
start.uri('/api/consent')
.url_segment(consent_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the email template with the given Id.
#
# @param email_template_id [string] The Id of the email template to update.
# @param request [OpenStruct, Hash] The request that contains all of the new email template information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_email_template(email_template_id, request)
start.uri('/api/email/template')
.url_segment(email_template_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the group with the given Id.
#
# @param group_id [string] The Id of the group to update.
# @param request [OpenStruct, Hash] The request that contains all of the new group information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_group(group_id, request)
start.uri('/api/group')
.url_segment(group_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the identity provider with the given Id.
#
# @param identity_provider_id [string] The Id of the identity provider to update.
# @param request [OpenStruct, Hash] The request object that contains the updated identity provider.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_identity_provider(identity_provider_id, request)
start.uri('/api/identity-provider')
.url_segment(identity_provider_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the available integrations.
#
# @param request [OpenStruct, Hash] The request that contains all of the new integration information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_integrations(request)
start.uri('/api/integration')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the key with the given Id.
#
# @param key_id [string] The Id of the key to update.
# @param request [OpenStruct, Hash] The request that contains all of the new key information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_key(key_id, request)
start.uri('/api/key')
.url_segment(key_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the lambda with the given Id.
#
# @param lambda_id [string] The Id of the lambda to update.
# @param request [OpenStruct, Hash] The request that contains all of the new lambda information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_lambda(lambda_id, request)
start.uri('/api/lambda')
.url_segment(lambda_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the registration for the user with the given id and the application defined in the request.
#
# @param user_id [string] The Id of the user whose registration is going to be updated.
# @param request [OpenStruct, Hash] The request that contains all of the new registration information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_registration(user_id, request)
start.uri('/api/user/registration')
.url_segment(user_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the system configuration.
#
# @param request [OpenStruct, Hash] The request that contains all of the new system configuration information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_system_configuration(request)
start.uri('/api/system-configuration')
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the tenant with the given Id.
#
# @param tenant_id [string] The Id of the tenant to update.
# @param request [OpenStruct, Hash] The request that contains all of the new tenant information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_tenant(tenant_id, request)
start.uri('/api/tenant')
.url_segment(tenant_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the user with the given Id.
#
# @param user_id [string] The Id of the user to update.
# @param request [OpenStruct, Hash] The request that contains all of the new user information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_user(user_id, request)
start.uri('/api/user')
.url_segment(user_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the user action with the given Id.
#
# @param user_action_id [string] The Id of the user action to update.
# @param request [OpenStruct, Hash] The request that contains all of the new user action information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_user_action(user_action_id, request)
start.uri('/api/user-action')
.url_segment(user_action_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the user action reason with the given Id.
#
# @param user_action_reason_id [string] The Id of the user action reason to update.
# @param request [OpenStruct, Hash] The request that contains all of the new user action reason information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_user_action_reason(user_action_reason_id, request)
start.uri('/api/user-action-reason')
.url_segment(user_action_reason_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates a single User consent by Id.
#
# @param user_consent_id [string] The User Consent Id
# @param request [OpenStruct, Hash] The request that contains the user consent information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_user_consent(user_consent_id, request)
start.uri('/api/user/consent')
.url_segment(user_consent_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Updates the webhook with the given Id.
#
# @param webhook_id [string] The Id of the webhook to update.
# @param request [OpenStruct, Hash] The request that contains all of the new webhook information.
# @return [FusionAuth::ClientResponse] The ClientResponse object.
#
def update_webhook(webhook_id, request)
start.uri('/api/webhook')
.url_segment(webhook_id)
.body_handler(FusionAuth::JSONBodyHandler.new(request))
.put()
.go()
end
#
# Validates the provided JWT (encoded JWT string) to ensure the token is valid. A valid access token is properly
# signed and not expired.
#
# This API may be used to verify the JWT as well as decode the encoded JWT into human readable identity claims. # # @param encoded_jwt [string] The encoded JWT (access token). # @return [FusionAuth::ClientResponse] The ClientResponse object. # def validate_jwt(encoded_jwt) start.uri('/api/jwt/validate') .authorization('JWT ' + encoded_jwt) .get() .go() end # # Confirms a email verification. The Id given is usually from an email sent to the user. # # @param verification_id [string] The email verification id sent to the user. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def verify_email(verification_id) start.uri('/api/user/verify-email') .url_segment(verification_id) .post() .go() end # # Confirms an application registration. The Id given is usually from an email sent to the user. # # @param verification_id [string] The registration verification Id sent to the user. # @return [FusionAuth::ClientResponse] The ClientResponse object. # def verify_registration(verification_id) start.uri('/api/user/verify-registration') .url_segment(verification_id) .post() .go() end # # Starts the HTTP call # # @return [RESTClient] The RESTClient # private def start RESTClient.new .authorization(@api_key) .success_response_handler(FusionAuth::JSONResponseHandler.new(OpenStruct)) .error_response_handler(FusionAuth::JSONResponseHandler.new(OpenStruct)) .url(@base_url) .connect_timeout(@connect_timeout) .read_timeout(@read_timeout) end end end