@globalscoutme/api-client 1.0.9 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -28,13 +28,29 @@ client.setConfig({
28
28
  All endpoints are grouped by controller and fully typed:
29
29
 
30
30
  ```ts
31
- import { Players, Profile, Documents, Videos, Achievements, Body, Index, Organizations } from '@globalscoutme/api-client';
31
+ import { Players, Profile, Documents, Videos, Achievements, Body, Index, Offers, Organizations, Storage } from '@globalscoutme/api-client';
32
32
 
33
33
  // Players
34
34
  const player = await Players.getPlayersMe();
35
35
  await Players.patchPlayersMe({ body: { fullName: 'John Doe' } });
36
36
  await Players.deletePlayersMe();
37
37
  const dashboard = await Players.getPlayersMeDashboard();
38
+ const results = await Players.searchPlayers({
39
+ body: {
40
+ search: 'John',
41
+ page: 1,
42
+ pageSize: 20,
43
+ sortBy: 'age_asc',
44
+ nationalities: ['EG', 'MA'],
45
+ positions: ['CM', 'CB'],
46
+ baseFoot: 'right',
47
+ isFreeAgent: true,
48
+ hasVideo: true,
49
+ heightOperator: 'gte',
50
+ heightCm: 180,
51
+ },
52
+ });
53
+ const playerProfile = await Players.getPlayerById({ path: { id: 'player-uuid' } });
38
54
 
39
55
  // Profile
40
56
  const profile = await Profile.getProfileMe();
@@ -60,8 +76,22 @@ await Body.postBodyMeasurements({ body: { heightCm: 180 } });
60
76
  // Index (lookup tables)
61
77
  const positions = await Index.getIndexByTableName({ path: { tableName: 'positions' } });
62
78
 
79
+ // Offers (conversations between scouts and players)
80
+ const conversations = await Offers.listConversations({ query: { filter: 'all', page: 1, pageSize: 20 } });
81
+ const conversation = await Offers.createConversation({ body: { playerId: 'player-uuid', initialMessage: 'Hi!' } });
82
+ const messages = await Offers.listMessages({ path: { id: 'conversation-uuid' }, query: { page: 1, pageSize: 20 } });
83
+ await Offers.sendMessage({ path: { id: 'conversation-uuid' }, body: { body: 'Looking forward to it!' } });
84
+ await Offers.markConversationRead({ path: { id: 'conversation-uuid' } });
85
+
63
86
  // Organizations
64
87
  const org = await Organizations.getOrganizationsMe();
88
+
89
+ // Storage — get a signed upload URL, then PUT the file directly to Supabase Storage
90
+ const { uploadUrl, token, path, bucket, expiresIn } = await Storage.createUploadUrl({
91
+ body: { bucket: 'avatars', contentType: 'image/jpeg', sizeBytes: 204800 },
92
+ });
93
+ await fetch(uploadUrl, { method: 'PUT', body: fileBlob, headers: { 'Content-Type': 'image/jpeg' } });
94
+ // persist `path` on the player record (e.g. patchPlayersMe with avatarPath: path)
65
95
  ```
66
96
 
67
97
  ## Updating auth token
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { Achievements, Auth, Body, Documents, GlobalScoutMeClient, Index, type Options, Organizations, Players, Profile, Storage, Videos, } from './sdk.gen.js';
2
- export type { AchievementCatalogDto, AuthMeResponseDto, BodyMeasurementResponseDto, CareerAchievementDto, ClientOptions, CreateBodyMeasurementDto, CreateDocumentDto, CreateUploadUrlDto, CreateVideoDto, DashboardResponseDto, DeletePlayersMeData, DeletePlayersMeErrors, DeletePlayersMeResponse, DeletePlayersMeResponses, DeleteVideosByIdData, DeleteVideosByIdErrors, DeleteVideosByIdResponse, DeleteVideosByIdResponses, DocumentResponseDto, GetAchievementsData, GetAchievementsMeData, GetAchievementsMeErrors, GetAchievementsMeResponse, GetAchievementsMeResponses, GetAchievementsResponse, GetAchievementsResponses, GetAuthMeData, GetAuthMeErrors, GetAuthMeResponse, GetAuthMeResponses, GetBodyMeasurementsMeData, GetBodyMeasurementsMeErrors, GetBodyMeasurementsMeResponse, GetBodyMeasurementsMeResponses, GetDocumentsMeData, GetDocumentsMeErrors, GetDocumentsMeResponse, GetDocumentsMeResponses, GetIndexByTableNameData, GetIndexByTableNameErrors, GetIndexByTableNameResponse, GetIndexByTableNameResponses, GetOrganizationsMeData, GetOrganizationsMeErrors, GetOrganizationsMeResponse, GetOrganizationsMeResponses, GetPlayersMeDashboardData, GetPlayersMeDashboardErrors, GetPlayersMeDashboardResponse, GetPlayersMeDashboardResponses, GetPlayersMeData, GetPlayersMeErrors, GetPlayersMeResponse, GetPlayersMeResponses, GetProfileMeData, GetProfileMeErrors, GetProfileMeResponse, GetProfileMeResponses, GetVideosByIdPlayUrlData, GetVideosByIdPlayUrlErrors, GetVideosByIdPlayUrlResponse, GetVideosByIdPlayUrlResponses, GetVideosMeData, GetVideosMeErrors, GetVideosMeResponse, GetVideosMeResponses, IndexItemDto, OrganizationResponseDto, PatchPlayersMeData, PatchPlayersMeErrors, PatchPlayersMeResponse, PatchPlayersMeResponses, PlayerResponseDto, PlayUrlResponseDto, PostBodyMeasurementsData, PostBodyMeasurementsErrors, PostBodyMeasurementsResponse, PostBodyMeasurementsResponses, PostDocumentsData, PostDocumentsErrors, PostDocumentsResponse, PostDocumentsResponses, PostOrganizationsRegisterClubData, PostOrganizationsRegisterClubErrors, PostOrganizationsRegisterClubResponse, PostOrganizationsRegisterClubResponses, PostStorageUploadUrlData, PostStorageUploadUrlErrors, PostStorageUploadUrlResponse, PostStorageUploadUrlResponses, PostVideosData, PostVideosErrors, PostVideosResponse, PostVideosResponses, PreviousClubDto, ProfileResponseDto, PutOrganizationsMeData, PutOrganizationsMeErrors, PutOrganizationsMeResponse, PutOrganizationsMeResponses, PutProfileMeData, PutProfileMeErrors, PutProfileMeResponse, PutProfileMeResponses, RegisterClubDto, RegisterClubResponseDto, UpdateOrganizationDto, UpdatePlayerDto, UpdateProfileDto, UploadUrlResponseDto, UserAchievementResponseDto, VideoResponseDto, } from './types.gen.js';
1
+ export { Achievements, Auth, Body, Documents, GlobalScoutMeClient, Index, Offers, type Options, Organizations, Players, Profile, Storage, Videos, } from './sdk.gen.js';
2
+ export type { AchievementCatalogDto, AuthMeResponseDto, BodyMeasurementResponseDto, CareerAchievementDto, ClientOptions, ConversationDetailDto, ConversationItemDto, ConversationListResultDto, ConversationParticipantDto, CreateBodyMeasurementDto, CreateConversationDto, CreateDocumentDto, CreateUploadUrlDto, CreateVideoDto, DashboardResponseDto, DeletePlayersMeData, DeletePlayersMeErrors, DeletePlayersMeResponse, DeletePlayersMeResponses, DeleteVideosByIdData, DeleteVideosByIdErrors, DeleteVideosByIdResponse, DeleteVideosByIdResponses, DocumentResponseDto, GetAchievementsData, GetAchievementsMeData, GetAchievementsMeErrors, GetAchievementsMeResponse, GetAchievementsMeResponses, GetAchievementsResponse, GetAchievementsResponses, GetAuthMeData, GetAuthMeErrors, GetAuthMeResponse, GetAuthMeResponses, GetBodyMeasurementsMeData, GetBodyMeasurementsMeErrors, GetBodyMeasurementsMeResponse, GetBodyMeasurementsMeResponses, GetDocumentsMeData, GetDocumentsMeErrors, GetDocumentsMeResponse, GetDocumentsMeResponses, GetIndexByTableNameData, GetIndexByTableNameErrors, GetIndexByTableNameResponse, GetIndexByTableNameResponses, GetOffersConversationsByIdMessagesData, GetOffersConversationsByIdMessagesErrors, GetOffersConversationsByIdMessagesResponse, GetOffersConversationsByIdMessagesResponses, GetOffersConversationsData, GetOffersConversationsErrors, GetOffersConversationsResponse, GetOffersConversationsResponses, GetOrganizationsMeData, GetOrganizationsMeErrors, GetOrganizationsMeResponse, GetOrganizationsMeResponses, GetPlayersByIdData, GetPlayersByIdErrors, GetPlayersByIdResponse, GetPlayersByIdResponses, GetPlayersMeDashboardData, GetPlayersMeDashboardErrors, GetPlayersMeDashboardResponse, GetPlayersMeDashboardResponses, GetPlayersMeData, GetPlayersMeErrors, GetPlayersMeResponse, GetPlayersMeResponses, GetProfileMeData, GetProfileMeErrors, GetProfileMeResponse, GetProfileMeResponses, GetVideosByIdPlayUrlData, GetVideosByIdPlayUrlErrors, GetVideosByIdPlayUrlResponse, GetVideosByIdPlayUrlResponses, GetVideosMeData, GetVideosMeErrors, GetVideosMeResponse, GetVideosMeResponses, IndexItemDto, MessageItemDto, MessageListResultDto, MessageSenderDto, OrganizationResponseDto, PatchOffersConversationsByIdReadData, PatchOffersConversationsByIdReadErrors, PatchOffersConversationsByIdReadResponses, PatchPlayersMeData, PatchPlayersMeErrors, PatchPlayersMeResponse, PatchPlayersMeResponses, PlayerAchievementDto, PlayerByIdDto, PlayerClubDto, PlayerResponseDto, PlayerSearchItemDto, PlayerSearchRequestDto, PlayerSearchResultDto, PlayerVideoDto, PlayUrlResponseDto, PostBodyMeasurementsData, PostBodyMeasurementsErrors, PostBodyMeasurementsResponse, PostBodyMeasurementsResponses, PostDocumentsData, PostDocumentsErrors, PostDocumentsResponse, PostDocumentsResponses, PostOffersConversationsByIdMessagesData, PostOffersConversationsByIdMessagesErrors, PostOffersConversationsByIdMessagesResponse, PostOffersConversationsByIdMessagesResponses, PostOffersConversationsData, PostOffersConversationsErrors, PostOffersConversationsResponse, PostOffersConversationsResponses, PostOrganizationsRegisterClubData, PostOrganizationsRegisterClubErrors, PostOrganizationsRegisterClubResponse, PostOrganizationsRegisterClubResponses, PostPlayersSearchData, PostPlayersSearchErrors, PostPlayersSearchResponse, PostPlayersSearchResponses, PostStorageUploadUrlData, PostStorageUploadUrlErrors, PostStorageUploadUrlResponse, PostStorageUploadUrlResponses, PostVideosData, PostVideosErrors, PostVideosResponse, PostVideosResponses, PreviousClubDto, ProfileResponseDto, PutOrganizationsMeData, PutOrganizationsMeErrors, PutOrganizationsMeResponse, PutOrganizationsMeResponses, PutProfileMeData, PutProfileMeErrors, PutProfileMeResponse, PutProfileMeResponses, RegisterClubDto, RegisterClubResponseDto, SendMessageDto, UpdateOrganizationDto, UpdatePlayerDto, UpdateProfileDto, UploadUrlResponseDto, UserAchievementResponseDto, VideoResponseDto, WatchingOrgDto, } from './types.gen.js';
3
3
  export { client, type CreateClientConfig } from './client.gen.js';
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // This file is auto-generated by @hey-api/openapi-ts
2
- export { Achievements, Auth, Body, Documents, GlobalScoutMeClient, Index, Organizations, Players, Profile, Storage, Videos, } from './sdk.gen.js';
2
+ export { Achievements, Auth, Body, Documents, GlobalScoutMeClient, Index, Offers, Organizations, Players, Profile, Storage, Videos, } from './sdk.gen.js';
3
3
  export { client } from './client.gen.js';
package/dist/sdk.gen.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Client, Options as Options2, TDataShape } from './client/index.js';
2
- import type { DeletePlayersMeData, DeletePlayersMeErrors, DeletePlayersMeResponses, DeleteVideosByIdData, DeleteVideosByIdErrors, DeleteVideosByIdResponses, GetAchievementsData, GetAchievementsMeData, GetAchievementsMeErrors, GetAchievementsMeResponses, GetAchievementsResponses, GetAuthMeData, GetAuthMeErrors, GetAuthMeResponses, GetBodyMeasurementsMeData, GetBodyMeasurementsMeErrors, GetBodyMeasurementsMeResponses, GetDocumentsMeData, GetDocumentsMeErrors, GetDocumentsMeResponses, GetIndexByTableNameData, GetIndexByTableNameErrors, GetIndexByTableNameResponses, GetOrganizationsMeData, GetOrganizationsMeErrors, GetOrganizationsMeResponses, GetPlayersMeDashboardData, GetPlayersMeDashboardErrors, GetPlayersMeDashboardResponses, GetPlayersMeData, GetPlayersMeErrors, GetPlayersMeResponses, GetProfileMeData, GetProfileMeErrors, GetProfileMeResponses, GetVideosByIdPlayUrlData, GetVideosByIdPlayUrlErrors, GetVideosByIdPlayUrlResponses, GetVideosMeData, GetVideosMeErrors, GetVideosMeResponses, PatchPlayersMeData, PatchPlayersMeErrors, PatchPlayersMeResponses, PostBodyMeasurementsData, PostBodyMeasurementsErrors, PostBodyMeasurementsResponses, PostDocumentsData, PostDocumentsErrors, PostDocumentsResponses, PostOrganizationsRegisterClubData, PostOrganizationsRegisterClubErrors, PostOrganizationsRegisterClubResponses, PostStorageUploadUrlData, PostStorageUploadUrlErrors, PostStorageUploadUrlResponses, PostVideosData, PostVideosErrors, PostVideosResponses, PutOrganizationsMeData, PutOrganizationsMeErrors, PutOrganizationsMeResponses, PutProfileMeData, PutProfileMeErrors, PutProfileMeResponses } from './types.gen.js';
2
+ import type { DeletePlayersMeData, DeletePlayersMeErrors, DeletePlayersMeResponses, DeleteVideosByIdData, DeleteVideosByIdErrors, DeleteVideosByIdResponses, GetAchievementsData, GetAchievementsMeData, GetAchievementsMeErrors, GetAchievementsMeResponses, GetAchievementsResponses, GetAuthMeData, GetAuthMeErrors, GetAuthMeResponses, GetBodyMeasurementsMeData, GetBodyMeasurementsMeErrors, GetBodyMeasurementsMeResponses, GetDocumentsMeData, GetDocumentsMeErrors, GetDocumentsMeResponses, GetIndexByTableNameData, GetIndexByTableNameErrors, GetIndexByTableNameResponses, GetOffersConversationsByIdMessagesData, GetOffersConversationsByIdMessagesErrors, GetOffersConversationsByIdMessagesResponses, GetOffersConversationsData, GetOffersConversationsErrors, GetOffersConversationsResponses, GetOrganizationsMeData, GetOrganizationsMeErrors, GetOrganizationsMeResponses, GetPlayersByIdData, GetPlayersByIdErrors, GetPlayersByIdResponses, GetPlayersMeDashboardData, GetPlayersMeDashboardErrors, GetPlayersMeDashboardResponses, GetPlayersMeData, GetPlayersMeErrors, GetPlayersMeResponses, GetProfileMeData, GetProfileMeErrors, GetProfileMeResponses, GetVideosByIdPlayUrlData, GetVideosByIdPlayUrlErrors, GetVideosByIdPlayUrlResponses, GetVideosMeData, GetVideosMeErrors, GetVideosMeResponses, PatchOffersConversationsByIdReadData, PatchOffersConversationsByIdReadErrors, PatchOffersConversationsByIdReadResponses, PatchPlayersMeData, PatchPlayersMeErrors, PatchPlayersMeResponses, PostBodyMeasurementsData, PostBodyMeasurementsErrors, PostBodyMeasurementsResponses, PostDocumentsData, PostDocumentsErrors, PostDocumentsResponses, PostOffersConversationsByIdMessagesData, PostOffersConversationsByIdMessagesErrors, PostOffersConversationsByIdMessagesResponses, PostOffersConversationsData, PostOffersConversationsErrors, PostOffersConversationsResponses, PostOrganizationsRegisterClubData, PostOrganizationsRegisterClubErrors, PostOrganizationsRegisterClubResponses, PostPlayersSearchData, PostPlayersSearchErrors, PostPlayersSearchResponses, PostStorageUploadUrlData, PostStorageUploadUrlErrors, PostStorageUploadUrlResponses, PostVideosData, PostVideosErrors, PostVideosResponses, PutOrganizationsMeData, PutOrganizationsMeErrors, PutOrganizationsMeResponses, PutProfileMeData, PutProfileMeErrors, PutProfileMeResponses } from './types.gen.js';
3
3
  export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options2<TData, ThrowOnError> & {
4
4
  /**
5
5
  * You can provide a client instance returned by `createClient()` instead of
@@ -33,6 +33,8 @@ export declare class Players extends HeyApiClient {
33
33
  getMe<ThrowOnError extends boolean = false>(options?: Options<GetPlayersMeData, ThrowOnError>): import("./client/types.gen.js").RequestResult<GetPlayersMeResponses, GetPlayersMeErrors, ThrowOnError, "fields">;
34
34
  patchMe<ThrowOnError extends boolean = false>(options: Options<PatchPlayersMeData, ThrowOnError>): import("./client/types.gen.js").RequestResult<PatchPlayersMeResponses, PatchPlayersMeErrors, ThrowOnError, "fields">;
35
35
  getMyDashboard<ThrowOnError extends boolean = false>(options?: Options<GetPlayersMeDashboardData, ThrowOnError>): import("./client/types.gen.js").RequestResult<GetPlayersMeDashboardResponses, GetPlayersMeDashboardErrors, ThrowOnError, "fields">;
36
+ searchPlayers<ThrowOnError extends boolean = false>(options: Options<PostPlayersSearchData, ThrowOnError>): import("./client/types.gen.js").RequestResult<PostPlayersSearchResponses, PostPlayersSearchErrors, ThrowOnError, "fields">;
37
+ getPlayerById<ThrowOnError extends boolean = false>(options: Options<GetPlayersByIdData, ThrowOnError>): import("./client/types.gen.js").RequestResult<GetPlayersByIdResponses, GetPlayersByIdErrors, ThrowOnError, "fields">;
36
38
  }
37
39
  export declare class Profile extends HeyApiClient {
38
40
  getProfileMe<ThrowOnError extends boolean = false>(options?: Options<GetProfileMeData, ThrowOnError>): import("./client/types.gen.js").RequestResult<GetProfileMeResponses, GetProfileMeErrors, ThrowOnError, "fields">;
@@ -53,6 +55,13 @@ export declare class Documents extends HeyApiClient {
53
55
  export declare class Index extends HeyApiClient {
54
56
  getIndexItems<ThrowOnError extends boolean = false>(options: Options<GetIndexByTableNameData, ThrowOnError>): import("./client/types.gen.js").RequestResult<GetIndexByTableNameResponses, GetIndexByTableNameErrors, ThrowOnError, "fields">;
55
57
  }
58
+ export declare class Offers extends HeyApiClient {
59
+ listConversations<ThrowOnError extends boolean = false>(options?: Options<GetOffersConversationsData, ThrowOnError>): import("./client/types.gen.js").RequestResult<GetOffersConversationsResponses, GetOffersConversationsErrors, ThrowOnError, "fields">;
60
+ createConversation<ThrowOnError extends boolean = false>(options: Options<PostOffersConversationsData, ThrowOnError>): import("./client/types.gen.js").RequestResult<PostOffersConversationsResponses, PostOffersConversationsErrors, ThrowOnError, "fields">;
61
+ listMessages<ThrowOnError extends boolean = false>(options: Options<GetOffersConversationsByIdMessagesData, ThrowOnError>): import("./client/types.gen.js").RequestResult<GetOffersConversationsByIdMessagesResponses, GetOffersConversationsByIdMessagesErrors, ThrowOnError, "fields">;
62
+ sendMessage<ThrowOnError extends boolean = false>(options: Options<PostOffersConversationsByIdMessagesData, ThrowOnError>): import("./client/types.gen.js").RequestResult<PostOffersConversationsByIdMessagesResponses, PostOffersConversationsByIdMessagesErrors, ThrowOnError, "fields">;
63
+ markConversationRead<ThrowOnError extends boolean = false>(options: Options<PatchOffersConversationsByIdReadData, ThrowOnError>): import("./client/types.gen.js").RequestResult<PatchOffersConversationsByIdReadResponses, PatchOffersConversationsByIdReadErrors, ThrowOnError, "fields">;
64
+ }
56
65
  export declare class Organizations extends HeyApiClient {
57
66
  registerClub<ThrowOnError extends boolean = false>(options: Options<PostOrganizationsRegisterClubData, ThrowOnError>): import("./client/types.gen.js").RequestResult<PostOrganizationsRegisterClubResponses, PostOrganizationsRegisterClubErrors, ThrowOnError, "fields">;
58
67
  getMyOrganization<ThrowOnError extends boolean = false>(options?: Options<GetOrganizationsMeData, ThrowOnError>): import("./client/types.gen.js").RequestResult<GetOrganizationsMeResponses, GetOrganizationsMeErrors, ThrowOnError, "fields">;
@@ -87,6 +96,8 @@ export declare class GlobalScoutMeClient extends HeyApiClient {
87
96
  get documents(): Documents;
88
97
  private _index?;
89
98
  get index(): Index;
99
+ private _offers?;
100
+ get offers(): Offers;
90
101
  private _organizations?;
91
102
  get organizations(): Organizations;
92
103
  private _storage?;
package/dist/sdk.gen.js CHANGED
@@ -46,6 +46,19 @@ export class Players extends HeyApiClient {
46
46
  getMyDashboard(options) {
47
47
  return (options?.client ?? this.client).get({ url: '/players/me/dashboard', ...options });
48
48
  }
49
+ searchPlayers(options) {
50
+ return (options.client ?? this.client).post({
51
+ url: '/players/search',
52
+ ...options,
53
+ headers: {
54
+ 'Content-Type': 'application/json',
55
+ ...options.headers,
56
+ },
57
+ });
58
+ }
59
+ getPlayerById(options) {
60
+ return (options.client ?? this.client).get({ url: '/players/{id}', ...options });
61
+ }
49
62
  }
50
63
  export class Profile extends HeyApiClient {
51
64
  getProfileMe(options) {
@@ -105,6 +118,37 @@ export class Index extends HeyApiClient {
105
118
  return (options.client ?? this.client).get({ url: '/index/{tableName}', ...options });
106
119
  }
107
120
  }
121
+ export class Offers extends HeyApiClient {
122
+ listConversations(options) {
123
+ return (options?.client ?? this.client).get({ url: '/offers/conversations', ...options });
124
+ }
125
+ createConversation(options) {
126
+ return (options.client ?? this.client).post({
127
+ url: '/offers/conversations',
128
+ ...options,
129
+ headers: {
130
+ 'Content-Type': 'application/json',
131
+ ...options.headers,
132
+ },
133
+ });
134
+ }
135
+ listMessages(options) {
136
+ return (options.client ?? this.client).get({ url: '/offers/conversations/{id}/messages', ...options });
137
+ }
138
+ sendMessage(options) {
139
+ return (options.client ?? this.client).post({
140
+ url: '/offers/conversations/{id}/messages',
141
+ ...options,
142
+ headers: {
143
+ 'Content-Type': 'application/json',
144
+ ...options.headers,
145
+ },
146
+ });
147
+ }
148
+ markConversationRead(options) {
149
+ return (options.client ?? this.client).patch({ url: '/offers/conversations/{id}/read', ...options });
150
+ }
151
+ }
108
152
  export class Organizations extends HeyApiClient {
109
153
  registerClub(options) {
110
154
  return (options.client ?? this.client).post({
@@ -189,6 +233,9 @@ export class GlobalScoutMeClient extends HeyApiClient {
189
233
  get index() {
190
234
  return (this._index ?? (this._index = new Index({ client: this.client })));
191
235
  }
236
+ get offers() {
237
+ return (this._offers ?? (this._offers = new Offers({ client: this.client })));
238
+ }
192
239
  get organizations() {
193
240
  return (this._organizations ?? (this._organizations = new Organizations({ client: this.client })));
194
241
  }
@@ -137,6 +137,213 @@ export type UpdatePlayerDto = {
137
137
  */
138
138
  bio?: string;
139
139
  };
140
+ export type PlayerSearchRequestDto = {
141
+ /**
142
+ * Search by first or last name
143
+ */
144
+ search?: string;
145
+ /**
146
+ * Page number (1-based)
147
+ */
148
+ page?: number;
149
+ /**
150
+ * Items per page
151
+ */
152
+ pageSize?: number;
153
+ /**
154
+ * Sort order
155
+ */
156
+ sortBy?: 'relevance' | 'age_asc' | 'age_desc' | 'gsi_score_asc' | 'gsi_score_desc' | 'nationality_asc' | 'nationality_desc';
157
+ /**
158
+ * Minimum age (inclusive)
159
+ */
160
+ ageMin?: number;
161
+ /**
162
+ * Maximum age (inclusive)
163
+ */
164
+ ageMax?: number;
165
+ /**
166
+ * Nationality codes (ISO 2-letter)
167
+ */
168
+ nationalities?: Array<string>;
169
+ /**
170
+ * Position codes (multi-select)
171
+ */
172
+ positions?: Array<string>;
173
+ /**
174
+ * Base foot
175
+ */
176
+ baseFoot?: 'left' | 'right';
177
+ /**
178
+ * Preferred formation names (multi-select)
179
+ */
180
+ preferredFormations?: Array<string>;
181
+ /**
182
+ * Height operator — must be paired with heightCm
183
+ */
184
+ heightOperator?: 'gt' | 'lt' | 'gte' | 'lte';
185
+ /**
186
+ * Height value in cm — must be paired with heightOperator
187
+ */
188
+ heightCm?: number;
189
+ /**
190
+ * Only free agents
191
+ */
192
+ isFreeAgent?: boolean;
193
+ /**
194
+ * Only EU visa holders
195
+ */
196
+ isEuVisaHolder?: boolean;
197
+ /**
198
+ * Only players with at least one video
199
+ */
200
+ hasVideo?: boolean;
201
+ /**
202
+ * Only players on the caller watchlist
203
+ */
204
+ onlyWatchlist?: boolean;
205
+ };
206
+ export type PlayerSearchItemDto = {
207
+ id: string;
208
+ firstName?: string | null;
209
+ lastName?: string | null;
210
+ avatarUrl?: string | null;
211
+ /**
212
+ * Age computed from date_of_birth
213
+ */
214
+ age?: number | null;
215
+ /**
216
+ * ISO 2-letter nationality code
217
+ */
218
+ nationality?: string | null;
219
+ isFreeAgent: boolean;
220
+ isEuVisaHolder: boolean;
221
+ /**
222
+ * Height in cm
223
+ */
224
+ heightCm?: number | null;
225
+ /**
226
+ * Preferred foot code
227
+ */
228
+ baseFoot?: string | null;
229
+ /**
230
+ * Primary position code
231
+ */
232
+ primaryPosition?: string | null;
233
+ /**
234
+ * Additional position codes
235
+ */
236
+ additionalPositions: Array<string>;
237
+ /**
238
+ * Preferred formation name
239
+ */
240
+ preferredFormation?: string | null;
241
+ /**
242
+ * Has at least one non-deleted video
243
+ */
244
+ hasVideo: boolean;
245
+ };
246
+ export type PlayerSearchResultDto = {
247
+ items: Array<PlayerSearchItemDto>;
248
+ /**
249
+ * Total matching records
250
+ */
251
+ total: number;
252
+ page: number;
253
+ pageSize: number;
254
+ };
255
+ export type PlayerClubDto = {
256
+ clubName: string;
257
+ /**
258
+ * Year joined
259
+ */
260
+ joinedYear?: number | null;
261
+ /**
262
+ * Year left
263
+ */
264
+ leftYear?: number | null;
265
+ };
266
+ export type PlayerAchievementDto = {
267
+ id: string;
268
+ title: string;
269
+ /**
270
+ * Year of achievement
271
+ */
272
+ year?: number | null;
273
+ /**
274
+ * Recurrence label (e.g. "Annual")
275
+ */
276
+ recurrence?: string | null;
277
+ };
278
+ export type PlayerVideoDto = {
279
+ id: string;
280
+ title: string;
281
+ videoUrl: string;
282
+ thumbnailUrl?: string | null;
283
+ /**
284
+ * Duration in seconds
285
+ */
286
+ durationSeconds?: number | null;
287
+ /**
288
+ * Video type code
289
+ */
290
+ videoType?: string | null;
291
+ };
292
+ export type WatchingOrgDto = {
293
+ name: string;
294
+ logoUrl?: string | null;
295
+ };
296
+ export type PlayerByIdDto = {
297
+ id: string;
298
+ firstName?: string | null;
299
+ lastName?: string | null;
300
+ avatarUrl?: string | null;
301
+ age?: number | null;
302
+ /**
303
+ * Date of birth
304
+ */
305
+ dateOfBirth?: string | null;
306
+ bio?: string | null;
307
+ /**
308
+ * ISO 2-letter nationality code
309
+ */
310
+ nationality?: string | null;
311
+ isFreeAgent: boolean;
312
+ isEuVisaHolder: boolean;
313
+ visaExpirationDate?: string | null;
314
+ /**
315
+ * Marital status label
316
+ */
317
+ maritalStatus?: string | null;
318
+ heightCm?: number | null;
319
+ weightKg?: number | null;
320
+ baseFoot?: string | null;
321
+ /**
322
+ * Primary position code
323
+ */
324
+ primaryPosition?: string | null;
325
+ additionalPositions: Array<string>;
326
+ preferredFormation?: string | null;
327
+ /**
328
+ * Spoken language names
329
+ */
330
+ languages: Array<string>;
331
+ /**
332
+ * Current club name
333
+ */
334
+ currentClub?: string | null;
335
+ previousClubs: Array<PlayerClubDto>;
336
+ achievements: Array<PlayerAchievementDto>;
337
+ videos: Array<PlayerVideoDto>;
338
+ /**
339
+ * Clubs watching this player
340
+ */
341
+ clubsWatching: Array<WatchingOrgDto>;
342
+ /**
343
+ * Scout agencies watching this player
344
+ */
345
+ agentsWatching: Array<WatchingOrgDto>;
346
+ };
140
347
  export type PreviousClubDto = {
141
348
  /**
142
349
  * Club name
@@ -496,6 +703,106 @@ export type IndexItemDto = {
496
703
  */
497
704
  displayOrder: number | null;
498
705
  };
706
+ export type ConversationParticipantDto = {
707
+ /**
708
+ * user_data id
709
+ */
710
+ id: string;
711
+ firstName?: string | null;
712
+ lastName?: string | null;
713
+ avatarUrl?: string | null;
714
+ /**
715
+ * Age computed from date_of_birth
716
+ */
717
+ age?: number | null;
718
+ /**
719
+ * Primary position code
720
+ */
721
+ primaryPosition?: string | null;
722
+ };
723
+ export type ConversationItemDto = {
724
+ /**
725
+ * Conversation UUID
726
+ */
727
+ id: string;
728
+ participant: ConversationParticipantDto;
729
+ /**
730
+ * Last message text
731
+ */
732
+ lastMessage?: string | null;
733
+ /**
734
+ * Unread message count for the current user
735
+ */
736
+ unreadCount: number;
737
+ /**
738
+ * Conversation status code
739
+ */
740
+ status: string;
741
+ createdAt: string;
742
+ updatedAt: string;
743
+ };
744
+ export type ConversationListResultDto = {
745
+ items: Array<ConversationItemDto>;
746
+ /**
747
+ * Total matching records
748
+ */
749
+ total: number;
750
+ page: number;
751
+ pageSize: number;
752
+ };
753
+ export type CreateConversationDto = {
754
+ /**
755
+ * Player user_data id to send offer to
756
+ */
757
+ playerId: string;
758
+ /**
759
+ * Opening message text
760
+ */
761
+ initialMessage?: string;
762
+ };
763
+ export type ConversationDetailDto = {
764
+ id: string;
765
+ playerId: string;
766
+ scouterId: string;
767
+ lastMessage?: string | null;
768
+ unreadCount: number;
769
+ status: string;
770
+ createdAt: string;
771
+ updatedAt: string;
772
+ };
773
+ export type MessageSenderDto = {
774
+ id: string;
775
+ firstName?: string | null;
776
+ lastName?: string | null;
777
+ avatarUrl?: string | null;
778
+ };
779
+ export type MessageItemDto = {
780
+ id: string;
781
+ conversationId: string;
782
+ sender: MessageSenderDto;
783
+ /**
784
+ * true when this message belongs to the caller
785
+ */
786
+ isOwn: boolean;
787
+ body: string;
788
+ sentAt: string;
789
+ readAt?: string | null;
790
+ };
791
+ export type MessageListResultDto = {
792
+ items: Array<MessageItemDto>;
793
+ /**
794
+ * Total matching records
795
+ */
796
+ total: number;
797
+ page: number;
798
+ pageSize: number;
799
+ };
800
+ export type SendMessageDto = {
801
+ /**
802
+ * Message body text
803
+ */
804
+ body: string;
805
+ };
499
806
  export type RegisterClubDto = {
500
807
  /**
501
808
  * Club name
@@ -803,6 +1110,48 @@ export type GetPlayersMeDashboardResponses = {
803
1110
  200: DashboardResponseDto;
804
1111
  };
805
1112
  export type GetPlayersMeDashboardResponse = GetPlayersMeDashboardResponses[keyof GetPlayersMeDashboardResponses];
1113
+ export type PostPlayersSearchData = {
1114
+ body: PlayerSearchRequestDto;
1115
+ path?: never;
1116
+ query?: never;
1117
+ url: '/players/search';
1118
+ };
1119
+ export type PostPlayersSearchErrors = {
1120
+ /**
1121
+ * Invalid filter combination
1122
+ */
1123
+ 400: unknown;
1124
+ /**
1125
+ * Unauthorized
1126
+ */
1127
+ 401: unknown;
1128
+ };
1129
+ export type PostPlayersSearchResponses = {
1130
+ 200: PlayerSearchResultDto;
1131
+ };
1132
+ export type PostPlayersSearchResponse = PostPlayersSearchResponses[keyof PostPlayersSearchResponses];
1133
+ export type GetPlayersByIdData = {
1134
+ body?: never;
1135
+ path: {
1136
+ id: string;
1137
+ };
1138
+ query?: never;
1139
+ url: '/players/{id}';
1140
+ };
1141
+ export type GetPlayersByIdErrors = {
1142
+ /**
1143
+ * Unauthorized
1144
+ */
1145
+ 401: unknown;
1146
+ /**
1147
+ * Player not found
1148
+ */
1149
+ 404: unknown;
1150
+ };
1151
+ export type GetPlayersByIdResponses = {
1152
+ 200: PlayerByIdDto;
1153
+ };
1154
+ export type GetPlayersByIdResponse = GetPlayersByIdResponses[keyof GetPlayersByIdResponses];
806
1155
  export type GetProfileMeData = {
807
1156
  body?: never;
808
1157
  path?: never;
@@ -976,6 +1325,122 @@ export type GetIndexByTableNameResponses = {
976
1325
  200: Array<IndexItemDto>;
977
1326
  };
978
1327
  export type GetIndexByTableNameResponse = GetIndexByTableNameResponses[keyof GetIndexByTableNameResponses];
1328
+ export type GetOffersConversationsData = {
1329
+ body?: never;
1330
+ path?: never;
1331
+ query?: {
1332
+ filter?: 'all' | 'unread' | 'read';
1333
+ page?: number;
1334
+ pageSize?: number;
1335
+ };
1336
+ url: '/offers/conversations';
1337
+ };
1338
+ export type GetOffersConversationsErrors = {
1339
+ /**
1340
+ * Unauthorized
1341
+ */
1342
+ 401: unknown;
1343
+ };
1344
+ export type GetOffersConversationsResponses = {
1345
+ 200: ConversationListResultDto;
1346
+ };
1347
+ export type GetOffersConversationsResponse = GetOffersConversationsResponses[keyof GetOffersConversationsResponses];
1348
+ export type PostOffersConversationsData = {
1349
+ body: CreateConversationDto;
1350
+ path?: never;
1351
+ query?: never;
1352
+ url: '/offers/conversations';
1353
+ };
1354
+ export type PostOffersConversationsErrors = {
1355
+ /**
1356
+ * Unauthorized
1357
+ */
1358
+ 401: unknown;
1359
+ };
1360
+ export type PostOffersConversationsResponses = {
1361
+ 201: ConversationDetailDto;
1362
+ };
1363
+ export type PostOffersConversationsResponse = PostOffersConversationsResponses[keyof PostOffersConversationsResponses];
1364
+ export type GetOffersConversationsByIdMessagesData = {
1365
+ body?: never;
1366
+ path: {
1367
+ id: string;
1368
+ };
1369
+ query?: {
1370
+ page?: number;
1371
+ pageSize?: number;
1372
+ };
1373
+ url: '/offers/conversations/{id}/messages';
1374
+ };
1375
+ export type GetOffersConversationsByIdMessagesErrors = {
1376
+ /**
1377
+ * Unauthorized
1378
+ */
1379
+ 401: unknown;
1380
+ /**
1381
+ * Not a participant
1382
+ */
1383
+ 403: unknown;
1384
+ /**
1385
+ * Conversation not found
1386
+ */
1387
+ 404: unknown;
1388
+ };
1389
+ export type GetOffersConversationsByIdMessagesResponses = {
1390
+ 200: MessageListResultDto;
1391
+ };
1392
+ export type GetOffersConversationsByIdMessagesResponse = GetOffersConversationsByIdMessagesResponses[keyof GetOffersConversationsByIdMessagesResponses];
1393
+ export type PostOffersConversationsByIdMessagesData = {
1394
+ body: SendMessageDto;
1395
+ path: {
1396
+ id: string;
1397
+ };
1398
+ query?: never;
1399
+ url: '/offers/conversations/{id}/messages';
1400
+ };
1401
+ export type PostOffersConversationsByIdMessagesErrors = {
1402
+ /**
1403
+ * Unauthorized
1404
+ */
1405
+ 401: unknown;
1406
+ /**
1407
+ * Not a participant
1408
+ */
1409
+ 403: unknown;
1410
+ /**
1411
+ * Conversation not found
1412
+ */
1413
+ 404: unknown;
1414
+ };
1415
+ export type PostOffersConversationsByIdMessagesResponses = {
1416
+ 201: MessageItemDto;
1417
+ };
1418
+ export type PostOffersConversationsByIdMessagesResponse = PostOffersConversationsByIdMessagesResponses[keyof PostOffersConversationsByIdMessagesResponses];
1419
+ export type PatchOffersConversationsByIdReadData = {
1420
+ body?: never;
1421
+ path: {
1422
+ id: string;
1423
+ };
1424
+ query?: never;
1425
+ url: '/offers/conversations/{id}/read';
1426
+ };
1427
+ export type PatchOffersConversationsByIdReadErrors = {
1428
+ /**
1429
+ * Unauthorized
1430
+ */
1431
+ 401: unknown;
1432
+ /**
1433
+ * Not a participant
1434
+ */
1435
+ 403: unknown;
1436
+ /**
1437
+ * Conversation not found
1438
+ */
1439
+ 404: unknown;
1440
+ };
1441
+ export type PatchOffersConversationsByIdReadResponses = {
1442
+ 200: unknown;
1443
+ };
979
1444
  export type PostOrganizationsRegisterClubData = {
980
1445
  body: RegisterClubDto;
981
1446
  path?: never;