Skip to content

Commit 3576b82

Browse files
authored
Merge pull request #204 from Sphereon-Opensource/fix/ajax-seasonticket2
fix/ajax-seasonticket2
2 parents 5dcb67b + 5853d5f commit 3576b82

2 files changed

Lines changed: 85 additions & 3 deletions

File tree

packages/siop-oid4vp/lib/schemas/universal-oid4vp/index.ts

Lines changed: 77 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import {
22
AuthorizationRequestStateStatus,
3-
AuthorizationResponseStateStatus,
3+
AuthorizationResponseStateStatus, AuthStatusResponse, AuthStatusResponsePayload,
44
CallbackOpts,
55
CallbackOptsPayload,
66
CreateAuthorizationRequest,
77
CreateAuthorizationRequestPayload,
88
CreateAuthorizationResponse,
99
CreateAuthorizationResponsePayload,
1010
QRCodeOpts,
11-
QRCodeOptsPayload,
11+
QRCodeOptsPayload, RequestError, RequestErrorPayload,
1212
RequestUriMethod,
1313
ResponseMode,
1414
ResponseType,
@@ -196,3 +196,78 @@ export const createAuthorizationResponseToPayload = (internal: CreateAuthorizati
196196
qr_uri: parsed.qrUri
197197
}
198198
}
199+
200+
201+
export const RequestErrorSchema = z.object({
202+
status: z.number(),
203+
message: z.string(),
204+
errorDetails: z.string().optional()
205+
})
206+
207+
export const AuthStatusResponseSchema = z.object({
208+
status: AuthorizationStatusSchema,
209+
correlationId: z.string(),
210+
queryId: z.string(),
211+
lastUpdated: z.number(),
212+
verifiedData: z.any().optional(), // Replace with actual VerifiedDataSchema when available
213+
error: RequestErrorSchema.optional()
214+
})
215+
216+
217+
export const RequestErrorPayloadSchema = z.object({
218+
status: z.number(),
219+
message: z.string(),
220+
error_details: z.string().optional()
221+
})
222+
223+
export const AuthStatusResponsePayloadSchema = z.object({
224+
status: AuthorizationStatusSchema,
225+
correlation_id: z.string(),
226+
query_id: z.string(),
227+
last_updated: z.number(),
228+
verified_data: z.any().optional(), // Replace with actual VerifiedDataSchema when available
229+
error: RequestErrorPayloadSchema.optional()
230+
})
231+
232+
233+
export const requestErrorFromPayload = (payload: RequestError): RequestError => {
234+
const parsed = RequestErrorPayloadSchema.parse(payload)
235+
return {
236+
status: parsed.status,
237+
message: parsed.message,
238+
errorDetails: parsed.error_details
239+
}
240+
}
241+
242+
export const requestErrorToPayload = (internal: RequestError): RequestErrorPayload => {
243+
const parsed = RequestErrorSchema.parse(internal)
244+
return {
245+
status: parsed.status,
246+
message: parsed.message,
247+
error_details: parsed.errorDetails
248+
}
249+
}
250+
251+
export const authStatusResponseFromPayload = (payload: AuthStatusResponse): AuthStatusResponse => {
252+
const parsed = AuthStatusResponsePayloadSchema.parse(payload)
253+
return {
254+
status: parsed.status,
255+
correlationId: parsed.correlation_id,
256+
queryId: parsed.query_id,
257+
lastUpdated: parsed.last_updated,
258+
verifiedData: parsed.verified_data,
259+
error: parsed.error ? requestErrorFromPayload(parsed.error) : undefined
260+
}
261+
}
262+
263+
export const authStatusResponseToPayload = (internal: AuthStatusResponse): AuthStatusResponsePayload => {
264+
const parsed = AuthStatusResponseSchema.parse(internal)
265+
return {
266+
status: parsed.status,
267+
correlation_id: parsed.correlationId,
268+
query_id: parsed.queryId,
269+
last_updated: parsed.lastUpdated,
270+
verified_data: parsed.verifiedData,
271+
error: parsed.error ? requestErrorToPayload(parsed.error) : undefined
272+
}
273+
}

packages/siop-oid4vp/lib/types/SIOP.types.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,16 @@ import { RequestObject, RequestObjectOpts } from '../request-object'
2828
import { IRPSessionManager } from '../rp'
2929
import { JWTPayload, VerifiedJWT } from './JWT.types'
3030
import {
31+
AuthStatusResponsePayloadSchema,
32+
AuthStatusResponseSchema,
3133
CallbackOptsPayloadSchema,
3234
CallbackOptsSchema,
3335
CreateAuthorizationRequestPayloadSchema,
3436
CreateAuthorizationRequestSchema,
3537
CreateAuthorizationResponsePayloadSchema,
3638
CreateAuthorizationResponseSchema,
3739
QRCodeOptsPayloadSchema,
38-
QRCodeOptsSchema,
40+
QRCodeOptsSchema, RequestErrorPayloadSchema, RequestErrorSchema,
3941
VerifiedDataOptsSchema
4042
} from '../schemas'
4143

@@ -699,6 +701,11 @@ export type CreateAuthorizationRequestPayload = z.infer<typeof CreateAuthorizati
699701
export type CreateAuthorizationResponse = z.infer<typeof CreateAuthorizationResponseSchema>
700702
export type CreateAuthorizationResponsePayload = z.infer<typeof CreateAuthorizationResponsePayloadSchema>
701703
export type VerifiedDataOpts = z.infer<typeof VerifiedDataOptsSchema>
704+
export type RequestError = z.infer<typeof RequestErrorSchema>
705+
export type RequestErrorPayload = z.infer<typeof RequestErrorPayloadSchema>
706+
export type AuthStatusResponse = z.infer<typeof AuthStatusResponseSchema>
707+
export type AuthStatusResponsePayload = z.infer<typeof AuthStatusResponsePayloadSchema>
708+
702709

703710
export type VerifiedData = {
704711
authorization_response?: VerifiedDataAuthorizationResponse

0 commit comments

Comments
 (0)