Skip to content

Commit 77e1d30

Browse files
gumaercjonkafton
andauthored
add mitxonline certificate api (#2410)
* use v2 mitxonline api's everywhere, add certificate api's * fix yarn lock * move back to official package now that it is released * add course run cert info to transform * fix tests surrounding certificate info on course runs * Update frontends/api/src/mitxonline/hooks/certificates/queries.ts Co-authored-by: Jon Kafton <[email protected]> --------- Co-authored-by: Jon Kafton <[email protected]>
1 parent a98de0b commit 77e1d30

File tree

23 files changed

+103
-25
lines changed

23 files changed

+103
-25
lines changed

frontends/api/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"ol-test-utilities": "0.0.0"
3131
},
3232
"dependencies": {
33-
"@mitodl/mitxonline-api-axios": "2025.7.28",
33+
"@mitodl/mitxonline-api-axios": "2025.8.6",
3434
"@tanstack/react-query": "^5.66.0",
3535
"axios": "^1.6.3"
3636
}

frontends/api/src/mitxonline/clients.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import {
22
B2bApi,
33
CoursesApi,
4+
CourseCertificatesApi,
45
EnrollmentsApi,
56
ProgramCollectionsApi,
67
ProgramsApi,
8+
ProgramCertificatesApi,
79
UsersApi,
8-
} from "@mitodl/mitxonline-api-axios/v1"
10+
} from "@mitodl/mitxonline-api-axios/v2"
911
import axios from "axios"
1012

1113
const axiosInstance = axios.create({
@@ -29,7 +31,17 @@ const programCollectionsApi = new ProgramCollectionsApi(
2931
BASE_PATH,
3032
axiosInstance,
3133
)
34+
const programCertificatesApi = new ProgramCertificatesApi(
35+
undefined,
36+
BASE_PATH,
37+
axiosInstance,
38+
)
3239
const coursesApi = new CoursesApi(undefined, BASE_PATH, axiosInstance)
40+
const courseCertificatesApi = new CourseCertificatesApi(
41+
undefined,
42+
BASE_PATH,
43+
axiosInstance,
44+
)
3345

3446
export {
3547
usersApi,
@@ -38,5 +50,7 @@ export {
3850
programsApi,
3951
programCollectionsApi,
4052
coursesApi,
53+
programCertificatesApi,
54+
courseCertificatesApi,
4155
axiosInstance,
4256
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { certificateQueries } from "./queries"
2+
3+
export { certificateQueries }
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { queryOptions } from "@tanstack/react-query"
2+
import type {
3+
CourseCertificatesApiCourseCertificatesRetrieveRequest,
4+
ProgramCertificatesApiProgramCertificatesRetrieveRequest,
5+
V2CourseRunCertificate,
6+
V2ProgramCertificate,
7+
} from "@mitodl/mitxonline-api-axios/v2"
8+
import { courseCertificatesApi, programCertificatesApi } from "../../clients"
9+
10+
const certificateKeys = {
11+
root: ["mitxonline", "certificates"],
12+
courseCertificatesRetrieve: (
13+
opts?: CourseCertificatesApiCourseCertificatesRetrieveRequest,
14+
) => [...certificateKeys.root, "retrieve", opts],
15+
programCertificatesRetrieve: (
16+
opts?: ProgramCertificatesApiProgramCertificatesRetrieveRequest,
17+
) => [...certificateKeys.root, "retrieve", opts],
18+
}
19+
20+
const certificateQueries = {
21+
courseCertificatesRetrieve: (
22+
opts: CourseCertificatesApiCourseCertificatesRetrieveRequest,
23+
) =>
24+
queryOptions({
25+
queryKey: certificateKeys.courseCertificatesRetrieve(opts),
26+
queryFn: async (): Promise<V2CourseRunCertificate> => {
27+
return courseCertificatesApi
28+
.courseCertificatesRetrieve(opts)
29+
.then((res) => res.data)
30+
},
31+
enabled: !!opts.cert_uuid,
32+
}),
33+
programCertificatesRetrieve: (
34+
opts: ProgramCertificatesApiProgramCertificatesRetrieveRequest,
35+
) =>
36+
queryOptions({
37+
queryKey: certificateKeys.programCertificatesRetrieve(opts),
38+
queryFn: async (): Promise<V2ProgramCertificate> => {
39+
return programCertificatesApi
40+
.programCertificatesRetrieve(opts)
41+
.then((res) => res.data)
42+
},
43+
}),
44+
}
45+
46+
export { certificateQueries, certificateKeys }

frontends/api/src/mitxonline/hooks/courses/queries.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { queryOptions } from "@tanstack/react-query"
22
import type {
33
CoursesApiApiV2CoursesListRequest,
44
PaginatedV2CourseWithCourseRunsList,
5-
} from "@mitodl/mitxonline-api-axios/v1"
5+
} from "@mitodl/mitxonline-api-axios/v2"
66
import { coursesApi } from "../../clients"
77

88
const coursesKeys = {

frontends/api/src/mitxonline/hooks/enrollment/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { b2bApi, enrollmentsApi } from "../../clients"
44
import {
55
B2bApiB2bEnrollCreateRequest,
66
EnrollmentsApiEnrollmentsPartialUpdateRequest,
7-
} from "@mitodl/mitxonline-api-axios/v1"
7+
} from "@mitodl/mitxonline-api-axios/v2"
88

99
const useCreateEnrollment = (opts: B2bApiB2bEnrollCreateRequest) => {
1010
const queryClient = useQueryClient()

frontends/api/src/mitxonline/hooks/enrollment/queries.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { queryOptions } from "@tanstack/react-query"
2-
import type { CourseRunEnrollment } from "@mitodl/mitxonline-api-axios/v1"
2+
import type { CourseRunEnrollment } from "@mitodl/mitxonline-api-axios/v2"
33

44
import { enrollmentsApi } from "../../clients"
55

frontends/api/src/mitxonline/hooks/organizations/queries.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { B2bApiB2bOrganizationsRetrieveRequest } from "@mitodl/mitxonline-api-axios/v0"
2-
import { OrganizationPage } from "@mitodl/mitxonline-api-axios/v1"
2+
import { OrganizationPage } from "@mitodl/mitxonline-api-axios/v2"
33
import { queryOptions } from "@tanstack/react-query"
44
import { b2bApi } from "../../clients"
55

frontends/api/src/mitxonline/hooks/programs/queries.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type {
66
ProgramsApiProgramsListV2Request,
77
ProgramsApiProgramsRetrieveV2Request,
88
V2Program,
9-
} from "@mitodl/mitxonline-api-axios/v1"
9+
} from "@mitodl/mitxonline-api-axios/v2"
1010
import { programCollectionsApi, programsApi } from "../../clients"
1111

1212
const programsKeys = {

frontends/api/src/mitxonline/hooks/user/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useQuery } from "@tanstack/react-query"
22
import { usersApi } from "../../clients"
3-
import type { User } from "@mitodl/mitxonline-api-axios/v1"
3+
import type { User } from "@mitodl/mitxonline-api-axios/v2"
44

55
const useMitxOnlineCurrentUser = (opts: { enabled?: boolean } = {}) =>
66
useQuery({

0 commit comments

Comments
 (0)