Class: Oktakit::Client

Inherits:
Object
  • Object
show all
Includes:
AdminRoles, Apps, Events, Factors, Groups, IdentityProviders, Schemas, Templates, Users
Defined in:
lib/oktakit/client.rb,
lib/oktakit/client/apps.rb,
lib/oktakit/client/users.rb,
lib/oktakit/client/events.rb,
lib/oktakit/client/groups.rb,
lib/oktakit/client/factors.rb,
lib/oktakit/client/schemas.rb,
lib/oktakit/client/templates.rb,
lib/oktakit/client/admin_roles.rb,
lib/oktakit/client/identity_providers.rb

Defined Under Namespace

Modules: AdminRoles, Apps, Events, Factors, Groups, IdentityProviders, Schemas, Templates, Users

Constant Summary collapse

RACK_BUILDER_CLASS =

In Faraday 0.9, Faraday::Builder was renamed to Faraday::RackBuilder

defined?(Faraday::RackBuilder) ? Faraday::RackBuilder : Faraday::Builder
MIDDLEWARE =

Default Faraday middleware stack

RACK_BUILDER_CLASS.new do |builder|
  builder.use Oktakit::Response::RaiseError
  builder.adapter Faraday.default_adapter
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Users

#activate_user, #change_password, #change_recovery_question, #create_user, #deactivate_user, #expire_password, #forgot_password, #get_assigned_app_links, #get_member_groups, #get_user, #list_users, #reset_factors, #reset_password, #suspend_user, #unlock_user, #unsuspend_user, #update_profile, #update_user

Methods included from Templates

#add_sms_template, #get_sms_template, #list_sms_templates, #partial_sms_template_update, #remove_sms_template, #update_sms_template

Methods included from Schemas

#add_property_to_user_profile_schema, #get_user_schema, #remove_property_from_user_profile_schema, #update_user_profile_schema_property

Methods included from IdentityProviders

#activate_identity_provider, #add_identity_provider, #add_x509_certificate_public_key, #deactivate_identity_provider, #delete_identity_provider, #delete_key, #get_identity_provider, #get_identity_provider_transaction, #get_key, #get_source_idp_user_for_idp_transaction, #get_target_user_for_idp_provision_transaction, #link_idp_user, #list_identity_providers, #list_keys, #list_users_for_idp_link_transaction, #provision_idp_user, #update_identity_provider

Methods included from Groups

#add_group, #add_user_to_group, #get_group, #list_assigned_applications, #list_group_members, #list_groups, #remove_group, #remove_user_from_group, #update_group

Methods included from Factors

#activate_factor, #enroll_factor, #get_factor, #list_enrolled_factors, #list_factors_to_enroll, #list_security_questions, #poll_for_verify_transaction_completion, #reset_factor, #verify_push_factor, #verify_security_question_factor, #verify_sms_factor, #verify_token_factor, #verify_totp_factor

Methods included from Events

#list_events

Methods included from Apps

#activate_application, #add_application, #assign_group_to_application, #assign_user_to_application_for_sso, #assign_user_to_application_for_sso_provisioning, #deactivate_application, #delete_application, #generate_new_application_key_credential, #get_application, #get_assigned_group_for_application, #get_assigned_user_for_application, #get_key_credential_for_application, #list_applications, #list_groups_assigned_to_application, #list_key_credentials_for_application, #list_users_assigned_to_application, #preview_saml_metadata_for_application, #remove_group_from_application, #remove_user_from_application, #update_application, #update_application_credentials_for_assigned_user, #update_application_profile_for_assigned_user

Methods included from AdminRoles

#add_app_target_to_app_admin_role, #add_group_target_to_user_admin_role, #assign_role_to_user, #list_app_targets_for_app_admin_role, #list_group_targets_for_user_admin_role, #list_roles_assigned_to_user, #remove_app_target_from_app_admin_role, #remove_group_target_from_user_admin_role, #unassign_role_from_user

Constructor Details

#initialize(token:, organization: nil, api_endpoint: nil) ⇒ Client

Returns a new instance of Client.



34
35
36
37
38
39
40
41
42
# File 'lib/oktakit/client.rb', line 34

def initialize(token:, organization: nil, api_endpoint: nil)
  if organization.nil? && api_endpoint.nil?
    raise ArgumentError, "Please provide either the organization or the api_endpoint argument"
  end

  @token = token
  @organization = organization
  @api_endpoint = api_endpoint
end

Instance Attribute Details

#last_responseObject (readonly)

Returns the value of attribute last_response.



165
166
167
# File 'lib/oktakit/client.rb', line 165

def last_response
  @last_response
end

Instance Method Details

#api_endpointObject



44
45
46
47
48
49
50
# File 'lib/oktakit/client.rb', line 44

def api_endpoint
  if @api_endpoint
    @api_endpoint
  else
    "https://#{@organization.downcase}.okta.com/api/v1"
  end
end

#delete(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP DELETE request

Parameters:

  • url (String)

    The path, relative to #api_endpoint

  • options (:query) (defaults to: {})
    Hash

    Optional. Query params for request

  • options (:headers) (defaults to: {})
    Hash

    Optional. Header params for the request.

  • options (:accept) (defaults to: {})
    String

    Optional. The content type to accept. Default application/json

  • options (:content_type) (defaults to: {})
    String

    Optional. The content type for the request. Default application/json

  • options (Hash) (defaults to: {})

    Optional. Body params for request.

Returns:

  • (Sawyer::Resource)


144
145
146
147
148
# File 'lib/oktakit/client.rb', line 144

def delete(url, options = {})
  request :delete, url, query: options.delete(:query), headers: options.delete(:headers),
                        accept: options.delete(:accept), content_type: options.delete(:content_type),
                        data: options
end

#get(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP GET request

Parameters:

  • url (String)

    The path, relative to #api_endpoint

  • options (:query) (defaults to: {})
    Hash

    Optional. Query params for request

  • options (:headers) (defaults to: {})
    Hash

    Optional. Header params for the request.

  • options (:accept) (defaults to: {})
    String

    Optional. The content type to accept. Default application/json

  • options (:content_type) (defaults to: {})
    String

    Optional. The content type for the request. Default application/json

  • options (:paginate) (defaults to: {})
    Boolean

    Optional. If true, will auto-paginate Okta’s API responses.

  • options (Hash) (defaults to: {})

    Optional. Body params for request.

Returns:

  • (Sawyer::Resource)


62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/oktakit/client.rb', line 62

def get(url, options = {})
  should_paginate = options.delete(:paginate)
  request_options = {
    query: options.delete(:query),
    headers: options.delete(:headers),
    accept: options.delete(:accept),
    content_type: options.delete(:content_type),
    paginate: should_paginate,
    data: options
  }

  resp, status, next_page = request :get, url, **request_options

  # If request succeeded and we should paginate, then automatically traverse all next_pages
  if status == 200 && should_paginate
    all_objs = [resp]
    while next_page
      resp, status, next_page = request :get, next_page, **request_options
      break unless status == 200 # Return early if page request fails

      all_objs << resp
    end
    resp = all_objs.flatten
  end

  [resp, status]
end

#head(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP HEAD request

Parameters:

  • url (String)

    The path, relative to #api_endpoint

  • options (:query) (defaults to: {})
    Hash

    Optional. Query params for request

  • options (:headers) (defaults to: {})
    Hash

    Optional. Header params for the request.

  • options (:accept) (defaults to: {})
    String

    Optional. The content type to accept. Default application/json

  • options (:content_type) (defaults to: {})
    String

    Optional. The content type for the request. Default application/json

  • options (Hash) (defaults to: {})

    Optional. Body params for request.

Returns:

  • (Sawyer::Resource)


159
160
161
162
163
# File 'lib/oktakit/client.rb', line 159

def head(url, options = {})
  request :head, url, query: options.delete(:query), headers: options.delete(:headers),
                      accept: options.delete(:accept), content_type: options.delete(:content_type),
                      data: options
end

#patch(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP PATCH request

Parameters:

  • url (String)

    The path, relative to #api_endpoint

  • options (:query) (defaults to: {})
    Hash

    Optional. Query params for request

  • options (:headers) (defaults to: {})
    Hash

    Optional. Header params for the request.

  • options (:accept) (defaults to: {})
    String

    Optional. The content type to accept. Default application/json

  • options (:content_type) (defaults to: {})
    String

    Optional. The content type for the request. Default application/json

  • options (Hash) (defaults to: {})

    Optional. Body params for request.

Returns:

  • (Sawyer::Resource)


129
130
131
132
133
# File 'lib/oktakit/client.rb', line 129

def patch(url, options = {})
  request :patch, url, query: options.delete(:query), headers: options.delete(:headers),
                       accept: options.delete(:accept), content_type: options.delete(:content_type),
                       data: options
end

#post(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP POST request

Parameters:

  • url (String)

    The path, relative to #api_endpoint

  • options (:query) (defaults to: {})
    Hash

    Optional. Query params for request

  • options (:headers) (defaults to: {})
    Hash

    Optional. Header params for the request.

  • options (:accept) (defaults to: {})
    String

    Optional. The content type to accept. Default application/json

  • options (:content_type) (defaults to: {})
    String

    Optional. The content type for the request. Default application/json

  • options (Hash) (defaults to: {})

    Optional. Body params for request.

Returns:

  • (Sawyer::Resource)


99
100
101
102
103
# File 'lib/oktakit/client.rb', line 99

def post(url, options = {})
  request :post, url, query: options.delete(:query), headers: options.delete(:headers),
                      accept: options.delete(:accept), content_type: options.delete(:content_type),
                      data: options
end

#put(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP PUT request

Parameters:

  • url (String)

    The path, relative to #api_endpoint

  • options (:query) (defaults to: {})
    Hash

    Optional. Query params for request

  • options (:headers) (defaults to: {})
    Hash

    Optional. Header params for the request.

  • options (:accept) (defaults to: {})
    String

    Optional. The content type to accept. Default application/json

  • options (:content_type) (defaults to: {})
    String

    Optional. The content type for the request. Default application/json

  • options (Hash) (defaults to: {})

    Optional. Body params for request.

Returns:

  • (Sawyer::Resource)


114
115
116
117
118
# File 'lib/oktakit/client.rb', line 114

def put(url, options = {})
  request :put, url, query: options.delete(:query), headers: options.delete(:headers),
                     accept: options.delete(:accept), content_type: options.delete(:content_type),
                     data: options
end