Class: Attio::WorkspaceMember
- Inherits:
-
APIResource
- Object
- APIResource
- Attio::WorkspaceMember
- Defined in:
- lib/attio/resources/workspace_member.rb
Overview
Represents a workspace member in Attio (read-only)
Constant Summary
Constants inherited from APIResource
Instance Attribute Summary collapse
-
#access_level ⇒ Object
readonly
Read-only attributes - workspace members are immutable via API.
-
#avatar_url ⇒ Object
readonly
Read-only attributes - workspace members are immutable via API.
-
#email_address ⇒ Object
readonly
Read-only attributes - workspace members are immutable via API.
-
#first_name ⇒ Object
readonly
Read-only attributes - workspace members are immutable via API.
-
#invited_at ⇒ Object
readonly
Read-only attributes - workspace members are immutable via API.
-
#last_accessed_at ⇒ Object
readonly
Read-only attributes - workspace members are immutable via API.
-
#last_name ⇒ Object
readonly
Read-only attributes - workspace members are immutable via API.
-
#status ⇒ Object
readonly
Read-only attributes - workspace members are immutable via API.
Attributes inherited from APIResource
Class Method Summary collapse
-
.active(**opts) ⇒ Object
List active members only.
-
.admins(**opts) ⇒ Object
List admin members only.
-
.create ⇒ Object
This resource doesn't support creation, updates, or deletion.
- .delete ⇒ Object
-
.find_by(**conditions) ⇒ Object
Find member by attribute using Rails-style syntax.
-
.me(**opts) ⇒ Object
(also: current)
Get the current user (the API key owner).
-
.resource_path ⇒ String
API endpoint path for workspace members.
- .update ⇒ Object
Instance Method Summary collapse
-
#active? ⇒ Boolean
Check if member is active.
-
#admin? ⇒ Boolean
Check if member is admin.
-
#deactivated? ⇒ Boolean
Check if member is deactivated.
- #destroy ⇒ Object
-
#full_name ⇒ Object
Get full name.
-
#initialize(attributes = {}, opts = {}) ⇒ WorkspaceMember
constructor
A new instance of WorkspaceMember.
-
#invited? ⇒ Boolean
Check if member is invited.
-
#save ⇒ Object
Workspace members cannot be modified via API.
-
#standard? ⇒ Boolean
Check if member is standard user.
-
#to_h ⇒ Hash
Convert workspace member to hash representation.
- #update ⇒ Object
Methods inherited from APIResource
#==, #[], #[]=, api_operations, attr_attio, #changed, #changed?, #changed_attributes, #changes, #each, execute_request, #fetch, #hash, id_param_name, #inspect, #key?, #keys, #persisted?, prepare_params_for_create, prepare_params_for_update, #reset_changes!, resource_name, #resource_path, #revert!, #to_json, #update_attributes, #update_from, validate_id!, #values
Constructor Details
#initialize(attributes = {}, opts = {}) ⇒ WorkspaceMember
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/attio/resources/workspace_member.rb', line 20 def initialize(attributes = {}, opts = {}) super normalized_attrs = normalize_attributes(attributes) @email_address = normalized_attrs[:email_address] @first_name = normalized_attrs[:first_name] @last_name = normalized_attrs[:last_name] @avatar_url = normalized_attrs[:avatar_url] @access_level = normalized_attrs[:access_level] @status = normalized_attrs[:status] @invited_at = (normalized_attrs[:invited_at]) @last_accessed_at = (normalized_attrs[:last_accessed_at]) end |
Instance Attribute Details
#access_level ⇒ Object (readonly)
Read-only attributes - workspace members are immutable via API
17 18 19 |
# File 'lib/attio/resources/workspace_member.rb', line 17 def access_level @access_level end |
#avatar_url ⇒ Object (readonly)
Read-only attributes - workspace members are immutable via API
17 18 19 |
# File 'lib/attio/resources/workspace_member.rb', line 17 def avatar_url @avatar_url end |
#email_address ⇒ Object (readonly)
Read-only attributes - workspace members are immutable via API
17 18 19 |
# File 'lib/attio/resources/workspace_member.rb', line 17 def email_address @email_address end |
#first_name ⇒ Object (readonly)
Read-only attributes - workspace members are immutable via API
17 18 19 |
# File 'lib/attio/resources/workspace_member.rb', line 17 def first_name @first_name end |
#invited_at ⇒ Object (readonly)
Read-only attributes - workspace members are immutable via API
17 18 19 |
# File 'lib/attio/resources/workspace_member.rb', line 17 def invited_at @invited_at end |
#last_accessed_at ⇒ Object (readonly)
Read-only attributes - workspace members are immutable via API
17 18 19 |
# File 'lib/attio/resources/workspace_member.rb', line 17 def last_accessed_at @last_accessed_at end |
#last_name ⇒ Object (readonly)
Read-only attributes - workspace members are immutable via API
17 18 19 |
# File 'lib/attio/resources/workspace_member.rb', line 17 def last_name @last_name end |
#status ⇒ Object (readonly)
Read-only attributes - workspace members are immutable via API
17 18 19 |
# File 'lib/attio/resources/workspace_member.rb', line 17 def status @status end |
Class Method Details
.active(**opts) ⇒ Object
List active members only
126 127 128 |
# File 'lib/attio/resources/workspace_member.rb', line 126 def active(**opts) list(**opts).select(&:active?) end |
.admins(**opts) ⇒ Object
List admin members only
131 132 133 |
# File 'lib/attio/resources/workspace_member.rb', line 131 def admins(**opts) list(**opts).select(&:admin?) end |
.create ⇒ Object
This resource doesn't support creation, updates, or deletion
136 137 138 |
# File 'lib/attio/resources/workspace_member.rb', line 136 def create(*) raise NotImplementedError, "Workspace members cannot be created via API" end |
.delete ⇒ Object
144 145 146 |
# File 'lib/attio/resources/workspace_member.rb', line 144 def delete(*) raise NotImplementedError, "Workspace members cannot be deleted via API" end |
.find_by(**conditions) ⇒ Object
Find member by attribute using Rails-style syntax
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/attio/resources/workspace_member.rb', line 107 def find_by(**conditions) # Extract any opts that aren't conditions opts = {} known_opts = [:api_key, :timeout, :idempotency_key] known_opts.each do |opt| opts[opt] = conditions.delete(opt) if conditions.key?(opt) end # Currently only supports email if conditions.key?(:email) email = conditions[:email] list(**opts).find { |member| member.email_address == email } || raise(NotFoundError, "Workspace member with email '#{email}' not found") else raise ArgumentError, "find_by only supports email attribute for workspace members" end end |
.me(**opts) ⇒ Object Also known as: current
Get the current user (the API key owner)
93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/attio/resources/workspace_member.rb', line 93 def me(**opts) # The /v2/workspace_members/me endpoint doesn't exist, use /v2/self instead # and then fetch the workspace member details self_response = execute_request(:GET, "self", {}, opts) member_id = self_response[:authorized_by_workspace_member_id] self_response[:workspace_id] # Now fetch the actual workspace member members = list(**opts) members.find { |m| m.id[:workspace_member_id] == member_id } end |
.resource_path ⇒ String
API endpoint path for workspace members
12 13 14 |
# File 'lib/attio/resources/workspace_member.rb', line 12 def self.resource_path "workspace_members" end |
.update ⇒ Object
140 141 142 |
# File 'lib/attio/resources/workspace_member.rb', line 140 def update(*) raise NotImplementedError, "Workspace members cannot be updated via API" end |
Instance Method Details
#active? ⇒ Boolean
Check if member is active
39 40 41 |
# File 'lib/attio/resources/workspace_member.rb', line 39 def active? status == "active" end |
#admin? ⇒ Boolean
Check if member is admin
54 55 56 |
# File 'lib/attio/resources/workspace_member.rb', line 54 def admin? access_level == "admin" end |
#deactivated? ⇒ Boolean
Check if member is deactivated
49 50 51 |
# File 'lib/attio/resources/workspace_member.rb', line 49 def deactivated? status == "deactivated" end |
#destroy ⇒ Object
72 73 74 |
# File 'lib/attio/resources/workspace_member.rb', line 72 def destroy(*) raise NotImplementedError, "Workspace members cannot be deleted via API" end |
#full_name ⇒ Object
Get full name
34 35 36 |
# File 'lib/attio/resources/workspace_member.rb', line 34 def full_name [first_name, last_name].compact.join(" ") end |
#invited? ⇒ Boolean
Check if member is invited
44 45 46 |
# File 'lib/attio/resources/workspace_member.rb', line 44 def invited? status == "invited" end |
#save ⇒ Object
Workspace members cannot be modified via API
64 65 66 |
# File 'lib/attio/resources/workspace_member.rb', line 64 def save(*) raise NotImplementedError, "Workspace members cannot be updated via API" end |
#standard? ⇒ Boolean
Check if member is standard user
59 60 61 |
# File 'lib/attio/resources/workspace_member.rb', line 59 def standard? access_level == "standard" end |
#to_h ⇒ Hash
Convert workspace member to hash representation
78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/attio/resources/workspace_member.rb', line 78 def to_h super.merge( email_address: email_address, first_name: first_name, last_name: last_name, avatar_url: avatar_url, access_level: access_level, status: status, invited_at: invited_at&.iso8601, last_accessed_at: last_accessed_at&.iso8601 ).compact end |
#update ⇒ Object
68 69 70 |
# File 'lib/attio/resources/workspace_member.rb', line 68 def update(*) raise NotImplementedError, "Workspace members cannot be updated via API" end |