module WorkOS::Organizations

The Organizations module provides resource methods for working with Organizations

Public Class Methods

create_organization(domains:, name:) click to toggle source
# File lib/workos/organizations.rb, line 89
def create_organization(domains:, name:)
  request = post_request(
    auth: true,
    body: { domains: domains, name: name },
    path: '/organizations',
  )

  response = execute_request(request: request)
  check_and_raise_organization_error(response: response)

  WorkOS::Organization.new(response.body)
end
delete_organization(id:) click to toggle source
# File lib/workos/organizations.rb, line 138
def delete_organization(id:)
  request = delete_request(
    auth: true,
    path: "/organizations/#{id}",
  )

  response = execute_request(request: request)

  response.is_a? Net::HTTPSuccess
end
get_organization(id:) click to toggle source
# File lib/workos/organizations.rb, line 67
def get_organization(id:)
  request = get_request(
    auth: true,
    path: "/organizations/#{id}",
  )

  response = execute_request(request: request)

  WorkOS::Organization.new(response.body)
end
list_organizations(options = {}) click to toggle source
# File lib/workos/organizations.rb, line 30
def list_organizations(options = {})
  response = execute_request(
    request: get_request(
      path: '/organizations',
      auth: true,
      params: options,
    ),
  )

  parsed_response = JSON.parse(response.body)

  organizations = parsed_response['data'].map do |organization|
    ::WorkOS::Organization.new(organization.to_json)
  end

  WorkOS::Types::ListStruct.new(
    data: organizations,
    list_metadata: parsed_response['listMetadata'],
  )
end
update_organization(organization:, domains:, name:) click to toggle source
# File lib/workos/organizations.rb, line 115
def update_organization(organization:, domains:, name:)
  request = put_request(
    auth: true,
    body: { domains: domains, name: name },
    path: "/organizations/#{organization}",
  )

  response = execute_request(request: request)
  check_and_raise_organization_error(response: response)

  WorkOS::Organization.new(response.body)
end

Private Class Methods

check_and_raise_organization_error(response:) click to toggle source
# File lib/workos/organizations.rb, line 152
def check_and_raise_organization_error(response:)
  begin
    body = JSON.parse(response.body)
    return unless body['message']

    message = body['message']
    request_id = response['x-request-id']
  rescue StandardError
    message = 'Something went wrong'
  end

  raise APIError.new(
    message: message,
    http_status: nil,
    request_id: request_id,
  )
end