2025-01-02 02:55:56 +01:00
|
|
|
import { z } from "@hono/zod-openapi";
|
2025-01-02 01:29:33 +01:00
|
|
|
import { PushSubscription } from "@versia/kit/db";
|
|
|
|
|
|
|
|
|
|
export const WebPushSubscriptionInput = z
|
|
|
|
|
.object({
|
|
|
|
|
subscription: z.object({
|
|
|
|
|
endpoint: z.string().url().openapi({
|
|
|
|
|
example: "https://yourdomain.example/listener",
|
|
|
|
|
description: "Where push alerts will be sent to.",
|
|
|
|
|
}),
|
|
|
|
|
keys: z
|
|
|
|
|
.object({
|
2025-01-02 04:02:29 +01:00
|
|
|
p256dh: z.string().base64url().openapi({
|
2025-01-02 01:29:33 +01:00
|
|
|
description:
|
2025-01-02 04:02:29 +01:00
|
|
|
"User agent public key. Base64url encoded string of a public key from a ECDH keypair using the prime256v1 curve.",
|
2025-01-02 01:29:33 +01:00
|
|
|
example:
|
|
|
|
|
"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoKCJeHCy69ywHcb3dAR/T8Sud5ljSFHJkuiR6it1ycqAjGTe5F1oZ0ef5QiMX/zdQ+d4jSKiO7RztIz+o/eGuQ==",
|
|
|
|
|
}),
|
2025-01-02 04:02:29 +01:00
|
|
|
auth: z.string().base64url().openapi({
|
2025-01-02 01:29:33 +01:00
|
|
|
description:
|
2025-01-02 04:02:29 +01:00
|
|
|
"Auth secret. Base64url encoded string of 16 bytes of random data.",
|
2025-01-02 01:29:33 +01:00
|
|
|
example: "u67u09PXZW4ncK9l9mAXkA==",
|
|
|
|
|
}),
|
|
|
|
|
})
|
|
|
|
|
.strict(),
|
|
|
|
|
}),
|
2025-01-02 04:13:12 +01:00
|
|
|
policy: z
|
|
|
|
|
.enum(["all", "followed", "follower", "none"])
|
|
|
|
|
.default("all")
|
|
|
|
|
.openapi({
|
|
|
|
|
description:
|
|
|
|
|
"Specify whether to receive push notifications from all, followed, follower, or none users.",
|
|
|
|
|
}),
|
2025-01-02 01:29:33 +01:00
|
|
|
data: z
|
|
|
|
|
.object({
|
|
|
|
|
alerts: PushSubscription.schema.shape.alerts,
|
|
|
|
|
})
|
|
|
|
|
.strict()
|
|
|
|
|
.default({
|
|
|
|
|
alerts: {
|
|
|
|
|
mention: false,
|
|
|
|
|
favourite: false,
|
|
|
|
|
reblog: false,
|
|
|
|
|
follow: false,
|
|
|
|
|
poll: false,
|
|
|
|
|
follow_request: false,
|
|
|
|
|
status: false,
|
|
|
|
|
update: false,
|
|
|
|
|
"admin.sign_up": false,
|
|
|
|
|
"admin.report": false,
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
})
|
|
|
|
|
.strict();
|