import { URL } from "node:url"; import define from "../../../define.js"; import { addRelay } from "../../../../../services/relay.js"; import { ApiError } from "../../../error.js"; export const meta = { tags: [ "admin" ], requireCredential: true, requireModerator: true, errors: { invalidUrl: { message: "Invalid URL", code: "INVALID_URL", id: "fb8c92d3-d4e5-44e7-b3d4-800d5cef8b2c" } }, res: { type: "object", optional: false, nullable: false, properties: { id: { type: "string", optional: false, nullable: false, format: "id" }, inbox: { description: "URL of the inbox, must be a https scheme URL", type: "string", optional: false, nullable: false, format: "url" }, status: { type: "string", optional: false, nullable: false, default: "requesting", enum: [ "requesting", "accepted", "rejected" ] } } } }; export const paramDef = { type: "object", properties: { inbox: { type: "string" } }, required: [ "inbox" ] }; export default define(meta, paramDef, async (ps, user)=>{ try { if (new URL(ps.inbox).protocol !== "https:") throw new Error("https only"); } catch { throw new ApiError(meta.errors.invalidUrl); } return await addRelay(ps.inbox); });