Class: Pago::V2026_04::Services::CustomerPortal::Members

Inherits:
Service
  • Object
show all
Defined in:
lib/pago/v2026_04/services/customer_portal.rb,
sig/pago/v2026_04/generated.rbs

Instance Attribute Summary

Attributes inherited from Service

#client

Instance Method Summary collapse

Methods inherited from Service

#initialize

Constructor Details

This class inherits a constructor from Pago::Service

Instance Method Details

#add_member(body: {}) ⇒ Models::CustomerPortalMember

Add a new member to the customer's team.

Only available to owners and billing managers of team customers.

Rules:

  • Cannot add a member with the owner role (there must be exactly one owner)
  • If a member with this email already exists, the existing member is returned

Parameters:

Returns:

Raises:



749
750
751
752
753
754
755
756
757
758
759
760
# File 'lib/pago/v2026_04/services/customer_portal.rb', line 749

def add_member(body: {})
  data = client.request(
    http_method: "POST",
    path: "/v1/customer-portal/members",
    path_params: {},
    query: {},
    body: body,
    response_type: :json,
    errors: { 400 => Errors::AddMember400Error, 401 => Errors::AddMember401Error, 403 => Errors::AddMember403Error, 422 => Errors::HTTPValidationError }
  )
  Models::CustomerPortalMember.from_json(data)
end

#list_members(page: 1, limit: 10) ⇒ Models::ListResourceCustomerPortalMember

List all members of the customer's team.

Only available to owners and billing managers of team customers.

Parameters:

  • page (Integer) (defaults to: 1)

    Page number, defaults to 1.

  • limit (Integer) (defaults to: 10)

    Size of a page, defaults to 10. Maximum is 100.

  • page: (Integer, nil) (defaults to: 1)
  • limit: (Integer, nil) (defaults to: 10)

Returns:

Raises:



711
712
713
714
715
716
717
718
719
720
721
# File 'lib/pago/v2026_04/services/customer_portal.rb', line 711

def list_members(page: 1, limit: 10)
  data = client.request(
    http_method: "GET",
    path: "/v1/customer-portal/members",
    path_params: {},
    query: { "page" => page, "limit" => limit },
    response_type: :json,
    errors: { 401 => Errors::ListMembers401Error, 403 => Errors::ListMembers403Error, 422 => Errors::HTTPValidationError }
  )
  Models::ListResourceCustomerPortalMember.from_json(data)
end

#list_members_each(limit: 10) {|item| ... } ⇒ Pago::Paginator

Enumerate every item of list_members, fetching pages on demand.

Parameters:

  • limit: (Integer, nil) (defaults to: 10)

Yield Parameters:

Returns:



727
728
729
730
731
732
# File 'lib/pago/v2026_04/services/customer_portal.rb', line 727

def list_members_each(limit: 10, &block)
  paginator = ::Pago::Paginator.new do |page_number|
    list_members(page: page_number, limit: limit)
  end
  block ? paginator.each(&block) : paginator
end

#remove_member(id) ⇒ nil

Remove a member from the team.

Only available to owners and billing managers of team customers.

Rules:

  • Cannot remove yourself
  • Cannot remove the only owner

Parameters:

  • id (String)

Returns:

  • (nil)

Raises:



778
779
780
781
782
783
784
785
786
787
# File 'lib/pago/v2026_04/services/customer_portal.rb', line 778

def remove_member(id)
  client.request(
    http_method: "DELETE",
    path: "/v1/customer-portal/members/{id}",
    path_params: { "id" => id },
    query: {},
    response_type: :none,
    errors: { 400 => Errors::RemoveMember400Error, 401 => Errors::RemoveMember401Error, 403 => Errors::RemoveMember403Error, 404 => Errors::RemoveMember404Error, 422 => Errors::HTTPValidationError }
  )
end

#update_member(id, body: {}) ⇒ Models::CustomerPortalMember

Update a member's name or role.

Only available to owners and billing managers of team customers.

Rules:

  • Cannot modify your own role (to prevent self-demotion)
  • Customer must have exactly one owner at all times

Parameters:

Returns:

Raises:



806
807
808
809
810
811
812
813
814
815
816
817
# File 'lib/pago/v2026_04/services/customer_portal.rb', line 806

def update_member(id, body: {})
  data = client.request(
    http_method: "PATCH",
    path: "/v1/customer-portal/members/{id}",
    path_params: { "id" => id },
    query: {},
    body: body,
    response_type: :json,
    errors: { 400 => Errors::UpdateMember400Error, 401 => Errors::UpdateMember401Error, 403 => Errors::UpdateMember403Error, 404 => Errors::UpdateMember404Error, 422 => Errors::HTTPValidationError }
  )
  Models::CustomerPortalMember.from_json(data)
end