Class: Believe::Resources::TeamMembers

Inherits:
Object
  • Object
show all
Defined in:
lib/believe/resources/team_members.rb

Overview

Team members with union types (oneOf) - Players, Coaches, Medical Staff, Equipment Managers

Instance Method Summary collapse

Constructor Details

#initialize(client:) ⇒ TeamMembers

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of TeamMembers.

Parameters:



262
263
264
# File 'lib/believe/resources/team_members.rb', line 262

def initialize(client:)
  @client = client
end

Instance Method Details

#create(member:, request_options: {}) ⇒ ::Believe::Models::Player, ...

Add a new team member to a team.

The request body is a **union type (oneOf)** - you must include the ‘member_type` discriminator field:

  • ‘“member_type”: “player”` - Creates a player (requires position, jersey_number, etc.)

  • ‘“member_type”: “coach”` - Creates a coach (requires specialty, etc.)

  • ‘“member_type”: “medical_staff”` - Creates medical staff (requires medical specialty, etc.)

  • ‘“member_type”: “equipment_manager”` - Creates equipment manager (requires responsibilities, etc.)

The ‘character_id` field references an existing character from `/characters/id`.

**Example for creating a player:**

“‘json

"member_type": "player",
"character_id": "sam-obisanya",
"team_id": "afc-richmond",
"years_with_team": 2,
"position": "midfielder",
"jersey_number": 24,
"goals_scored": 12,
"assists": 15

“‘



48
49
50
51
52
53
54
55
56
57
# File 'lib/believe/resources/team_members.rb', line 48

def create(params)
  parsed, options = ::Believe::TeamMemberCreateParams.dump_request(params)
  @client.request(
    method: :post,
    path: "team-members",
    body: parsed[:member],
    model: ::Believe::Models::TeamMemberCreateResponse,
    options: options
  )
end

#delete(member_id, request_options: {}) ⇒ nil

Remove a team member from the roster.

Parameters:

Returns:

  • (nil)

See Also:



159
160
161
162
163
164
165
166
# File 'lib/believe/resources/team_members.rb', line 159

def delete(member_id, params = {})
  @client.request(
    method: :delete,
    path: ["team-members/%1$s", member_id],
    model: NilClass,
    options: params[:request_options]
  )
end

#list(limit: nil, member_type: nil, skip: nil, team_id: nil, request_options: {}) ⇒ ::Believe::Internal::SkipLimitPage<::Believe::Models::Player, ::Believe::Models::Coach, ::Believe::Models::MedicalStaff, ::Believe::Models::EquipmentManager>

Get a paginated list of all team members.

This endpoint demonstrates **union types (oneOf)** in the response. Each team member can be one of: Player, Coach, MedicalStaff, or EquipmentManager. The ‘member_type` field acts as a discriminator to determine the shape of each object.

Parameters:

Returns:

See Also:



136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/believe/resources/team_members.rb', line 136

def list(params = {})
  parsed, options = ::Believe::TeamMemberListParams.dump_request(params)
  query = ::Believe::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: "team-members",
    query: query,
    page: ::Believe::Internal::SkipLimitPage,
    model: ::Believe::Models::TeamMemberListResponse,
    options: options
  )
end

#list_coaches(limit: nil, skip: nil, specialty: nil, team_id: nil, request_options: {}) ⇒ ::Believe::Internal::SkipLimitPage<::Believe::Models::Coach>

Get only coaches (filtered subset of team members).

Parameters:

  • limit (Integer)

    Maximum number of items to return (max: 100)

  • skip (Integer)

    Number of items to skip (offset)

  • specialty (Symbol, ::Believe::Models::CoachSpecialty, nil)

    Filter by specialty

  • team_id (String, nil)

    Filter by team ID

  • request_options (::Believe::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



185
186
187
188
189
190
191
192
193
194
195
196
# File 'lib/believe/resources/team_members.rb', line 185

def list_coaches(params = {})
  parsed, options = ::Believe::TeamMemberListCoachesParams.dump_request(params)
  query = ::Believe::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: "team-members/coaches/",
    query: query,
    page: ::Believe::Internal::SkipLimitPage,
    model: ::Believe::Coach,
    options: options
  )
end

#list_players(limit: nil, position: nil, skip: nil, team_id: nil, request_options: {}) ⇒ ::Believe::Internal::SkipLimitPage<::Believe::Models::Player>

Get only players (filtered subset of team members).

Parameters:

  • limit (Integer)

    Maximum number of items to return (max: 100)

  • position (Symbol, ::Believe::Models::Position, nil)

    Filter by position

  • skip (Integer)

    Number of items to skip (offset)

  • team_id (String, nil)

    Filter by team ID

  • request_options (::Believe::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



215
216
217
218
219
220
221
222
223
224
225
226
# File 'lib/believe/resources/team_members.rb', line 215

def list_players(params = {})
  parsed, options = ::Believe::TeamMemberListPlayersParams.dump_request(params)
  query = ::Believe::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: "team-members/players/",
    query: query,
    page: ::Believe::Internal::SkipLimitPage,
    model: ::Believe::Player,
    options: options
  )
end

#list_staff(limit: nil, skip: nil, team_id: nil, request_options: {}) ⇒ ::Believe::Internal::SkipLimitPage<::Believe::Models::MedicalStaff, ::Believe::Models::EquipmentManager>

Get all staff members (medical staff and equipment managers).

This demonstrates a **narrower union type** - the response is oneOf MedicalStaff or EquipmentManager.

Parameters:

  • limit (Integer)

    Maximum number of items to return (max: 100)

  • skip (Integer)

    Number of items to skip (offset)

  • team_id (String, nil)

    Filter by team ID

  • request_options (::Believe::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



246
247
248
249
250
251
252
253
254
255
256
257
# File 'lib/believe/resources/team_members.rb', line 246

def list_staff(params = {})
  parsed, options = ::Believe::TeamMemberListStaffParams.dump_request(params)
  query = ::Believe::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: "team-members/staff/",
    query: query,
    page: ::Believe::Internal::SkipLimitPage,
    model: ::Believe::Models::TeamMemberListStaffResponse,
    options: options
  )
end

#retrieve(member_id, request_options: {}) ⇒ ::Believe::Models::Player, ...

Retrieve detailed information about a specific team member.

The response is a **union type (oneOf)** - the actual shape depends on the member’s type:

  • player: Includes position, jersey_number, goals_scored, assists, is_captain

  • coach: Includes specialty, certifications, win_rate

  • medical_staff: Includes specialty, qualifications, license_number

  • equipment_manager: Includes responsibilities, is_head_kitman

Use ‘character_id` to fetch full character details from `/characters/character_id`.



81
82
83
84
85
86
87
88
# File 'lib/believe/resources/team_members.rb', line 81

def retrieve(member_id, params = {})
  @client.request(
    method: :get,
    path: ["team-members/%1$s", member_id],
    model: ::Believe::Models::TeamMemberRetrieveResponse,
    options: params[:request_options]
  )
end

#update(member_id, updates:, request_options: {}) ⇒ ::Believe::Models::Player, ...

Update specific fields of an existing team member. Fields vary by member type.



103
104
105
106
107
108
109
110
111
112
# File 'lib/believe/resources/team_members.rb', line 103

def update(member_id, params)
  parsed, options = ::Believe::TeamMemberUpdateParams.dump_request(params)
  @client.request(
    method: :patch,
    path: ["team-members/%1$s", member_id],
    body: parsed[:updates],
    model: ::Believe::Models::TeamMemberUpdateResponse,
    options: options
  )
end