Class: VitableConnect::Groups::Members::Sync::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/VitableConnect/groups/members/sync/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(client:) ⇒ void



11
12
13
# File 'lib/VitableConnect/groups/members/sync/client.rb', line 11

def initialize(client:)
  @client = client
end

Instance Method Details

#get(request_options: {}, **params) ⇒ VitableConnect::Types::GroupMemberSyncRequestDetailResponse

Retrieves a previously-submitted group member sync request by its grpmsr_ ID. Returns the acceptance timestamp, completion timestamp (if processing has finished), and the per-member results once available. While processing is in flight, completed_at and results are null.

Examples:

client.groups.members.sync.get(
  group_id: "grp_abc123def456",
  request_id: "request_id"
)

Parameters:

  • request_options (Hash) (defaults to: {})
  • params (Hash)

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Options Hash (**params):

Returns:



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/VitableConnect/groups/members/sync/client.rb', line 97

def get(request_options: {}, **params)
  params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
  request = VitableConnect::Internal::JSON::Request.new(
    base_url: request_options[:base_url],
    method: "GET",
    path: "v1/groups/#{URI.encode_uri_component(params[:group_id].to_s)}/members/sync/#{URI.encode_uri_component(params[:request_id].to_s)}",
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise VitableConnect::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    VitableConnect::Types::GroupMemberSyncRequestDetailResponse.load(response.body)
  else
    error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end

#submit(request_options: {}, **params) ⇒ VitableConnect::Types::GroupMemberSyncDetailResponse

Submits a member sync payload for the specified group. Members in the payload will be queued for processing asynchronously. Returns HTTP 202 with the batch ID and acceptance timestamp.

Examples:

client.groups.members.sync.submit(
  group_id: "grp_abc123def456",
  members: [{
    reference_id: "EMP-001",
    first_name: "Jane",
    last_name: "Doe",
    date_of_birth: "1990-05-15",
    phone: "4155550100",
    plan_id: "pln_abc123def456",
    address: {
      address_line1: "123 Main Street",
      address_line2: "Apt 4B",
      city: "San Francisco",
      state: "CA",
      zipcode: "94102"
    },
    email: "[email protected]"
  }]
)

Parameters:

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Options Hash (**params):

Returns:



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/VitableConnect/groups/members/sync/client.rb', line 49

def submit(request_options: {}, **params)
  params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
  request_data = VitableConnect::Groups::Members::Sync::Types::GroupMemberSyncRequest.new(params).to_h
  non_body_param_names = %w[group_id]
  body = request_data.except(*non_body_param_names)

  request = VitableConnect::Internal::JSON::Request.new(
    base_url: request_options[:base_url],
    method: "POST",
    path: "v1/groups/#{URI.encode_uri_component(params[:group_id].to_s)}/members/sync",
    body: body,
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise VitableConnect::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    VitableConnect::Types::GroupMemberSyncDetailResponse.load(response.body)
  else
    error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end