api.group do
  api.id         @group.id
  api.name       @group.lastname
  api.builtin    @group.builtin_type if @group.builtin_type

  render_api_custom_values @group.visible_custom_field_values, api

  api.array :users do
    @group.users.each do |user|
      api.user :id => user.id, :name => user.name
    end
  end if include_in_api_response?('users') && !@group.builtin?

  api.array :memberships do
    @group.memberships.preload(:roles, :project).each do |membership|
      api.membership do
        api.id membership.id
        api.project :id => membership.project.id, :name => membership.project.name
        api.array :roles do
          membership.member_roles.each do |member_role|
            if member_role.role
              attrs = {:id => member_role.role.id, :name => member_role.role.name}
              attrs.merge!(:inherited => true) if member_role.inherited_from.present?
              api.role attrs
            end
          end
        end
      end if membership.project
    end
  end if include_in_api_response?('memberships')
end
