Class: Yandex360::MailboxesResource

Inherits:
Resource
  • Object
show all
Includes:
ParamBuilder
Defined in:
lib/yandex360/resources/mailboxes.rb

Overview

Shared and delegated mailboxes, and the access rights on them.

See https://yandex.ru/dev/api360/doc/ru/ref/MailboxService/

Instance Attribute Summary

Attributes inherited from Resource

#client

Instance Method Summary collapse

Methods inherited from Resource

#initialize

Constructor Details

This class inherits a constructor from Yandex360::Resource

Instance Method Details

#actors(org_id:, resource_id:) ⇒ Object

Employees who can reach the given mailbox.



61
62
63
64
65
# File 'lib/yandex360/resources/mailboxes.rb', line 61

def actors(org_id:, resource_id:)
  validate_required_params({org_id: org_id, resource_id: resource_id}, %i[org_id resource_id])
  resp = get("/admin/v1/org/#{org_id}/mailboxes/actors/#{resource_id}")
  Collection.from_response(resp, key: "actors", type: MailboxActor)
end

#create_delegated(org_id:, resource_id:) ⇒ Object



49
50
51
52
53
# File 'lib/yandex360/resources/mailboxes.rb', line 49

def create_delegated(org_id:, resource_id:)
  validate_required_params({org_id: org_id, resource_id: resource_id}, %i[org_id resource_id])
  body = {resourceId: resource_id}
  Mailbox.new put("/admin/v1/org/#{org_id}/mailboxes/delegated", body: body).body
end

#create_shared(org_id:, email:, name:, description:) ⇒ Object



18
19
20
21
22
23
# File 'lib/yandex360/resources/mailboxes.rb', line 18

def create_shared(org_id:, email:, name:, description:)
  required = {org_id: org_id, email: email, name: name, description: description}
  validate_required_params(required, %i[org_id email name description])
  body = {email: email, name: name, description: description}
  Mailbox.new put("/admin/v1/org/#{org_id}/mailboxes/shared", body: body).body
end

#delegated_list(org_id:, page: 1, per_page: 10) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/yandex360/resources/mailboxes.rb', line 41

def delegated_list(org_id:, page: 1, per_page: 10)
  validate_required_params({org_id: org_id}, [:org_id])
  resp = get("/admin/v1/org/#{org_id}/mailboxes/delegated", params: {page: page, perPage: per_page})
  Collection.from_response(resp, key: "resources", type: MailboxResource) do |next_page|
    delegated_list(org_id: org_id, page: next_page, per_page: per_page)
  end
end

#delete_delegated(org_id:, resource_id:) ⇒ Object



55
56
57
58
# File 'lib/yandex360/resources/mailboxes.rb', line 55

def delete_delegated(org_id:, resource_id:)
  validate_required_params({org_id: org_id, resource_id: resource_id}, %i[org_id resource_id])
  Response.new delete_request("/admin/v1/org/#{org_id}/mailboxes/delegated/#{resource_id}").body
end

#delete_shared(org_id:, resource_id:) ⇒ Object



36
37
38
39
# File 'lib/yandex360/resources/mailboxes.rb', line 36

def delete_shared(org_id:, resource_id:)
  validate_required_params({org_id: org_id, resource_id: resource_id}, %i[org_id resource_id])
  Response.new delete_request("/admin/v1/org/#{org_id}/mailboxes/shared/#{resource_id}").body
end

#resources(org_id:, actor_id:) ⇒ Object

Mailboxes the given employee can reach.



68
69
70
71
72
# File 'lib/yandex360/resources/mailboxes.rb', line 68

def resources(org_id:, actor_id:)
  validate_required_params({org_id: org_id, actor_id: actor_id}, %i[org_id actor_id])
  resp = get("/admin/v1/org/#{org_id}/mailboxes/resources/#{actor_id}")
  Collection.from_response(resp, key: "resources", type: MailboxResource)
end

#set_access(org_id:, resource_id:, actor_id:, roles:, notify: nil) ⇒ Object

Applies asynchronously. The returned taskId is polled through #task_status. notify is one of "all", "delegates" or "none".



76
77
78
79
80
81
82
83
84
# File 'lib/yandex360/resources/mailboxes.rb', line 76

def set_access(org_id:, resource_id:, actor_id:, roles:, notify: nil)
  required = {org_id: org_id, resource_id: resource_id, actor_id: actor_id, roles: roles}
  validate_required_params(required, %i[org_id resource_id actor_id roles])
  params = {actorId: actor_id}
  params[:notify] = notify if notify
  resp = post("/admin/v1/org/#{org_id}/mailboxes/set/#{resource_id}",
              body: {roles: roles}, params: params)
  MailboxTask.new resp.body
end

#shared_info(org_id:, resource_id:) ⇒ Object



25
26
27
28
# File 'lib/yandex360/resources/mailboxes.rb', line 25

def shared_info(org_id:, resource_id:)
  validate_required_params({org_id: org_id, resource_id: resource_id}, %i[org_id resource_id])
  Mailbox.new get("/admin/v1/org/#{org_id}/mailboxes/shared/#{resource_id}").body
end

#shared_list(org_id:, page: 1, per_page: 10) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/yandex360/resources/mailboxes.rb', line 10

def shared_list(org_id:, page: 1, per_page: 10)
  validate_required_params({org_id: org_id}, [:org_id])
  resp = get("/admin/v1/org/#{org_id}/mailboxes/shared", params: {page: page, perPage: per_page})
  Collection.from_response(resp, key: "resources", type: MailboxResource) do |next_page|
    shared_list(org_id: org_id, page: next_page, per_page: per_page)
  end
end

#task_status(org_id:, task_id:) ⇒ Object



86
87
88
89
# File 'lib/yandex360/resources/mailboxes.rb', line 86

def task_status(org_id:, task_id:)
  validate_required_params({org_id: org_id, task_id: task_id}, %i[org_id task_id])
  MailboxTask.new get("/admin/v1/org/#{org_id}/mailboxes/tasks/#{task_id}").body
end

#update_shared(org_id:, resource_id:, **params) ⇒ Object



30
31
32
33
34
# File 'lib/yandex360/resources/mailboxes.rb', line 30

def update_shared(org_id:, resource_id:, **params)
  validate_required_params({org_id: org_id, resource_id: resource_id}, %i[org_id resource_id])
  body = build_params({}, params)
  Mailbox.new put("/admin/v1/org/#{org_id}/mailboxes/shared/#{resource_id}", body: body).body
end