@globalscoutme/api-client 1.0.11 → 1.0.14

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/types.gen.ts CHANGED
@@ -62,6 +62,25 @@ export type PlayerResponseDto = {
62
62
  updatedAt?: string | null;
63
63
  };
64
64
 
65
+ export type DivisionDto = {
66
+ /**
67
+ * Division tier 1 (highest) to 5 (lowest)
68
+ */
69
+ number: 1 | 2 | 3 | 4 | 5;
70
+ /**
71
+ * Minimum XP of the current tier
72
+ */
73
+ currentTierMin: number;
74
+ /**
75
+ * Minimum XP of the next tier; null at top tier
76
+ */
77
+ nextTierMin: number | null;
78
+ /**
79
+ * Progress through current tier, range [0, 1]
80
+ */
81
+ progressInTier: number;
82
+ };
83
+
65
84
  export type DashboardResponseDto = {
66
85
  /**
67
86
  * First name
@@ -107,6 +126,22 @@ export type DashboardResponseDto = {
107
126
  * Has at least one language set
108
127
  */
109
128
  hasLanguages: boolean;
129
+ /**
130
+ * Cumulative XP from completed challenges
131
+ */
132
+ totalXp: number;
133
+ division: DivisionDto;
134
+ };
135
+
136
+ export type HeartbeatDto = {
137
+ /**
138
+ * IANA timezone from the client device
139
+ */
140
+ timezone: string;
141
+ };
142
+
143
+ export type HeartbeatResponseDto = {
144
+ ok: boolean;
110
145
  };
111
146
 
112
147
  export type UpdatePlayerDto = {
@@ -407,6 +442,10 @@ export type ProfileResponseDto = {
407
442
  * Internal user_data id
408
443
  */
409
444
  id: string;
445
+ /**
446
+ * Email address
447
+ */
448
+ email?: string | null;
410
449
  /**
411
450
  * First name
412
451
  */
@@ -698,6 +737,102 @@ export type CreateBodyMeasurementDto = {
698
737
  imageUrl?: string;
699
738
  };
700
739
 
740
+ export type ChallengeCatalogDto = {
741
+ id: string;
742
+ code: string;
743
+ name: string;
744
+ description?: string | null;
745
+ categoryCode: string;
746
+ xpReward: number;
747
+ deadlineDays: number;
748
+ resetPeriod?: string | null;
749
+ iconUrl?: string | null;
750
+ displayOrder?: number | null;
751
+ };
752
+
753
+ export type MyChallengeDto = {
754
+ /**
755
+ * user_challenges.id — stable per (user, challenge, period)
756
+ */
757
+ id: string;
758
+ code: string;
759
+ name: string;
760
+ description?: string | null;
761
+ categoryCode: string;
762
+ xpReward: number;
763
+ deadlineDays: number;
764
+ resetPeriod?: string | null;
765
+ iconUrl?: string | null;
766
+ status: 'active' | 'completed' | 'expired';
767
+ /**
768
+ * Current progress, 0..target
769
+ */
770
+ progress: number;
771
+ /**
772
+ * Completion threshold
773
+ */
774
+ target: number;
775
+ /**
776
+ * ISO timestamp when this instance expires
777
+ */
778
+ expiresAt: string;
779
+ /**
780
+ * ISO timestamp — when the user first saw this challenge instance
781
+ */
782
+ startedAt: string;
783
+ /**
784
+ * ISO timestamp; null if not yet completed
785
+ */
786
+ completedAt?: string | null;
787
+ /**
788
+ * ISO date for period start (0001-01-01 sentinel for non-resetting)
789
+ */
790
+ periodStart: string;
791
+ };
792
+
793
+ export type ClubResponseDto = {
794
+ id: string;
795
+ userId: string;
796
+ clubName: string;
797
+ userTypeCode?: string | null;
798
+ isCurrent: boolean;
799
+ joinedAt?: string | null;
800
+ leftAt?: string | null;
801
+ createdAt: string;
802
+ updatedAt: string;
803
+ };
804
+
805
+ export type CreateClubDto = {
806
+ /**
807
+ * Display name of the club (free text).
808
+ */
809
+ clubName: string;
810
+ /**
811
+ * ISO date string — when the player joined.
812
+ */
813
+ joinedAt?: string;
814
+ /**
815
+ * ISO date string — when the player left.
816
+ */
817
+ leftAt?: string;
818
+ /**
819
+ * Whether this is the currently active club.
820
+ */
821
+ isCurrent?: boolean;
822
+ /**
823
+ * Role at the club (e.g. player, coach). Matches index.user_types.code.
824
+ */
825
+ userTypeCode?: string;
826
+ };
827
+
828
+ export type UpdateClubDto = {
829
+ clubName?: string;
830
+ joinedAt?: string;
831
+ leftAt?: string;
832
+ isCurrent?: boolean;
833
+ userTypeCode?: string;
834
+ };
835
+
701
836
  export type DocumentResponseDto = {
702
837
  id: string;
703
838
  userId: string;
@@ -742,6 +877,12 @@ export type IndexItemDto = {
742
877
  displayOrder: number | null;
743
878
  };
744
879
 
880
+ export type ConversationOrganizationDto = {
881
+ id: string;
882
+ name: string;
883
+ logoUrl: string | null;
884
+ };
885
+
745
886
  export type ConversationParticipantDto = {
746
887
  /**
747
888
  * user_data id
@@ -758,6 +899,11 @@ export type ConversationParticipantDto = {
758
899
  * Primary position code
759
900
  */
760
901
  primaryPosition?: string | null;
902
+ /**
903
+ * user_data.user_type code (e.g. club_admin, scouter)
904
+ */
905
+ userType: string | null;
906
+ organization?: ConversationOrganizationDto | null;
761
907
  };
762
908
 
763
909
  export type ConversationItemDto = {
@@ -906,6 +1052,10 @@ export type OrganizationResponseDto = {
906
1052
  * Club name
907
1053
  */
908
1054
  name: string;
1055
+ /**
1056
+ * Club crest / logo URL
1057
+ */
1058
+ logoUrl?: string | null;
909
1059
  /**
910
1060
  * Slug
911
1061
  */
@@ -953,6 +1103,10 @@ export type UpdateOrganizationDto = {
953
1103
  * Club name
954
1104
  */
955
1105
  name?: string;
1106
+ /**
1107
+ * Club crest / logo URL, null to clear
1108
+ */
1109
+ logoUrl?: string | null;
956
1110
  /**
957
1111
  * Country code (2-letter ISO)
958
1112
  */
@@ -1029,6 +1183,63 @@ export type UploadUrlResponseDto = {
1029
1183
  expiresIn: number;
1030
1184
  };
1031
1185
 
1186
+ export type SendInvitationRequestDto = {
1187
+ email: string;
1188
+ };
1189
+
1190
+ export type InvitationResponseDto = {
1191
+ id: string;
1192
+ email: string;
1193
+ firstName?: string | null;
1194
+ lastName?: string | null;
1195
+ status: 'confirmed' | 'pending' | 'expired';
1196
+ invitedAt: string;
1197
+ expiresAt: string;
1198
+ acceptedAt?: string | null;
1199
+ };
1200
+
1201
+ export type TrainingContentListItemDto = {
1202
+ id: string;
1203
+ title: string;
1204
+ summary?: string | null;
1205
+ thumbnailUrl?: string | null;
1206
+ durationSeconds?: number | null;
1207
+ categoryCode: string;
1208
+ difficultyLevel: string;
1209
+ xpReward: number;
1210
+ displayOrder?: number | null;
1211
+ };
1212
+
1213
+ export type TrainingCategoryGroupDto = {
1214
+ categoryCode: string;
1215
+ categoryName: string;
1216
+ items: Array<TrainingContentListItemDto>;
1217
+ };
1218
+
1219
+ export type PaginatedTrainingContentDto = {
1220
+ items: Array<TrainingContentListItemDto>;
1221
+ /**
1222
+ * Total matching records
1223
+ */
1224
+ total: number;
1225
+ page: number;
1226
+ pageSize: number;
1227
+ };
1228
+
1229
+ export type TrainingContentDetailDto = {
1230
+ id: string;
1231
+ title: string;
1232
+ subtitle?: string | null;
1233
+ description?: string | null;
1234
+ thumbnailUrl?: string | null;
1235
+ videoUrl?: string | null;
1236
+ durationSeconds?: number | null;
1237
+ categoryCode: string;
1238
+ difficultyLevel: string;
1239
+ xpReward: number;
1240
+ displayOrder?: number | null;
1241
+ };
1242
+
1032
1243
  export type VideoResponseDto = {
1033
1244
  id: string;
1034
1245
  userId: string;
@@ -1191,6 +1402,27 @@ export type GetPlayersMeDashboardResponses = {
1191
1402
  export type GetPlayersMeDashboardResponse =
1192
1403
  GetPlayersMeDashboardResponses[keyof GetPlayersMeDashboardResponses];
1193
1404
 
1405
+ export type PostPlayersMeHeartbeatData = {
1406
+ body: HeartbeatDto;
1407
+ path?: never;
1408
+ query?: never;
1409
+ url: '/players/me/heartbeat';
1410
+ };
1411
+
1412
+ export type PostPlayersMeHeartbeatErrors = {
1413
+ /**
1414
+ * Unauthorized
1415
+ */
1416
+ 401: unknown;
1417
+ };
1418
+
1419
+ export type PostPlayersMeHeartbeatResponses = {
1420
+ 200: HeartbeatResponseDto;
1421
+ };
1422
+
1423
+ export type PostPlayersMeHeartbeatResponse =
1424
+ PostPlayersMeHeartbeatResponses[keyof PostPlayersMeHeartbeatResponses];
1425
+
1194
1426
  export type PostPlayersSearchData = {
1195
1427
  body: PlayerSearchRequestDto;
1196
1428
  path?: never;
@@ -1382,6 +1614,150 @@ export type PostBodyMeasurementsResponses = {
1382
1614
  export type PostBodyMeasurementsResponse =
1383
1615
  PostBodyMeasurementsResponses[keyof PostBodyMeasurementsResponses];
1384
1616
 
1617
+ export type GetChallengesData = {
1618
+ body?: never;
1619
+ path?: never;
1620
+ query?: never;
1621
+ url: '/challenges';
1622
+ };
1623
+
1624
+ export type GetChallengesErrors = {
1625
+ /**
1626
+ * Unauthorized
1627
+ */
1628
+ 401: unknown;
1629
+ };
1630
+
1631
+ export type GetChallengesResponses = {
1632
+ 200: Array<ChallengeCatalogDto>;
1633
+ };
1634
+
1635
+ export type GetChallengesResponse =
1636
+ GetChallengesResponses[keyof GetChallengesResponses];
1637
+
1638
+ export type GetChallengesMeData = {
1639
+ body?: never;
1640
+ path?: never;
1641
+ query?: never;
1642
+ url: '/challenges/me';
1643
+ };
1644
+
1645
+ export type GetChallengesMeErrors = {
1646
+ /**
1647
+ * Unauthorized
1648
+ */
1649
+ 401: unknown;
1650
+ /**
1651
+ * Player-only endpoint
1652
+ */
1653
+ 403: unknown;
1654
+ };
1655
+
1656
+ export type GetChallengesMeResponses = {
1657
+ 200: Array<MyChallengeDto>;
1658
+ };
1659
+
1660
+ export type GetChallengesMeResponse =
1661
+ GetChallengesMeResponses[keyof GetChallengesMeResponses];
1662
+
1663
+ export type GetClubsMeData = {
1664
+ body?: never;
1665
+ path?: never;
1666
+ query?: never;
1667
+ url: '/clubs/me';
1668
+ };
1669
+
1670
+ export type GetClubsMeErrors = {
1671
+ /**
1672
+ * Unauthorized
1673
+ */
1674
+ 401: unknown;
1675
+ };
1676
+
1677
+ export type GetClubsMeResponses = {
1678
+ 200: Array<ClubResponseDto>;
1679
+ };
1680
+
1681
+ export type GetClubsMeResponse = GetClubsMeResponses[keyof GetClubsMeResponses];
1682
+
1683
+ export type PostClubsMeData = {
1684
+ body: CreateClubDto;
1685
+ path?: never;
1686
+ query?: never;
1687
+ url: '/clubs/me';
1688
+ };
1689
+
1690
+ export type PostClubsMeErrors = {
1691
+ /**
1692
+ * Unauthorized
1693
+ */
1694
+ 401: unknown;
1695
+ };
1696
+
1697
+ export type PostClubsMeResponses = {
1698
+ 201: ClubResponseDto;
1699
+ };
1700
+
1701
+ export type PostClubsMeResponse =
1702
+ PostClubsMeResponses[keyof PostClubsMeResponses];
1703
+
1704
+ export type DeleteClubsMeByIdData = {
1705
+ body?: never;
1706
+ path: {
1707
+ id: string;
1708
+ };
1709
+ query?: never;
1710
+ url: '/clubs/me/{id}';
1711
+ };
1712
+
1713
+ export type DeleteClubsMeByIdErrors = {
1714
+ /**
1715
+ * Unauthorized
1716
+ */
1717
+ 401: unknown;
1718
+ /**
1719
+ * Club not found
1720
+ */
1721
+ 404: unknown;
1722
+ };
1723
+
1724
+ export type DeleteClubsMeByIdResponses = {
1725
+ /**
1726
+ * Club deleted
1727
+ */
1728
+ 204: void;
1729
+ };
1730
+
1731
+ export type DeleteClubsMeByIdResponse =
1732
+ DeleteClubsMeByIdResponses[keyof DeleteClubsMeByIdResponses];
1733
+
1734
+ export type PatchClubsMeByIdData = {
1735
+ body: UpdateClubDto;
1736
+ path: {
1737
+ id: string;
1738
+ };
1739
+ query?: never;
1740
+ url: '/clubs/me/{id}';
1741
+ };
1742
+
1743
+ export type PatchClubsMeByIdErrors = {
1744
+ /**
1745
+ * Unauthorized
1746
+ */
1747
+ 401: unknown;
1748
+ /**
1749
+ * Club not found
1750
+ */
1751
+ 404: unknown;
1752
+ };
1753
+
1754
+ export type PatchClubsMeByIdResponses = {
1755
+ 200: ClubResponseDto;
1756
+ };
1757
+
1758
+ export type PatchClubsMeByIdResponse =
1759
+ PatchClubsMeByIdResponses[keyof PatchClubsMeByIdResponses];
1760
+
1385
1761
  export type GetDocumentsMeData = {
1386
1762
  body?: never;
1387
1763
  path?: never;
@@ -1464,7 +1840,7 @@ export type GetOffersConversationsData = {
1464
1840
  body?: never;
1465
1841
  path?: never;
1466
1842
  query?: {
1467
- filter?: 'all' | 'unread' | 'read';
1843
+ filter?: 'all' | 'unread' | 'read' | 'clubs' | 'agents';
1468
1844
  page?: number;
1469
1845
  pageSize?: number;
1470
1846
  };
@@ -1706,6 +2082,188 @@ export type PostStorageUploadUrlResponses = {
1706
2082
  export type PostStorageUploadUrlResponse =
1707
2083
  PostStorageUploadUrlResponses[keyof PostStorageUploadUrlResponses];
1708
2084
 
2085
+ export type GetInvitationsData = {
2086
+ body?: never;
2087
+ path?: never;
2088
+ query?: never;
2089
+ url: '/invitations';
2090
+ };
2091
+
2092
+ export type GetInvitationsResponses = {
2093
+ 200: Array<InvitationResponseDto>;
2094
+ };
2095
+
2096
+ export type GetInvitationsResponse =
2097
+ GetInvitationsResponses[keyof GetInvitationsResponses];
2098
+
2099
+ export type PostInvitationsData = {
2100
+ body: SendInvitationRequestDto;
2101
+ path?: never;
2102
+ query?: never;
2103
+ url: '/invitations';
2104
+ };
2105
+
2106
+ export type PostInvitationsErrors = {
2107
+ /**
2108
+ * Limit reached or duplicate email
2109
+ */
2110
+ 400: unknown;
2111
+ };
2112
+
2113
+ export type PostInvitationsResponses = {
2114
+ 201: InvitationResponseDto;
2115
+ };
2116
+
2117
+ export type PostInvitationsResponse =
2118
+ PostInvitationsResponses[keyof PostInvitationsResponses];
2119
+
2120
+ export type PostInvitationsByIdResendData = {
2121
+ body?: never;
2122
+ path: {
2123
+ id: string;
2124
+ };
2125
+ query?: never;
2126
+ url: '/invitations/{id}/resend';
2127
+ };
2128
+
2129
+ export type PostInvitationsByIdResendErrors = {
2130
+ /**
2131
+ * Cannot resend a confirmed invitation
2132
+ */
2133
+ 400: unknown;
2134
+ /**
2135
+ * Invitation not found
2136
+ */
2137
+ 404: unknown;
2138
+ };
2139
+
2140
+ export type PostInvitationsByIdResendResponses = {
2141
+ 200: InvitationResponseDto;
2142
+ };
2143
+
2144
+ export type PostInvitationsByIdResendResponse =
2145
+ PostInvitationsByIdResendResponses[keyof PostInvitationsByIdResendResponses];
2146
+
2147
+ export type DeleteInvitationsByIdData = {
2148
+ body?: never;
2149
+ path: {
2150
+ id: string;
2151
+ };
2152
+ query?: never;
2153
+ url: '/invitations/{id}';
2154
+ };
2155
+
2156
+ export type DeleteInvitationsByIdErrors = {
2157
+ /**
2158
+ * Cannot delete a confirmed invitation
2159
+ */
2160
+ 400: unknown;
2161
+ /**
2162
+ * Invitation not found
2163
+ */
2164
+ 404: unknown;
2165
+ };
2166
+
2167
+ export type DeleteInvitationsByIdResponses = {
2168
+ /**
2169
+ * Deleted
2170
+ */
2171
+ 204: void;
2172
+ };
2173
+
2174
+ export type DeleteInvitationsByIdResponse =
2175
+ DeleteInvitationsByIdResponses[keyof DeleteInvitationsByIdResponses];
2176
+
2177
+ export type PostInvitationsAcceptData = {
2178
+ body?: never;
2179
+ path?: never;
2180
+ query?: never;
2181
+ url: '/invitations/accept';
2182
+ };
2183
+
2184
+ export type PostInvitationsAcceptResponses = {
2185
+ /**
2186
+ * Accepted (or no pending invitation — idempotent)
2187
+ */
2188
+ 204: void;
2189
+ };
2190
+
2191
+ export type PostInvitationsAcceptResponse =
2192
+ PostInvitationsAcceptResponses[keyof PostInvitationsAcceptResponses];
2193
+
2194
+ export type GetTrainingGroupedData = {
2195
+ body?: never;
2196
+ path?: never;
2197
+ query?: never;
2198
+ url: '/training/grouped';
2199
+ };
2200
+
2201
+ export type GetTrainingGroupedErrors = {
2202
+ /**
2203
+ * Unauthorized
2204
+ */
2205
+ 401: unknown;
2206
+ };
2207
+
2208
+ export type GetTrainingGroupedResponses = {
2209
+ 200: Array<TrainingCategoryGroupDto>;
2210
+ };
2211
+
2212
+ export type GetTrainingGroupedResponse =
2213
+ GetTrainingGroupedResponses[keyof GetTrainingGroupedResponses];
2214
+
2215
+ export type GetTrainingData = {
2216
+ body?: never;
2217
+ path?: never;
2218
+ query?: {
2219
+ categoryCode?: string;
2220
+ page?: number;
2221
+ pageSize?: number;
2222
+ };
2223
+ url: '/training';
2224
+ };
2225
+
2226
+ export type GetTrainingErrors = {
2227
+ /**
2228
+ * Unauthorized
2229
+ */
2230
+ 401: unknown;
2231
+ };
2232
+
2233
+ export type GetTrainingResponses = {
2234
+ 200: PaginatedTrainingContentDto;
2235
+ };
2236
+
2237
+ export type GetTrainingResponse =
2238
+ GetTrainingResponses[keyof GetTrainingResponses];
2239
+
2240
+ export type GetTrainingByIdData = {
2241
+ body?: never;
2242
+ path: {
2243
+ id: string;
2244
+ };
2245
+ query?: never;
2246
+ url: '/training/{id}';
2247
+ };
2248
+
2249
+ export type GetTrainingByIdErrors = {
2250
+ /**
2251
+ * Unauthorized
2252
+ */
2253
+ 401: unknown;
2254
+ /**
2255
+ * Not found
2256
+ */
2257
+ 404: unknown;
2258
+ };
2259
+
2260
+ export type GetTrainingByIdResponses = {
2261
+ 200: TrainingContentDetailDto;
2262
+ };
2263
+
2264
+ export type GetTrainingByIdResponse =
2265
+ GetTrainingByIdResponses[keyof GetTrainingByIdResponses];
2266
+
1709
2267
  export type GetVideosMeData = {
1710
2268
  body?: never;
1711
2269
  path?: never;