@globalscoutme/api-client 1.0.13 → 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 = {
@@ -702,6 +737,102 @@ export type CreateBodyMeasurementDto = {
702
737
  imageUrl?: string;
703
738
  };
704
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
+
705
836
  export type DocumentResponseDto = {
706
837
  id: string;
707
838
  userId: string;
@@ -746,6 +877,12 @@ export type IndexItemDto = {
746
877
  displayOrder: number | null;
747
878
  };
748
879
 
880
+ export type ConversationOrganizationDto = {
881
+ id: string;
882
+ name: string;
883
+ logoUrl: string | null;
884
+ };
885
+
749
886
  export type ConversationParticipantDto = {
750
887
  /**
751
888
  * user_data id
@@ -762,6 +899,11 @@ export type ConversationParticipantDto = {
762
899
  * Primary position code
763
900
  */
764
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;
765
907
  };
766
908
 
767
909
  export type ConversationItemDto = {
@@ -1041,6 +1183,63 @@ export type UploadUrlResponseDto = {
1041
1183
  expiresIn: number;
1042
1184
  };
1043
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
+
1044
1243
  export type VideoResponseDto = {
1045
1244
  id: string;
1046
1245
  userId: string;
@@ -1203,6 +1402,27 @@ export type GetPlayersMeDashboardResponses = {
1203
1402
  export type GetPlayersMeDashboardResponse =
1204
1403
  GetPlayersMeDashboardResponses[keyof GetPlayersMeDashboardResponses];
1205
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
+
1206
1426
  export type PostPlayersSearchData = {
1207
1427
  body: PlayerSearchRequestDto;
1208
1428
  path?: never;
@@ -1394,6 +1614,150 @@ export type PostBodyMeasurementsResponses = {
1394
1614
  export type PostBodyMeasurementsResponse =
1395
1615
  PostBodyMeasurementsResponses[keyof PostBodyMeasurementsResponses];
1396
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
+
1397
1761
  export type GetDocumentsMeData = {
1398
1762
  body?: never;
1399
1763
  path?: never;
@@ -1476,7 +1840,7 @@ export type GetOffersConversationsData = {
1476
1840
  body?: never;
1477
1841
  path?: never;
1478
1842
  query?: {
1479
- filter?: 'all' | 'unread' | 'read';
1843
+ filter?: 'all' | 'unread' | 'read' | 'clubs' | 'agents';
1480
1844
  page?: number;
1481
1845
  pageSize?: number;
1482
1846
  };
@@ -1718,6 +2082,188 @@ export type PostStorageUploadUrlResponses = {
1718
2082
  export type PostStorageUploadUrlResponse =
1719
2083
  PostStorageUploadUrlResponses[keyof PostStorageUploadUrlResponses];
1720
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
+
1721
2267
  export type GetVideosMeData = {
1722
2268
  body?: never;
1723
2269
  path?: never;