var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { Feishu: () => types_exports, FeishuBot: () => LarkBot, Lark: () => types_exports, LarkBot: () => LarkBot, default: () => src_default }); module.exports = __toCommonJS(src_exports); // src/bot.ts var import_core5 = require("@satorijs/core"); // src/http.ts var import_node_stream = require("node:stream"); var import_core2 = require("@satorijs/core"); // src/utils.ts var import_crypto = __toESM(require("crypto"), 1); var import_core = require("@satorijs/core"); function adaptSender(sender, session) { let userId; if ("sender_id" in sender) { userId = sender.sender_id.open_id; } else { userId = sender.id; } session.userId = userId; return session; } __name(adaptSender, "adaptSender"); async function adaptMessage(bot, data, session, details = true) { const json = JSON.parse(data.message.content); const assetEndpoint = (0, import_core.trimSlash)(bot.config.selfUrl ?? bot.ctx.server.config.selfUrl) + bot.config.path + "/assets"; const content = []; switch (data.message.message_type) { case "text": { const text = json.text; if (!data.message.mentions?.length) { content.push(text); break; } text.split(" ").forEach((word) => { if (word.startsWith("@")) { const mention = data.message.mentions.find((mention2) => mention2.key === word); content.push(import_core.h.at(mention.id.open_id, { name: mention.name })); } else { content.push(word); } }); break; } case "image": content.push(import_core.h.image(`${assetEndpoint}/image/${data.message.message_id}/${json.image_key}?self_id=${bot.selfId}`)); break; case "audio": content.push(import_core.h.audio(`${assetEndpoint}/file/${data.message.message_id}/${json.file_key}?self_id=${bot.selfId}`)); break; case "media": content.push(import_core.h.video(`${assetEndpoint}/file/${data.message.message_id}/${json.file_key}?self_id=${bot.selfId}`, json.image_key)); break; case "file": content.push(import_core.h.file(`${assetEndpoint}/file/${data.message.message_id}/${json.file_key}?self_id=${bot.selfId}`)); break; } session.timestamp = +data.message.create_time; session.messageId = data.message.message_id; session.channelId = data.message.chat_id; session.guildId = data.message.chat_id; session.content = content.map((c) => c.toString()).join(" "); if (data.message.parent_id && details) { session.quote = await bot.getMessage(session.channelId, data.message.parent_id, false); } return session; } __name(adaptMessage, "adaptMessage"); async function adaptSession(bot, body) { const session = bot.session(); session.setInternal("lark", body); switch (body.type) { case "im.message.receive_v1": session.type = "message"; session.subtype = body.event.message.chat_type; if (session.subtype === "p2p") session.subtype = "private"; session.isDirect = session.subtype === "private"; adaptSender(body.event.sender, session); await adaptMessage(bot, body.event, session); break; case "application.bot.menu_v6": if (body.event.event_key.startsWith("command:")) { session.type = "interaction/command"; session.content = body.event.event_key.slice(8); session.channelId = body.event.operator.operator_id.open_id; session.userId = body.event.operator.operator_id.open_id; session.isDirect = true; } break; case "card.action.trigger": if (body.event.action.value?._satori_type === "command") { session.type = "interaction/command"; let content = body.event.action.value.content; const args = [], options = /* @__PURE__ */ Object.create(null); for (const [key, value] of Object.entries(body.event.action.form_value ?? {})) { if (+key * 0 === 0) { args[+key] = value; } else { options[key] = value; } } for (let i = 0; i < args.length; ++i) { if (i in args) { content += ` ${args[i]}`; } else { content += ` ''`; } } for (const [key, value] of Object.entries(options)) { content += ` --${key} ${value}`; } if (body.event.action.input_value) { content += ` ${body.event.action.input_value}`; } session.content = content; session.messageId = body.event.context.open_message_id; session.channelId = body.event.context.open_chat_id; session.guildId = body.event.context.open_chat_id; session.userId = body.event.operator.open_id; const chat = await bot.internal.getImChat(session.channelId); session.isDirect = chat.chat_mode === "p2p"; } break; } return session; } __name(adaptSession, "adaptSession"); async function decodeMessage(bot, body, details = true) { const json = JSON.parse(body.body.content); const assetEndpoint = (0, import_core.trimSlash)(bot.config.selfUrl ?? bot.ctx.server.config.selfUrl) + bot.config.path + "/assets"; const content = []; switch (body.msg_type) { case "text": { const text = json.text; if (!body.mentions?.length) { content.push(import_core.h.text(text)); break; } text.split(" ").forEach((word) => { if (word.startsWith("@")) { const mention = body.mentions.find((mention2) => mention2.key === word); content.push(import_core.h.at(mention.id, { name: mention.name })); } else { content.push(import_core.h.text(word)); } }); break; } case "image": content.push(import_core.h.image(`${assetEndpoint}/image/${body.message_id}/${json.image_key}?self_id=${bot.selfId}`)); break; case "audio": content.push(import_core.h.audio(`${assetEndpoint}/file/${body.message_id}/${json.file_key}?self_id=${bot.selfId}`)); break; case "media": content.push(import_core.h.video(`${assetEndpoint}/file/${body.message_id}/${json.file_key}?self_id=${bot.selfId}`, json.image_key)); break; case "file": content.push(import_core.h.file(`${assetEndpoint}/file/${body.message_id}/${json.file_key}?self_id=${bot.selfId}`)); break; } return { timestamp: +body.update_time, createdAt: +body.create_time, updatedAt: +body.update_time, id: body.message_id, messageId: body.message_id, user: { id: body.sender.id }, channel: { id: body.chat_id, type: import_core.Universal.Channel.Type.TEXT }, content: content.map((c) => c.toString()).join(" "), elements: content, quote: body.upper_message_id && details ? await bot.getMessage(body.chat_id, body.upper_message_id, false) : void 0 }; } __name(decodeMessage, "decodeMessage"); function extractIdType(id) { if (id.startsWith("ou")) return "open_id"; if (id.startsWith("on")) return "union_id"; if (id.startsWith("oc")) return "chat_id"; if (id.includes("@")) return "email"; return "user_id"; } __name(extractIdType, "extractIdType"); function decodeChannel(channelId, guild) { return { id: channelId, type: import_core.Universal.Channel.Type.TEXT, name: guild.name, parentId: channelId }; } __name(decodeChannel, "decodeChannel"); function decodeGuild(guild) { return { id: guild.chat_id, name: guild.name, avatar: guild.avatar }; } __name(decodeGuild, "decodeGuild"); function decodeUser(user) { return { id: user.open_id, avatar: user.avatar?.avatar_origin, isBot: false, name: user.name }; } __name(decodeUser, "decodeUser"); var Cipher = class { static { __name(this, "Cipher"); } encryptKey; key; constructor(key) { this.encryptKey = key; const hash = import_crypto.default.createHash("sha256"); hash.update(key); this.key = hash.digest(); } decrypt(encrypt) { const encryptBuffer = Buffer.from(encrypt, "base64"); const decipher = import_crypto.default.createDecipheriv("aes-256-cbc", this.key, encryptBuffer.slice(0, 16)); let decrypted = decipher.update(encryptBuffer.slice(16).toString("hex"), "hex", "utf8"); decrypted += decipher.final("utf8"); return decrypted; } calculateSignature(timestamp, nonce, body) { const content = timestamp + nonce + this.encryptKey + body; const sign = import_crypto.default.createHash("sha256").update(content).digest("hex"); return sign; } }; // src/http.ts var HttpServer = class extends import_core2.Adapter { static { __name(this, "HttpServer"); } static inject = ["server"]; logger; ciphers = {}; constructor(ctx, bot) { super(ctx); this.logger = ctx.logger("lark"); } fork(ctx, bot) { super.fork(ctx, bot); this._refreshCipher(); return bot.initialize(); } async connect(bot) { const { path } = bot.config; bot.ctx.server.post(path, (ctx) => { this._refreshCipher(); const signature = ctx.get("X-Lark-Signature"); const enabledSignatureVerify = this.bots.filter((bot2) => bot2.config.verifySignature); if (signature && enabledSignatureVerify.length) { const result = enabledSignatureVerify.some((bot2) => { const timestamp = ctx.get("X-Lark-Request-Timestamp"); const nonce = ctx.get("X-Lark-Request-Nonce"); const body2 = ctx.request.body[Symbol.for("unparsedBody")]; const actualSignature = this.ciphers[bot2.config.appId]?.calculateSignature(timestamp, nonce, body2); if (actualSignature === signature) return true; else return false; }); if (!result) return ctx.status = 403; } const body = this._tryDecryptBody(ctx.request.body); if (body?.type === "url_verification" && body?.challenge && typeof body.challenge === "string") { ctx.response.body = { challenge: body.challenge }; return; } const enabledVerifyTokenVerify = this.bots.filter((bot2) => bot2.config.verifyToken && bot2.config.verificationToken); if (enabledVerifyTokenVerify.length) { const token = ctx.request.body?.token; if (token) { const result = enabledVerifyTokenVerify.some((bot2) => { if (token === bot2.config.verificationToken) return true; else return false; }); if (!result) return ctx.status = 403; } } bot.logger.debug("received decryped event: %o", body); this.dispatchSession(body); ctx.body = {}; return ctx.status = 200; }); bot.ctx.server.get(path + "/assets/:type/:message_id/:key", async (ctx) => { const type = ctx.params.type === "image" ? "image" : "file"; const key = ctx.params.key; const messageId = ctx.params.message_id; const selfId = ctx.request.query.self_id; const bot2 = this.bots.find((bot3) => bot3.selfId === selfId); if (!bot2) return ctx.status = 404; const resp = await bot2.http(`/im/v1/messages/${messageId}/resources/${key}`, { method: "GET", params: { type }, responseType: "stream" }); ctx.set("content-type", resp.headers.get("content-type")); ctx.status = 200; ctx.response.body = import_node_stream.Readable.fromWeb(resp.data); }); } async dispatchSession(body) { const { header } = body; if (!header) return; const { app_id, event_type } = header; body.type = event_type; const bot = this.bots.find((bot2) => bot2.appId === app_id); const session = await adaptSession(bot, body); bot.dispatch(session); } _tryDecryptBody(body) { this._refreshCipher(); const ciphers = Object.values(this.ciphers); if (ciphers.length && typeof body.encrypt === "string") { for (const cipher of ciphers) { try { return JSON.parse(cipher.decrypt(body.encrypt)); } catch { } } this.logger.warn("failed to decrypt message: %o", body); } if (typeof body.encrypt === "string" && !ciphers.length) { this.logger.warn("encryptKey is not set, but received encrypted message: %o", body); } return body; } _refreshCipher() { const ciphers = Object.keys(this.ciphers); const bots = this.bots.map((bot) => bot.config.appId); if (bots.length === ciphers.length && bots.every((bot) => ciphers.includes(bot))) return; this.ciphers = {}; for (const bot of this.bots) { this.ciphers[bot.config.appId] = new Cipher(bot.config.encryptKey); } } }; ((HttpServer2) => { HttpServer2.createConfig = /* @__PURE__ */ __name((path) => import_core2.Schema.object({ path: import_core2.Schema.string().role("url").description("要连接的服务器地址。").default(path), selfUrl: import_core2.Schema.string().role("link").description("服务器暴露在公网的地址。缺省时将使用全局配置。"), verifyToken: import_core2.Schema.boolean().description("是否验证令牌。"), verifySignature: import_core2.Schema.boolean().description("是否验证签名。") }).description("服务端设置"), "createConfig"); })(HttpServer || (HttpServer = {})); // src/message.ts var import_core3 = require("@satorijs/core"); var LarkMessageEncoder = class extends import_core3.MessageEncoder { static { __name(this, "LarkMessageEncoder"); } quote; textContent = ""; richContent = []; card; noteElements; actionElements = []; async post(data) { try { let resp; if (this.quote?.id) { resp = await this.bot.internal.replyImMessage(this.quote.id, { ...data, reply_in_thread: this.quote.replyInThread }); } else { data.receive_id = this.channelId; resp = await this.bot.internal.createImMessage(data, { receive_id_type: extractIdType(this.channelId) }); } const session = this.bot.session(); session.messageId = resp.message_id; session.timestamp = Number(resp.create_time) * 1e3; session.userId = resp.sender.id; session.channelId = this.channelId; session.guildId = this.guildId; session.app.emit(session, "send", session); this.results.push(session.event.message); } catch (e) { if (this.bot.http.isError(e)) { if (e.response?.data?.code) { const generalErrorMsg = `Check error code at https://open.larksuite.com/document/server-docs/getting-started/server-error-codes`; e.message += ` (Lark error code ${e.response.data.code}: ${e.response.data.msg ?? generalErrorMsg})`; } } this.errors.push(e); } } flushText(button = false) { if ((this.textContent || !button) && this.actionElements.length) { this.card.elements.push({ tag: "action", actions: this.actionElements, layout: "flow" }); this.actionElements = []; } if (this.textContent) { this.richContent.push([{ tag: "md", text: this.textContent }]); if (this.noteElements) { this.noteElements.push({ tag: "plain_text", content: this.textContent }); } else if (this.card) { this.card.elements.push({ tag: "markdown", content: this.textContent }); } this.textContent = ""; } } async flush() { this.flushText(); if (!this.card && !this.richContent.length) return; if (this.card) { this.bot.logger.debug("card", JSON.stringify(this.card.elements)); await this.post({ msg_type: "interactive", content: JSON.stringify({ elements: this.card.elements }) }); } else { await this.post({ msg_type: "post", content: JSON.stringify({ zh_cn: { content: this.richContent } }) }); } this.quote = void 0; this.textContent = ""; this.richContent = []; this.card = void 0; } async createImage(url) { const { filename, type, data } = await this.bot.assetsQuester.file(url); const { image_key } = await this.bot.internal.createImImage({ image_type: "message", image: new File([data], filename, { type }) }); return image_key; } async sendFile(_type, attrs) { const url = attrs.src || attrs.url; const { filename, type, data } = await this.bot.assetsQuester.file(url); let file_type; if (_type === "audio") { file_type = "opus"; } else if (_type === "video") { file_type = "mp4"; } else { const ext = filename.split(".").pop(); if (["doc", "xls", "ppt", "pdf"].includes(ext)) { file_type = ext; } else { file_type = "stream"; } } const form = { file_type, file: new File([data], filename, { type }), file_name: filename }; if (attrs.duration) { form.duration = attrs.duration; } const { file_key } = await this.bot.internal.createImFile(form); await this.post({ msg_type: _type === "video" ? "media" : _type, content: JSON.stringify({ file_key }) }); } createBehavior(attrs) { const behaviors = []; if (attrs.type === "link") { behaviors.push({ type: "open_url", default_url: attrs.href }); } else if (attrs.type === "input") { behaviors.push({ type: "callback", value: { _satori_type: "command", content: attrs.text } }); } else if (attrs.type === "action") { } return behaviors.length ? behaviors : void 0; } async visit(element) { const { type, attrs, children } = element; if (type === "text") { this.textContent += attrs.content; } else if (type === "at") { if (attrs.type === "all") { this.textContent += `${attrs.name ?? "所有人"}`; } else { this.textContent += `${attrs.name}`; } } else if (type === "a") { await this.render(children); if (attrs.href) this.textContent += ` (${attrs.href})`; } else if (type === "p") { if (!this.textContent.endsWith("\n")) this.textContent += "\n"; await this.render(children); if (!this.textContent.endsWith("\n")) this.textContent += "\n"; } else if (type === "br") { this.textContent += "\n"; } else if (type === "sharp") { } else if (type === "quote") { await this.flush(); this.quote = attrs; } else if (type === "img" || type === "image") { const image_key = await this.createImage(attrs.src || attrs.url); this.textContent += `![${attrs.alt ?? "图片"}](${image_key})`; this.flushText(); this.richContent.push([{ tag: "img", image_key }]); } else if (["video", "audio", "file"].includes(type)) { await this.flush(); await this.sendFile(type, attrs); } else if (type === "figure" || type === "message") { await this.flush(); await this.render(children, true); } else if (type === "hr") { this.flushText(); this.richContent.push([{ tag: "hr" }]); this.card?.elements.push({ tag: "hr" }); } else if (type === "form") { this.flushText(); const length = this.card?.elements.length; await this.render(children); if (this.card?.elements.length > length) { const elements = this.card?.elements.slice(length); this.card.elements.push({ tag: "form", name: attrs.name || "Form", elements }); } } else if (type === "input") { this.flushText(); this.card?.elements.push({ tag: "action", actions: [{ tag: "input", name: attrs.name, width: attrs.width, label: attrs.label && { tag: "plain_text", content: attrs.label }, placeholder: attrs.placeholder && { tag: "plain_text", content: attrs.placeholder }, behaviors: this.createBehavior(attrs) }] }); } else if (type === "button") { this.card ??= { elements: [] }; this.flushText(true); await this.render(children); this.actionElements.push({ tag: "button", text: { tag: "plain_text", content: this.textContent }, disabled: attrs.disabled, behaviors: this.createBehavior(attrs), type: attrs["lark:type"], size: attrs["lark:size"], width: attrs["lark:width"], icon: attrs["lark:icon"] && { tag: "standard_icon", token: attrs["lark:icon"] }, hover_tips: attrs["lark:hover-tips"] && { tag: "plain_text", content: attrs["lark:hover-tips"] }, disabled_tips: attrs["lark:disabled-tips"] && { tag: "plain_text", content: attrs["lark:disabled-tips"] } }); this.textContent = ""; } else if (type === "button-group") { this.flushText(); await this.render(children); this.flushText(); } else if (type.startsWith("lark:") || type.startsWith("feishu:")) { const tag = type.slice(type.split(":", 1)[0].length + 1); if (tag === "share-chat") { await this.flush(); await this.post({ msg_type: "share_chat", content: JSON.stringify({ chat_id: attrs.chatId }) }); } else if (tag === "share-user") { await this.flush(); await this.post({ msg_type: "share_user", content: JSON.stringify({ user_id: attrs.userId }) }); } else if (tag === "system") { await this.flush(); await this.render(children); await this.post({ msg_type: "system", content: JSON.stringify({ type: "divider", params: { divider_text: { text: this.textContent } }, options: { need_rollup: attrs.needRollup } }) }); this.textContent = ""; } else if (tag === "card") { await this.flush(); this.card = { elements: [], header: attrs.title && { template: attrs.color, ud_icon: attrs.icon && { tag: "standard_icon", token: attrs.icon }, title: { tag: "plain_text", content: attrs.title }, subtitle: attrs.subtitle && { tag: "plain_text", content: attrs.subtitle } } }; await this.render(children, true); } else if (tag === "div") { this.flushText(); await this.render(children); this.card?.elements.push({ tag: "markdown", text_align: attrs.align, text_size: attrs.size, content: this.textContent }); this.textContent = ""; } else if (tag === "note") { this.flushText(); this.noteElements = []; await this.render(children); this.flushText(); this.card?.elements.push({ tag: "note", elements: this.noteElements }); this.noteElements = void 0; } else if (tag === "icon") { this.flushText(); this.noteElements?.push({ tag: "standard_icon", token: attrs.token }); } } else { await this.render(children); } } }; // src/types/index.ts var types_exports = {}; __export(types_exports, { Internal: () => Internal }); // src/types/internal.ts var import_core4 = require("@satorijs/core"); var Internal = class _Internal { constructor(bot) { this.bot = bot; } static { __name(this, "Internal"); } _assertResponse(response) { if (!response.data.code) return; this.bot.logger.debug("response: %o", response.data); const error = new import_core4.HTTP.Error(`request failed`); error.response = response; throw error; } _buildData(arg, options) { if (options.multipart) { const form = new FormData(); for (const [key, value] of Object.entries(arg)) { if (value instanceof File) { form.append(key, value, value.name); } else { form.append(key, value); } } return form; } else { return arg; } } static define(routes, options = {}) { for (const path in routes) { for (const key in routes[path]) { const method = key; for (const name of (0, import_core4.makeArray)(routes[path][method])) { _Internal.prototype[name] = async function(...args) { const raw = args.join(", "); const url = path.replace(/\{([^}]+)\}/g, () => { if (!args.length) throw new Error(`too few arguments for ${path}, received ${raw}`); return args.shift(); }); const config = {}; if (args.length === 1) { if (method === "GET" || method === "DELETE") { config.params = args[0]; } else { config.data = this._buildData(args[0], options); } } else if (args.length === 2 && method !== "GET" && method !== "DELETE") { config.data = this._buildData(args[0], options); config.params = args[1]; } else if (args.length > 1) { throw new Error(`too many arguments for ${path}, received ${raw}`); } const response = await this.bot.http(method, url, config); this._assertResponse(response); return options.noExtractData ? response.data : response.data.data; }; } } } } }; // src/types/api.ts Internal.define({ "/auth/v3/tenant_access_token/internal": { POST: "tenantAccessTokenInternalAuth" }, "/auth/v3/app_access_token/internal": { POST: "appAccessTokenInternalAuth" }, "/auth/v3/app_access_token": { POST: "appAccessTokenAuth" }, "/auth/v3/tenant_access_token": { POST: "tenantAccessTokenAuth" }, "/auth/v3/app_ticket/resend": { POST: "appTicketResendAuth" } }, { noExtractData: true }); Internal.define({ "/event/v1/outbound_ip": { GET: "listEventOutboundIp" }, "/authen/v1/oidc/access_token": { POST: "createAuthenOidcAccessToken" }, "/authen/v1/oidc/refresh_access_token": { POST: "createAuthenOidcRefreshAccessToken" }, "/authen/v1/user_info": { GET: "getAuthenUserInfo" }, "/passport/v1/sessions/query": { POST: "queryPassportSession" }, "/contact/v3/scopes": { GET: "listContactScope" }, "/contact/v3/users": { POST: "createContactUser", GET: "listContactUser" }, "/contact/v3/users/{user_id}": { DELETE: "deleteContactUser", PATCH: "patchContactUser", GET: "getContactUser", PUT: "updateContactUser" }, "/contact/v3/users/{user_id}/resurrect": { POST: "resurrectContactUser" }, "/contact/v3/users/batch": { GET: "batchContactUser" }, "/contact/v3/users/find_by_department": { GET: "findByDepartmentContactUser" }, "/contact/v3/users/batch_get_id": { POST: "batchGetIdContactUser" }, "/contact/v3/users/{user_id}/update_user_id": { PATCH: "updateUserIdContactUser" }, "/contact/v3/group": { POST: "createContactGroup" }, "/contact/v3/group/{group_id}": { DELETE: "deleteContactGroup", PATCH: "patchContactGroup", GET: "getContactGroup" }, "/contact/v3/group/simplelist": { GET: "simplelistContactGroup" }, "/contact/v3/group/member_belong": { GET: "memberBelongContactGroup" }, "/contact/v3/custom_attrs": { GET: "listContactCustomAttr" }, "/contact/v3/employee_type_enums": { POST: "createContactEmployeeTypeEnum", GET: "listContactEmployeeTypeEnum" }, "/contact/v3/employee_type_enums/{enum_id}": { DELETE: "deleteContactEmployeeTypeEnum", PUT: "updateContactEmployeeTypeEnum" }, "/contact/v3/departments": { POST: "createContactDepartment", GET: "listContactDepartment" }, "/contact/v3/departments/{department_id}": { DELETE: "deleteContactDepartment", PATCH: "patchContactDepartment", PUT: "updateContactDepartment", GET: "getContactDepartment" }, "/contact/v3/departments/unbind_department_chat": { POST: "unbindDepartmentChatContactDepartment" }, "/contact/v3/departments/batch": { GET: "batchContactDepartment" }, "/contact/v3/departments/{department_id}/children": { GET: "childrenContactDepartment" }, "/contact/v3/departments/parent": { GET: "parentContactDepartment" }, "/contact/v3/departments/search": { POST: "searchContactDepartment" }, "/contact/v3/departments/{department_id}/update_department_id": { PATCH: "updateDepartmentIdContactDepartment" }, "/contact/v3/unit": { POST: "createContactUnit", GET: "listContactUnit" }, "/contact/v3/unit/{unit_id}": { DELETE: "deleteContactUnit", PATCH: "patchContactUnit", GET: "getContactUnit" }, "/contact/v3/unit/bind_department": { POST: "bindDepartmentContactUnit" }, "/contact/v3/unit/unbind_department": { POST: "unbindDepartmentContactUnit" }, "/contact/v3/unit/list_department": { GET: "listDepartmentContactUnit" }, "/contact/v3/group/{group_id}/member/add": { POST: "addContactGroupMember" }, "/contact/v3/group/{group_id}/member/batch_add": { POST: "batchAddContactGroupMember" }, "/contact/v3/group/{group_id}/member/remove": { POST: "removeContactGroupMember" }, "/contact/v3/group/{group_id}/member/batch_remove": { POST: "batchRemoveContactGroupMember" }, "/contact/v3/group/{group_id}/member/simplelist": { GET: "simplelistContactGroupMember" }, "/contact/v3/functional_roles": { POST: "createContactFunctionalRole" }, "/contact/v3/functional_roles/{role_id}": { DELETE: "deleteContactFunctionalRole", PUT: "updateContactFunctionalRole" }, "/contact/v3/functional_roles/{role_id}/members/batch_create": { POST: "batchCreateContactFunctionalRoleMember" }, "/contact/v3/functional_roles/{role_id}/members/batch_delete": { PATCH: "batchDeleteContactFunctionalRoleMember" }, "/contact/v3/functional_roles/{role_id}/members/scopes": { PATCH: "scopesContactFunctionalRoleMember" }, "/contact/v3/functional_roles/{role_id}/members/{member_id}": { GET: "getContactFunctionalRoleMember" }, "/contact/v3/functional_roles/{role_id}/members": { GET: "listContactFunctionalRoleMember" }, "/contact/v3/job_levels": { POST: "createContactJobLevel", GET: "listContactJobLevel" }, "/contact/v3/job_levels/{job_level_id}": { DELETE: "deleteContactJobLevel", PUT: "updateContactJobLevel", GET: "getContactJobLevel" }, "/contact/v3/job_families": { POST: "createContactJobFamily", GET: "listContactJobFamily" }, "/contact/v3/job_families/{job_family_id}": { DELETE: "deleteContactJobFamily", PUT: "updateContactJobFamily", GET: "getContactJobFamily" }, "/contact/v3/job_titles/{job_title_id}": { GET: "getContactJobTitle" }, "/contact/v3/job_titles": { GET: "listContactJobTitle" }, "/contact/v3/work_cities/{work_city_id}": { GET: "getContactWorkCity" }, "/contact/v3/work_cities": { GET: "listContactWorkCity" }, "/im/v1/messages": { POST: "createImMessage", GET: "listImMessage" }, "/im/v1/messages/{message_id}/reply": { POST: "replyImMessage" }, "/im/v1/messages/{message_id}": { PUT: "updateImMessage", DELETE: "deleteImMessage", GET: "getImMessage", PATCH: "patchImMessage" }, "/im/v1/messages/{message_id}/forward": { POST: "forwardImMessage" }, "/im/v1/messages/merge_forward": { POST: "mergeForwardImMessage" }, "/im/v1/threads/{thread_id}/forward": { POST: "forwardImThread" }, "/im/v1/messages/{message_id}/read_users": { GET: "readUsersImMessage" }, "/im/v1/messages/{message_id}/resources/{file_key}": { GET: "getImMessageResource" }, "/im/v1/messages/{message_id}/urgent_app": { PATCH: "urgentAppImMessage" }, "/im/v1/messages/{message_id}/urgent_sms": { PATCH: "urgentSmsImMessage" }, "/im/v1/messages/{message_id}/urgent_phone": { PATCH: "urgentPhoneImMessage" }, "/im/v1/batch_messages/{batch_message_id}": { DELETE: "deleteImBatchMessage" }, "/im/v1/batch_messages/{batch_message_id}/read_user": { GET: "readUserImBatchMessage" }, "/im/v1/batch_messages/{batch_message_id}/get_progress": { GET: "getProgressImBatchMessage" }, "/im/v1/images/{image_key}": { GET: "getImImage" }, "/im/v1/files/{file_key}": { GET: "getImFile" }, "/im/v1/messages/{message_id}/reactions": { POST: "createImMessageReaction", GET: "listImMessageReaction" }, "/im/v1/messages/{message_id}/reactions/{reaction_id}": { DELETE: "deleteImMessageReaction" }, "/im/v1/pins": { POST: "createImPin", GET: "listImPin" }, "/im/v1/pins/{message_id}": { DELETE: "deleteImPin" }, "/im/v1/chats": { POST: "createImChat", GET: "listImChat" }, "/im/v1/chats/{chat_id}": { DELETE: "deleteImChat", PUT: "updateImChat", GET: "getImChat" }, "/im/v1/chats/{chat_id}/moderation": { PUT: "updateImChatModeration", GET: "getImChatModeration" }, "/im/v1/chats/{chat_id}/top_notice/put_top_notice": { POST: "putTopNoticeImChatTopNotice" }, "/im/v1/chats/{chat_id}/top_notice/delete_top_notice": { POST: "deleteTopNoticeImChatTopNotice" }, "/im/v1/chats/search": { GET: "searchImChat" }, "/im/v1/chats/{chat_id}/link": { POST: "linkImChat" }, "/im/v1/chats/{chat_id}/managers/add_managers": { POST: "addManagersImChatManagers" }, "/im/v1/chats/{chat_id}/managers/delete_managers": { POST: "deleteManagersImChatManagers" }, "/im/v1/chats/{chat_id}/members": { POST: "createImChatMembers", DELETE: "deleteImChatMembers", GET: "getImChatMembers" }, "/im/v1/chats/{chat_id}/members/me_join": { PATCH: "meJoinImChatMembers" }, "/im/v1/chats/{chat_id}/members/is_in_chat": { GET: "isInChatImChatMembers" }, "/im/v1/chats/{chat_id}/announcement": { PATCH: "patchImChatAnnouncement", GET: "getImChatAnnouncement" }, "/im/v1/chats/{chat_id}/chat_tabs": { POST: "createImChatTab" }, "/im/v1/chats/{chat_id}/chat_tabs/delete_tabs": { DELETE: "deleteTabsImChatTab" }, "/im/v1/chats/{chat_id}/chat_tabs/update_tabs": { POST: "updateTabsImChatTab" }, "/im/v1/chats/{chat_id}/chat_tabs/sort_tabs": { POST: "sortTabsImChatTab" }, "/im/v1/chats/{chat_id}/chat_tabs/list_tabs": { GET: "listTabsImChatTab" }, "/im/v1/chats/{chat_id}/menu_tree": { POST: "createImChatMenuTree", DELETE: "deleteImChatMenuTree", GET: "getImChatMenuTree" }, "/im/v1/chats/{chat_id}/menu_items/{menu_item_id}": { PATCH: "patchImChatMenuItem" }, "/im/v1/chats/{chat_id}/menu_tree/sort": { POST: "sortImChatMenuTree" }, "/drive/v1/files": { GET: "listDrivev1File" }, "/drive/v1/files/create_folder": { POST: "createFolderDrivev1File" }, "/drive/v1/metas/batch_query": { POST: "batchQueryDrivev1Meta" }, "/drive/v1/files/{file_token}/statistics": { GET: "getDrivev1FileStatistics" }, "/drive/v1/files/{file_token}/copy": { POST: "copyDrivev1File" }, "/drive/v1/files/{file_token}/move": { POST: "moveDrivev1File" }, "/drive/v1/files/{file_token}": { DELETE: "deleteDrivev1File" }, "/drive/v1/files/create_shortcut": { POST: "createShortcutDrivev1File" }, "/drive/v1/files/task_check": { GET: "taskCheckDrivev1File" }, "/drive/v1/medias/{file_token}/download": { GET: "downloadDrivev1Media" }, "/drive/v1/medias/batch_get_tmp_download_url": { GET: "batchGetTmpDownloadUrlDrivev1Media" }, "/drive/v1/medias/upload_prepare": { POST: "uploadPrepareDrivev1Media" }, "/drive/v1/medias/upload_finish": { POST: "uploadFinishDrivev1Media" }, "/drive/v1/files/{file_token}/subscribe": { POST: "subscribeDrivev1File" }, "/drive/v1/files/{file_token}/delete_subscribe": { DELETE: "deleteSubscribeDrivev1File" }, "/drive/v1/files/{file_token}/get_subscribe": { GET: "getSubscribeDrivev1File" }, "/drive/v1/files/upload_prepare": { POST: "uploadPrepareDrivev1File" }, "/drive/v1/files/upload_finish": { POST: "uploadFinishDrivev1File" }, "/drive/v1/files/{file_token}/download": { GET: "downloadDrivev1File" }, "/drive/v1/import_tasks": { POST: "createDrivev1ImportTask" }, "/drive/v1/import_tasks/{ticket}": { GET: "getDrivev1ImportTask" }, "/drive/v1/export_tasks": { POST: "createDrivev1ExportTask" }, "/drive/v1/export_tasks/{ticket}": { GET: "getDrivev1ExportTask" }, "/drive/v1/export_tasks/file/{file_token}/download": { GET: "downloadDrivev1ExportTask" }, "/drive/v1/files/{file_token}/view_records": { GET: "listDrivev1FileViewRecord" }, "/drive/v1/files/{file_token}/versions": { POST: "createDrivev1FileVersion", GET: "listDrivev1FileVersion" }, "/drive/v1/files/{file_token}/versions/{version_id}": { DELETE: "deleteDrivev1FileVersion", GET: "getDrivev1FileVersion" }, "/drive/v1/permissions/{token}/members/transfer_owner": { POST: "transferOwnerDrivev1PermissionMember" }, "/drive/v1/permissions/{token}/members/auth": { GET: "authDrivev1PermissionMember" }, "/drive/v1/permissions/{token}/members": { GET: "listDrivev1PermissionMember", POST: "createDrivev1PermissionMember" }, "/drive/v1/permissions/{token}/members/{member_id}": { PUT: "updateDrivev1PermissionMember", DELETE: "deleteDrivev1PermissionMember" }, "/drive/v1/permissions/{token}/public/password": { POST: "createDrivev1PermissionPublicPassword", PUT: "updateDrivev1PermissionPublicPassword", DELETE: "deleteDrivev1PermissionPublicPassword" }, "/drive/v1/permissions/{token}/public": { GET: "getDrivev1PermissionPublic", PATCH: "patchDrivev1PermissionPublic" }, "/drive/v2/permissions/{token}/public": { GET: "getDrivev2PermissionPublic", PATCH: "patchDrivev2PermissionPublic" }, "/drive/v1/files/{file_token}/comments": { GET: "listDrivev1FileComment", POST: "createDrivev1FileComment" }, "/drive/v1/files/{file_token}/comments/batch_query": { POST: "batchQueryDrivev1FileComment" }, "/drive/v1/files/{file_token}/comments/{comment_id}": { PATCH: "patchDrivev1FileComment", GET: "getDrivev1FileComment" }, "/drive/v1/files/{file_token}/comments/{comment_id}/replies": { GET: "listDrivev1FileCommentReply" }, "/drive/v1/files/{file_token}/comments/{comment_id}/replies/{reply_id}": { PUT: "updateDrivev1FileCommentReply", DELETE: "deleteDrivev1FileCommentReply" }, "/docx/v1/documents/{document_id}": { GET: "getDocxDocument" }, "/docx/v1/documents/{document_id}/raw_content": { GET: "rawContentDocxDocument" }, "/docx/v1/documents/{document_id}/blocks": { GET: "listDocxDocumentBlock" }, "/docx/v1/documents": { POST: "createDocxDocument" }, "/docx/v1/documents/{document_id}/blocks/{block_id}": { GET: "getDocxDocumentBlock", PATCH: "patchDocxDocumentBlock" }, "/docx/v1/documents/{document_id}/blocks/{block_id}/children": { GET: "getDocxDocumentBlockChildren", POST: "createDocxDocumentBlockChildren" }, "/docx/v1/documents/{document_id}/blocks/batch_update": { PATCH: "batchUpdateDocxDocumentBlock" }, "/docx/v1/documents/{document_id}/blocks/{block_id}/children/batch_delete": { DELETE: "batchDeleteDocxDocumentBlockChildren" }, "/board/v1/whiteboards/{whiteboard_id}/nodes": { GET: "listBoardWhiteboardNode" }, "/sheets/v3/spreadsheets/{spreadsheet_token}": { PATCH: "patchSheetsSpreadsheet", GET: "getSheetsSpreadsheet" }, "/sheets/v3/spreadsheets": { POST: "createSheetsSpreadsheet" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}": { GET: "getSheetsSpreadsheetSheet" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/query": { GET: "querySheetsSpreadsheetSheet" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}/move_dimension": { POST: "moveDimensionSheetsSpreadsheetSheet" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}/find": { POST: "findSheetsSpreadsheetSheet" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}/replace": { POST: "replaceSheetsSpreadsheetSheet" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}/filter": { GET: "getSheetsSpreadsheetSheetFilter", POST: "createSheetsSpreadsheetSheetFilter", PUT: "updateSheetsSpreadsheetSheetFilter", DELETE: "deleteSheetsSpreadsheetSheetFilter" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}/filter_views/{filter_view_id}": { GET: "getSheetsSpreadsheetSheetFilterView", PATCH: "patchSheetsSpreadsheetSheetFilterView", DELETE: "deleteSheetsSpreadsheetSheetFilterView" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}/filter_views/query": { GET: "querySheetsSpreadsheetSheetFilterView" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}/filter_views": { POST: "createSheetsSpreadsheetSheetFilterView" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}/filter_views/{filter_view_id}/conditions/{condition_id}": { GET: "getSheetsSpreadsheetSheetFilterViewCondition", PUT: "updateSheetsSpreadsheetSheetFilterViewCondition", DELETE: "deleteSheetsSpreadsheetSheetFilterViewCondition" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}/filter_views/{filter_view_id}/conditions/query": { GET: "querySheetsSpreadsheetSheetFilterViewCondition" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}/filter_views/{filter_view_id}/conditions": { POST: "createSheetsSpreadsheetSheetFilterViewCondition" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}/float_images/{float_image_id}": { GET: "getSheetsSpreadsheetSheetFloatImage", PATCH: "patchSheetsSpreadsheetSheetFloatImage", DELETE: "deleteSheetsSpreadsheetSheetFloatImage" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}/float_images/query": { GET: "querySheetsSpreadsheetSheetFloatImage" }, "/sheets/v3/spreadsheets/{spreadsheet_token}/sheets/{sheet_id}/float_images": { POST: "createSheetsSpreadsheetSheetFloatImage" }, "/bitable/v1/apps/{app_token}/copy": { POST: "copyBitableApp" }, "/bitable/v1/apps": { POST: "createBitableApp" }, "/bitable/v1/apps/{app_token}": { GET: "getBitableApp", PUT: "updateBitableApp" }, "/bitable/v1/apps/{app_token}/tables": { POST: "createBitableAppTable", GET: "listBitableAppTable" }, "/bitable/v1/apps/{app_token}/tables/batch_create": { POST: "batchCreateBitableAppTable" }, "/bitable/v1/apps/{app_token}/tables/{table_id}": { DELETE: "deleteBitableAppTable", PATCH: "patchBitableAppTable" }, "/bitable/v1/apps/{app_token}/tables/batch_delete": { POST: "batchDeleteBitableAppTable" }, "/bitable/v1/apps/{app_token}/dashboards/{block_id}/copy": { POST: "copyBitableAppDashboard" }, "/bitable/v1/apps/{app_token}/dashboards": { GET: "listBitableAppDashboard" }, "/bitable/v1/apps/{app_token}/tables/{table_id}/views/{view_id}": { PATCH: "patchBitableAppTableView", GET: "getBitableAppTableView", DELETE: "deleteBitableAppTableView" }, "/bitable/v1/apps/{app_token}/tables/{table_id}/views": { GET: "listBitableAppTableView", POST: "createBitableAppTableView" }, "/bitable/v1/apps/{app_token}/tables/{table_id}/forms/{form_id}": { PATCH: "patchBitableAppTableForm", GET: "getBitableAppTableForm" }, "/bitable/v1/apps/{app_token}/tables/{table_id}/forms/{form_id}/fields/{field_id}": { PATCH: "patchBitableAppTableFormField" }, "/bitable/v1/apps/{app_token}/tables/{table_id}/forms/{form_id}/fields": { GET: "listBitableAppTableFormField" }, "/bitable/v1/apps/{app_token}/tables/{table_id}/records/{record_id}": { GET: "getBitableAppTableRecord", PUT: "updateBitableAppTableRecord", DELETE: "deleteBitableAppTableRecord" }, "/bitable/v1/apps/{app_token}/tables/{table_id}/records/search": { POST: "searchBitableAppTableRecord" }, "/bitable/v1/apps/{app_token}/tables/{table_id}/records": { POST: "createBitableAppTableRecord", GET: "listBitableAppTableRecord" }, "/bitable/v1/apps/{app_token}/tables/{table_id}/records/batch_create": { POST: "batchCreateBitableAppTableRecord" }, "/bitable/v1/apps/{app_token}/tables/{table_id}/records/batch_update": { POST: "batchUpdateBitableAppTableRecord" }, "/bitable/v1/apps/{app_token}/tables/{table_id}/records/batch_delete": { POST: "batchDeleteBitableAppTableRecord" }, "/bitable/v1/apps/{app_token}/tables/{table_id}/fields": { GET: "listBitableAppTableField", POST: "createBitableAppTableField" }, "/bitable/v1/apps/{app_token}/tables/{table_id}/fields/{field_id}": { PUT: "updateBitableAppTableField", DELETE: "deleteBitableAppTableField" }, "/bitable/v1/apps/{app_token}/roles": { GET: "listBitableAppRole", POST: "createBitableAppRole" }, "/bitable/v1/apps/{app_token}/roles/{role_id}": { DELETE: "deleteBitableAppRole", PUT: "updateBitableAppRole" }, "/bitable/v1/apps/{app_token}/roles/{role_id}/members/batch_delete": { POST: "batchDeleteBitableAppRoleMember" }, "/bitable/v1/apps/{app_token}/roles/{role_id}/members/batch_create": { POST: "batchCreateBitableAppRoleMember" }, "/bitable/v1/apps/{app_token}/roles/{role_id}/members": { GET: "listBitableAppRoleMember", POST: "createBitableAppRoleMember" }, "/bitable/v1/apps/{app_token}/roles/{role_id}/members/{member_id}": { DELETE: "deleteBitableAppRoleMember" }, "/wiki/v2/spaces": { GET: "listWikiSpace", POST: "createWikiSpace" }, "/wiki/v2/spaces/{space_id}": { GET: "getWikiSpace" }, "/wiki/v2/spaces/{space_id}/members": { POST: "createWikiSpaceMember" }, "/wiki/v2/spaces/{space_id}/members/{member_id}": { DELETE: "deleteWikiSpaceMember" }, "/wiki/v2/spaces/{space_id}/setting": { PUT: "updateWikiSpaceSetting" }, "/wiki/v2/spaces/{space_id}/nodes": { POST: "createWikiSpaceNode", GET: "listWikiSpaceNode" }, "/wiki/v2/spaces/get_node": { GET: "getNodeWikiSpace" }, "/wiki/v2/spaces/{space_id}/nodes/{node_token}/move": { POST: "moveWikiSpaceNode" }, "/wiki/v2/spaces/{space_id}/nodes/{node_token}/update_title": { POST: "updateTitleWikiSpaceNode" }, "/wiki/v2/spaces/{space_id}/nodes/{node_token}/copy": { POST: "copyWikiSpaceNode" }, "/wiki/v2/spaces/{space_id}/nodes/move_docs_to_wiki": { POST: "moveDocsToWikiWikiSpaceNode" }, "/wiki/v2/tasks/{task_id}": { GET: "getWikiTask" }, "/wiki/v1/nodes/search": { POST: "searchWikiNode" }, "/drive/v1/files/{file_token}/subscriptions/{subscription_id}": { GET: "getDrivev1FileSubscription", PATCH: "patchDrivev1FileSubscription" }, "/drive/v1/files/{file_token}/subscriptions": { POST: "createDrivev1FileSubscription" }, "/calendar/v4/calendars": { POST: "createCalendar", GET: "listCalendar" }, "/calendar/v4/calendars/{calendar_id}": { DELETE: "deleteCalendar", GET: "getCalendar", PATCH: "patchCalendar" }, "/calendar/v4/calendars/primary": { POST: "primaryCalendar" }, "/calendar/v4/freebusy/list": { POST: "listCalendarFreebusy" }, "/calendar/v4/calendars/search": { POST: "searchCalendar" }, "/calendar/v4/calendars/{calendar_id}/subscribe": { POST: "subscribeCalendar" }, "/calendar/v4/calendars/{calendar_id}/unsubscribe": { POST: "unsubscribeCalendar" }, "/calendar/v4/calendars/subscription": { POST: "subscriptionCalendar" }, "/calendar/v4/calendars/unsubscription": { POST: "unsubscriptionCalendar" }, "/calendar/v4/calendars/{calendar_id}/acls": { POST: "createCalendarCalendarAcl", GET: "listCalendarCalendarAcl" }, "/calendar/v4/calendars/{calendar_id}/acls/{acl_id}": { DELETE: "deleteCalendarCalendarAcl" }, "/calendar/v4/calendars/{calendar_id}/acls/subscription": { POST: "subscriptionCalendarCalendarAcl" }, "/calendar/v4/calendars/{calendar_id}/acls/unsubscription": { POST: "unsubscriptionCalendarCalendarAcl" }, "/calendar/v4/calendars/{calendar_id}/events": { POST: "createCalendarCalendarEvent", GET: "listCalendarCalendarEvent" }, "/calendar/v4/calendars/{calendar_id}/events/{event_id}": { DELETE: "deleteCalendarCalendarEvent", PATCH: "patchCalendarCalendarEvent", GET: "getCalendarCalendarEvent" }, "/calendar/v4/calendars/{calendar_id}/events/search": { POST: "searchCalendarCalendarEvent" }, "/calendar/v4/calendars/{calendar_id}/events/subscription": { POST: "subscriptionCalendarCalendarEvent" }, "/calendar/v4/calendars/{calendar_id}/events/unsubscription": { POST: "unsubscriptionCalendarCalendarEvent" }, "/calendar/v4/calendars/{calendar_id}/events/{event_id}/reply": { POST: "replyCalendarCalendarEvent" }, "/calendar/v4/calendars/{calendar_id}/events/{event_id}/instances": { GET: "instancesCalendarCalendarEvent" }, "/calendar/v4/calendars/{calendar_id}/events/instance_view": { GET: "instanceViewCalendarCalendarEvent" }, "/calendar/v4/calendars/{calendar_id}/events/{event_id}/meeting_chat": { POST: "createCalendarCalendarEventMeetingChat", DELETE: "deleteCalendarCalendarEventMeetingChat" }, "/calendar/v4/timeoff_events": { POST: "createCalendarTimeoffEvent" }, "/calendar/v4/timeoff_events/{timeoff_event_id}": { DELETE: "deleteCalendarTimeoffEvent" }, "/calendar/v4/calendars/{calendar_id}/events/{event_id}/attendees": { POST: "createCalendarCalendarEventAttendee", GET: "listCalendarCalendarEventAttendee" }, "/calendar/v4/calendars/{calendar_id}/events/{event_id}/attendees/batch_delete": { POST: "batchDeleteCalendarCalendarEventAttendee" }, "/calendar/v4/calendars/{calendar_id}/events/{event_id}/attendees/{attendee_id}/chat_members": { GET: "listCalendarCalendarEventAttendeeChatMember" }, "/calendar/v4/settings/generate_caldav_conf": { POST: "generateCaldavConfCalendarSetting" }, "/calendar/v4/exchange_bindings": { POST: "createCalendarExchangeBinding" }, "/calendar/v4/exchange_bindings/{exchange_binding_id}": { DELETE: "deleteCalendarExchangeBinding", GET: "getCalendarExchangeBinding" }, "/vc/v1/reserves/apply": { POST: "applyVcReserve" }, "/vc/v1/reserves/{reserve_id}": { DELETE: "deleteVcReserve", PUT: "updateVcReserve", GET: "getVcReserve" }, "/vc/v1/reserves/{reserve_id}/get_active_meeting": { GET: "getActiveMeetingVcReserve" }, "/vc/v1/meetings/{meeting_id}/invite": { PATCH: "inviteVcMeeting" }, "/vc/v1/meetings/{meeting_id}/kickout": { POST: "kickoutVcMeeting" }, "/vc/v1/meetings/{meeting_id}/set_host": { PATCH: "setHostVcMeeting" }, "/vc/v1/meetings/{meeting_id}/end": { PATCH: "endVcMeeting" }, "/vc/v1/meetings/{meeting_id}": { GET: "getVcMeeting" }, "/vc/v1/meetings/list_by_no": { GET: "listByNoVcMeeting" }, "/vc/v1/meetings/{meeting_id}/recording/start": { PATCH: "startVcMeetingRecording" }, "/vc/v1/meetings/{meeting_id}/recording/stop": { PATCH: "stopVcMeetingRecording" }, "/vc/v1/meetings/{meeting_id}/recording": { GET: "getVcMeetingRecording" }, "/vc/v1/meetings/{meeting_id}/recording/set_permission": { PATCH: "setPermissionVcMeetingRecording" }, "/vc/v1/reports/get_daily": { GET: "getDailyVcReport" }, "/vc/v1/reports/get_top_user": { GET: "getTopUserVcReport" }, "/vc/v1/exports/meeting_list": { POST: "meetingListVcExport" }, "/vc/v1/exports/participant_list": { POST: "participantListVcExport" }, "/vc/v1/exports/participant_quality_list": { POST: "participantQualityListVcExport" }, "/vc/v1/exports/resource_reservation_list": { POST: "resourceReservationListVcExport" }, "/vc/v1/exports/{task_id}": { GET: "getVcExport" }, "/vc/v1/exports/download": { GET: "downloadVcExport" }, "/vc/v1/room_levels": { POST: "createVcRoomLevel", GET: "listVcRoomLevel" }, "/vc/v1/room_levels/del": { POST: "delVcRoomLevel" }, "/vc/v1/room_levels/{room_level_id}": { PATCH: "patchVcRoomLevel", GET: "getVcRoomLevel" }, "/vc/v1/room_levels/mget": { POST: "mgetVcRoomLevel" }, "/vc/v1/room_levels/search": { GET: "searchVcRoomLevel" }, "/vc/v1/rooms": { POST: "createVcRoom", GET: "listVcRoom" }, "/vc/v1/rooms/{room_id}": { DELETE: "deleteVcRoom", PATCH: "patchVcRoom", GET: "getVcRoom" }, "/vc/v1/rooms/mget": { POST: "mgetVcRoom" }, "/vc/v1/rooms/search": { POST: "searchVcRoom" }, "/vc/v1/scope_config": { GET: "getVcScopeConfig", POST: "createVcScopeConfig" }, "/vc/v1/reserve_configs/reserve_scope": { GET: "reserveScopeVcReserveConfig" }, "/vc/v1/reserve_configs/{reserve_config_id}": { PATCH: "patchVcReserveConfig" }, "/vc/v1/reserve_configs/{reserve_config_id}/form": { GET: "getVcReserveConfigForm", PATCH: "patchVcReserveConfigForm" }, "/vc/v1/reserve_configs/{reserve_config_id}/admin": { GET: "getVcReserveConfigAdmin", PATCH: "patchVcReserveConfigAdmin" }, "/vc/v1/reserve_configs/{reserve_config_id}/disable_inform": { GET: "getVcReserveConfigDisableInform", PATCH: "patchVcReserveConfigDisableInform" }, "/vc/v1/meeting_list": { GET: "getVcMeetingList" }, "/vc/v1/participant_list": { GET: "getVcParticipantList" }, "/vc/v1/participant_quality_list": { GET: "getVcParticipantQualityList" }, "/vc/v1/resource_reservation_list": { GET: "getVcResourceReservationList" }, "/vc/v1/alerts": { GET: "listVcAlert" }, "/attendance/v1/shifts": { POST: "createAttendanceShift", GET: "listAttendanceShift" }, "/attendance/v1/shifts/{shift_id}": { DELETE: "deleteAttendanceShift", GET: "getAttendanceShift" }, "/attendance/v1/shifts/query": { POST: "queryAttendanceShift" }, "/attendance/v1/groups": { POST: "createAttendanceGroup", GET: "listAttendanceGroup" }, "/attendance/v1/groups/{group_id}": { DELETE: "deleteAttendanceGroup", GET: "getAttendanceGroup" }, "/attendance/v1/groups/search": { POST: "searchAttendanceGroup" }, "/attendance/v1/user_daily_shifts/batch_create": { POST: "batchCreateAttendanceUserDailyShift" }, "/attendance/v1/user_daily_shifts/query": { POST: "queryAttendanceUserDailyShift" }, "/attendance/v1/user_stats_views/{user_stats_view_id}": { PUT: "updateAttendanceUserStatsView" }, "/attendance/v1/user_stats_fields/query": { POST: "queryAttendanceUserStatsField" }, "/attendance/v1/user_stats_views/query": { POST: "queryAttendanceUserStatsView" }, "/attendance/v1/user_stats_datas/query": { POST: "queryAttendanceUserStatsData" }, "/attendance/v1/user_approvals/query": { POST: "queryAttendanceUserApproval" }, "/attendance/v1/user_approvals": { POST: "createAttendanceUserApproval" }, "/attendance/v1/approval_infos/process": { POST: "processAttendanceApprovalInfo" }, "/attendance/v1/user_task_remedys": { POST: "createAttendanceUserTaskRemedy" }, "/attendance/v1/user_task_remedys/query_user_allowed_remedys": { POST: "queryUserAllowedRemedysAttendanceUserTaskRemedy" }, "/attendance/v1/user_task_remedys/query": { POST: "queryAttendanceUserTaskRemedy" }, "/attendance/v1/user_flows/batch_create": { POST: "batchCreateAttendanceUserFlow" }, "/attendance/v1/user_flows/{user_flow_id}": { GET: "getAttendanceUserFlow" }, "/attendance/v1/user_flows/query": { POST: "queryAttendanceUserFlow" }, "/attendance/v1/user_tasks/query": { POST: "queryAttendanceUserTask" }, "/attendance/v1/user_settings/modify": { POST: "modifyAttendanceUserSetting" }, "/attendance/v1/user_settings/query": { GET: "queryAttendanceUserSetting" }, "/attendance/v1/files/{file_id}/download": { GET: "downloadAttendanceFile" }, "/attendance/v1/leave_employ_expire_records/{leave_id}": { GET: "getAttendanceLeaveEmployExpireRecord" }, "/attendance/v1/leave_accrual_record/{leave_id}": { PATCH: "patchAttendanceLeaveAccrualRecord" }, "/approval/v4/approvals": { POST: "createApproval" }, "/approval/v4/approvals/{approval_code}": { GET: "getApproval" }, "/approval/v4/instances": { POST: "createApprovalInstance", GET: "listApprovalInstance" }, "/approval/v4/instances/cancel": { POST: "cancelApprovalInstance" }, "/approval/v4/instances/cc": { POST: "ccApprovalInstance" }, "/approval/v4/instances/preview": { POST: "previewApprovalInstance" }, "/approval/v4/instances/{instance_id}": { GET: "getApprovalInstance" }, "/approval/v4/tasks/approve": { POST: "approveApprovalTask" }, "/approval/v4/tasks/reject": { POST: "rejectApprovalTask" }, "/approval/v4/tasks/transfer": { POST: "transferApprovalTask" }, "/approval/v4/instances/specified_rollback": { POST: "specifiedRollbackApprovalInstance" }, "/approval/v4/instances/add_sign": { POST: "addSignApprovalInstance" }, "/approval/v4/tasks/resubmit": { POST: "resubmitApprovalTask" }, "/approval/v4/instances/{instance_id}/comments": { POST: "createApprovalInstanceComment", GET: "listApprovalInstanceComment" }, "/approval/v4/instances/{instance_id}/comments/{comment_id}": { DELETE: "deleteApprovalInstanceComment" }, "/approval/v4/instances/{instance_id}/comments/remove": { POST: "removeApprovalInstanceComment" }, "/approval/v4/external_approvals": { POST: "createApprovalExternalApproval" }, "/approval/v4/external_approvals/{approval_code}": { GET: "getApprovalExternalApproval" }, "/approval/v4/external_instances": { POST: "createApprovalExternalInstance" }, "/approval/v4/external_instances/check": { POST: "checkApprovalExternalInstance" }, "/approval/v4/external_tasks": { GET: "listApprovalExternalTask" }, "/approval/v4/instances/query": { POST: "queryApprovalInstance" }, "/approval/v4/instances/search_cc": { POST: "searchCcApprovalInstance" }, "/approval/v4/tasks/search": { POST: "searchApprovalTask" }, "/approval/v4/tasks/query": { GET: "queryApprovalTask" }, "/approval/v4/approvals/{approval_code}/subscribe": { POST: "subscribeApproval" }, "/approval/v4/approvals/{approval_code}/unsubscribe": { POST: "unsubscribeApproval" }, "/helpdesk/v1/agents/{agent_id}": { PATCH: "patchHelpdeskAgent" }, "/helpdesk/v1/agent_emails": { GET: "agentEmailHelpdeskAgent" }, "/helpdesk/v1/agent_schedules": { POST: "createHelpdeskAgentSchedule", GET: "listHelpdeskAgentSchedule" }, "/helpdesk/v1/agents/{agent_id}/schedules": { DELETE: "deleteHelpdeskAgentSchedules", PATCH: "patchHelpdeskAgentSchedules", GET: "getHelpdeskAgentSchedules" }, "/helpdesk/v1/agent_skills": { POST: "createHelpdeskAgentSkill", GET: "listHelpdeskAgentSkill" }, "/helpdesk/v1/agent_skills/{agent_skill_id}": { DELETE: "deleteHelpdeskAgentSkill", PATCH: "patchHelpdeskAgentSkill", GET: "getHelpdeskAgentSkill" }, "/helpdesk/v1/agent_skill_rules": { GET: "listHelpdeskAgentSkillRule" }, "/helpdesk/v1/start_service": { POST: "startServiceHelpdeskTicket" }, "/helpdesk/v1/tickets/{ticket_id}": { GET: "getHelpdeskTicket", PUT: "updateHelpdeskTicket" }, "/helpdesk/v1/tickets": { GET: "listHelpdeskTicket" }, "/helpdesk/v1/ticket_images": { GET: "ticketImageHelpdeskTicket" }, "/helpdesk/v1/tickets/{ticket_id}/answer_user_query": { POST: "answerUserQueryHelpdeskTicket" }, "/helpdesk/v1/customized_fields": { GET: "customizedFieldsHelpdeskTicket" }, "/helpdesk/v1/tickets/{ticket_id}/messages": { POST: "createHelpdeskTicketMessage", GET: "listHelpdeskTicketMessage" }, "/helpdesk/v1/message": { POST: "createHelpdeskBotMessage" }, "/helpdesk/v1/ticket_customized_fields": { POST: "createHelpdeskTicketCustomizedField", GET: "listHelpdeskTicketCustomizedField" }, "/helpdesk/v1/ticket_customized_fields/{ticket_customized_field_id}": { DELETE: "deleteHelpdeskTicketCustomizedField", PATCH: "patchHelpdeskTicketCustomizedField", GET: "getHelpdeskTicketCustomizedField" }, "/helpdesk/v1/faqs": { POST: "createHelpdeskFaq", GET: "listHelpdeskFaq" }, "/helpdesk/v1/faqs/{id}": { DELETE: "deleteHelpdeskFaq", PATCH: "patchHelpdeskFaq", GET: "getHelpdeskFaq" }, "/helpdesk/v1/faqs/{id}/image/{image_key}": { GET: "faqImageHelpdeskFaq" }, "/helpdesk/v1/faqs/search": { GET: "searchHelpdeskFaq" }, "/helpdesk/v1/categories": { POST: "createHelpdeskCategory", GET: "listHelpdeskCategory" }, "/helpdesk/v1/categories/{id}": { GET: "getHelpdeskCategory", PATCH: "patchHelpdeskCategory", DELETE: "deleteHelpdeskCategory" }, "/helpdesk/v1/notifications": { POST: "createHelpdeskNotification" }, "/helpdesk/v1/notifications/{notification_id}": { PATCH: "patchHelpdeskNotification", GET: "getHelpdeskNotification" }, "/helpdesk/v1/notifications/{notification_id}/preview": { POST: "previewHelpdeskNotification" }, "/helpdesk/v1/notifications/{notification_id}/submit_approve": { POST: "submitApproveHelpdeskNotification" }, "/helpdesk/v1/notifications/{notification_id}/cancel_approve": { POST: "cancelApproveHelpdeskNotification" }, "/helpdesk/v1/notifications/{notification_id}/execute_send": { POST: "executeSendHelpdeskNotification" }, "/helpdesk/v1/notifications/{notification_id}/cancel_send": { POST: "cancelSendHelpdeskNotification" }, "/helpdesk/v1/events/subscribe": { POST: "subscribeHelpdeskEvent" }, "/helpdesk/v1/events/unsubscribe": { POST: "unsubscribeHelpdeskEvent" }, "/task/v1/tasks": { POST: "createTaskv1", GET: "listTaskv1" }, "/task/v1/tasks/{task_id}": { DELETE: "deleteTaskv1", PATCH: "patchTaskv1", GET: "getTaskv1" }, "/task/v1/tasks/{task_id}/complete": { POST: "completeTaskv1" }, "/task/v1/tasks/{task_id}/uncomplete": { POST: "uncompleteTaskv1" }, "/task/v1/tasks/{task_id}/reminders": { POST: "createTaskv1TaskReminder", GET: "listTaskv1TaskReminder" }, "/task/v1/tasks/{task_id}/reminders/{reminder_id}": { DELETE: "deleteTaskv1TaskReminder" }, "/task/v1/tasks/{task_id}/comments": { POST: "createTaskv1TaskComment", GET: "listTaskv1TaskComment" }, "/task/v1/tasks/{task_id}/comments/{comment_id}": { DELETE: "deleteTaskv1TaskComment", PUT: "updateTaskv1TaskComment", GET: "getTaskv1TaskComment" }, "/task/v1/tasks/{task_id}/followers": { POST: "createTaskv1TaskFollower", GET: "listTaskv1TaskFollower" }, "/task/v1/tasks/{task_id}/followers/{follower_id}": { DELETE: "deleteTaskv1TaskFollower" }, "/task/v1/tasks/{task_id}/batch_delete_follower": { POST: "batchDeleteFollowerTaskv1" }, "/task/v1/tasks/{task_id}/collaborators": { POST: "createTaskv1TaskCollaborator", GET: "listTaskv1TaskCollaborator" }, "/task/v1/tasks/{task_id}/collaborators/{collaborator_id}": { DELETE: "deleteTaskv1TaskCollaborator" }, "/task/v1/tasks/{task_id}/batch_delete_collaborator": { POST: "batchDeleteCollaboratorTaskv1" }, "/task/v2/tasks": { POST: "createTaskv2", GET: "listTaskv2" }, "/task/v2/tasks/{task_guid}": { GET: "getTaskv2", PATCH: "patchTaskv2", DELETE: "deleteTaskv2" }, "/task/v2/tasks/{task_guid}/add_members": { POST: "addMembersTaskv2" }, "/task/v2/tasks/{task_guid}/remove_members": { POST: "removeMembersTaskv2" }, "/task/v2/tasks/{task_guid}/tasklists": { GET: "tasklistsTaskv2" }, "/task/v2/tasks/{task_guid}/add_tasklist": { POST: "addTasklistTaskv2" }, "/task/v2/tasks/{task_guid}/remove_tasklist": { POST: "removeTasklistTaskv2" }, "/task/v2/tasks/{task_guid}/add_reminders": { POST: "addRemindersTaskv2" }, "/task/v2/tasks/{task_guid}/remove_reminders": { POST: "removeRemindersTaskv2" }, "/task/v2/tasks/{task_guid}/add_dependencies": { POST: "addDependenciesTaskv2" }, "/task/v2/tasks/{task_guid}/remove_dependencies": { POST: "removeDependenciesTaskv2" }, "/task/v2/tasks/{task_guid}/subtasks": { POST: "createTaskv2TaskSubtask", GET: "listTaskv2TaskSubtask" }, "/task/v2/tasklists": { POST: "createTaskv2Tasklist", GET: "listTaskv2Tasklist" }, "/task/v2/tasklists/{tasklist_guid}": { GET: "getTaskv2Tasklist", PATCH: "patchTaskv2Tasklist", DELETE: "deleteTaskv2Tasklist" }, "/task/v2/tasklists/{tasklist_guid}/add_members": { POST: "addMembersTaskv2Tasklist" }, "/task/v2/tasklists/{tasklist_guid}/remove_members": { POST: "removeMembersTaskv2Tasklist" }, "/task/v2/tasklists/{tasklist_guid}/tasks": { GET: "tasksTaskv2Tasklist" }, "/task/v2/tasklists/{tasklist_guid}/activity_subscriptions": { POST: "createTaskv2TasklistActivitySubscription", GET: "listTaskv2TasklistActivitySubscription" }, "/task/v2/tasklists/{tasklist_guid}/activity_subscriptions/{activity_subscription_guid}": { GET: "getTaskv2TasklistActivitySubscription", PATCH: "patchTaskv2TasklistActivitySubscription", DELETE: "deleteTaskv2TasklistActivitySubscription" }, "/task/v2/comments": { POST: "createTaskv2Comment", GET: "listTaskv2Comment" }, "/task/v2/comments/{comment_id}": { GET: "getTaskv2Comment", PATCH: "patchTaskv2Comment", DELETE: "deleteTaskv2Comment" }, "/task/v2/attachments": { GET: "listTaskv2Attachment" }, "/task/v2/attachments/{attachment_guid}": { GET: "getTaskv2Attachment", DELETE: "deleteTaskv2Attachment" }, "/task/v2/sections": { POST: "createTaskv2Section", GET: "listTaskv2Section" }, "/task/v2/sections/{section_guid}": { GET: "getTaskv2Section", PATCH: "patchTaskv2Section", DELETE: "deleteTaskv2Section" }, "/task/v2/sections/{section_guid}/tasks": { GET: "tasksTaskv2Section" }, "/task/v2/custom_fields": { POST: "createTaskv2CustomField", GET: "listTaskv2CustomField" }, "/task/v2/custom_fields/{custom_field_guid}": { GET: "getTaskv2CustomField", PATCH: "patchTaskv2CustomField" }, "/task/v2/custom_fields/{custom_field_guid}/add": { POST: "addTaskv2CustomField" }, "/task/v2/custom_fields/{custom_field_guid}/remove": { POST: "removeTaskv2CustomField" }, "/task/v2/custom_fields/{custom_field_guid}/options": { POST: "createTaskv2CustomFieldOption" }, "/task/v2/custom_fields/{custom_field_guid}/options/{option_guid}": { PATCH: "patchTaskv2CustomFieldOption" }, "/mail/v1/mailgroups": { POST: "createMailMailgroup", GET: "listMailMailgroup" }, "/mail/v1/mailgroups/{mailgroup_id}": { DELETE: "deleteMailMailgroup", PATCH: "patchMailMailgroup", PUT: "updateMailMailgroup", GET: "getMailMailgroup" }, "/mail/v1/mailgroups/{mailgroup_id}/managers/batch_create": { POST: "batchCreateMailMailgroupManager" }, "/mail/v1/mailgroups/{mailgroup_id}/managers/batch_delete": { POST: "batchDeleteMailMailgroupManager" }, "/mail/v1/mailgroups/{mailgroup_id}/managers": { GET: "listMailMailgroupManager" }, "/mail/v1/mailgroups/{mailgroup_id}/members": { POST: "createMailMailgroupMember", GET: "listMailMailgroupMember" }, "/mail/v1/mailgroups/{mailgroup_id}/members/{member_id}": { DELETE: "deleteMailMailgroupMember", GET: "getMailMailgroupMember" }, "/mail/v1/mailgroups/{mailgroup_id}/members/batch_create": { POST: "batchCreateMailMailgroupMember" }, "/mail/v1/mailgroups/{mailgroup_id}/members/batch_delete": { DELETE: "batchDeleteMailMailgroupMember" }, "/mail/v1/mailgroups/{mailgroup_id}/aliases": { POST: "createMailMailgroupAlias", GET: "listMailMailgroupAlias" }, "/mail/v1/mailgroups/{mailgroup_id}/aliases/{alias_id}": { DELETE: "deleteMailMailgroupAlias" }, "/mail/v1/mailgroups/{mailgroup_id}/permission_members": { POST: "createMailMailgroupPermissionMember", GET: "listMailMailgroupPermissionMember" }, "/mail/v1/mailgroups/{mailgroup_id}/permission_members/{permission_member_id}": { DELETE: "deleteMailMailgroupPermissionMember", GET: "getMailMailgroupPermissionMember" }, "/mail/v1/mailgroups/{mailgroup_id}/permission_members/batch_create": { POST: "batchCreateMailMailgroupPermissionMember" }, "/mail/v1/mailgroups/{mailgroup_id}/permission_members/batch_delete": { DELETE: "batchDeleteMailMailgroupPermissionMember" }, "/mail/v1/public_mailboxes": { POST: "createMailPublicMailbox", GET: "listMailPublicMailbox" }, "/mail/v1/public_mailboxes/{public_mailbox_id}": { PATCH: "patchMailPublicMailbox", PUT: "updateMailPublicMailbox", GET: "getMailPublicMailbox", DELETE: "deleteMailPublicMailbox" }, "/mail/v1/public_mailboxes/{public_mailbox_id}/members": { POST: "createMailPublicMailboxMember", GET: "listMailPublicMailboxMember" }, "/mail/v1/public_mailboxes/{public_mailbox_id}/members/{member_id}": { DELETE: "deleteMailPublicMailboxMember", GET: "getMailPublicMailboxMember" }, "/mail/v1/public_mailboxes/{public_mailbox_id}/members/clear": { POST: "clearMailPublicMailboxMember" }, "/mail/v1/public_mailboxes/{public_mailbox_id}/members/batch_create": { POST: "batchCreateMailPublicMailboxMember" }, "/mail/v1/public_mailboxes/{public_mailbox_id}/members/batch_delete": { DELETE: "batchDeleteMailPublicMailboxMember" }, "/mail/v1/public_mailboxes/{public_mailbox_id}/aliases": { POST: "createMailPublicMailboxAlias", GET: "listMailPublicMailboxAlias" }, "/mail/v1/public_mailboxes/{public_mailbox_id}/aliases/{alias_id}": { DELETE: "deleteMailPublicMailboxAlias" }, "/mail/v1/user_mailboxes/{user_mailbox_id}": { DELETE: "deleteMailUserMailbox" }, "/mail/v1/user_mailboxes/{user_mailbox_id}/aliases": { POST: "createMailUserMailboxAlias", GET: "listMailUserMailboxAlias" }, "/mail/v1/user_mailboxes/{user_mailbox_id}/aliases/{alias_id}": { DELETE: "deleteMailUserMailboxAlias" }, "/mail/v1/users/query": { POST: "queryMailUser" }, "/application/v6/applications/{app_id}": { GET: "getApplication", PATCH: "patchApplication" }, "/application/v6/applications/{app_id}/app_versions/{version_id}": { GET: "getApplicationApplicationAppVersion", PATCH: "patchApplicationApplicationAppVersion" }, "/application/v6/applications/{app_id}/app_versions": { GET: "listApplicationApplicationAppVersion" }, "/application/v6/applications/{app_id}/app_versions/{version_id}/contacts_range_suggest": { GET: "contactsRangeSuggestApplicationApplicationAppVersion" }, "/application/v6/applications/underauditlist": { GET: "underauditlistApplication" }, "/application/v6/applications/{app_id}/contacts_range_configuration": { GET: "contactsRangeConfigurationApplication" }, "/application/v6/applications/{app_id}/contacts_range": { PATCH: "patchApplicationApplicationContactsRange" }, "/application/v6/applications/{app_id}/visibility/check_white_black_list": { POST: "checkWhiteBlackListApplicationApplicationVisibility" }, "/application/v6/applications/{app_id}/visibility": { PATCH: "patchApplicationApplicationVisibility" }, "/application/v6/applications/{app_id}/management": { PUT: "updateApplicationApplicationManagement" }, "/application/v6/applications/{app_id}/app_usage/department_overview": { POST: "departmentOverviewApplicationApplicationAppUsage" }, "/application/v6/applications/{app_id}/app_usage/overview": { POST: "overviewApplicationApplicationAppUsage" }, "/application/v6/applications/{app_id}/feedbacks/{feedback_id}": { PATCH: "patchApplicationApplicationFeedback" }, "/application/v6/applications/{app_id}/feedbacks": { GET: "listApplicationApplicationFeedback" }, "/application/v6/app_badge/set": { POST: "setApplicationAppBadge" }, "/tenant/v2/tenant/assign_info_list/query": { GET: "queryTenantTenantProductAssignInfo" }, "/tenant/v2/tenant/query": { GET: "queryTenant" }, "/verification/v1/verification": { GET: "getVerification" }, "/personal_settings/v1/system_statuses": { POST: "createPersonalSettingsSystemStatus", GET: "listPersonalSettingsSystemStatus" }, "/personal_settings/v1/system_statuses/{system_status_id}": { DELETE: "deletePersonalSettingsSystemStatus", PATCH: "patchPersonalSettingsSystemStatus" }, "/personal_settings/v1/system_statuses/{system_status_id}/batch_open": { POST: "batchOpenPersonalSettingsSystemStatus" }, "/personal_settings/v1/system_statuses/{system_status_id}/batch_close": { POST: "batchClosePersonalSettingsSystemStatus" }, "/search/v2/message": { POST: "createSearchMessage" }, "/search/v2/app": { POST: "createSearchApp" }, "/search/v2/data_sources": { POST: "createSearchDataSource", GET: "listSearchDataSource" }, "/search/v2/data_sources/{data_source_id}": { DELETE: "deleteSearchDataSource", PATCH: "patchSearchDataSource", GET: "getSearchDataSource" }, "/search/v2/data_sources/{data_source_id}/items": { POST: "createSearchDataSourceItem" }, "/search/v2/data_sources/{data_source_id}/items/{item_id}": { DELETE: "deleteSearchDataSourceItem", GET: "getSearchDataSourceItem" }, "/search/v2/schemas": { POST: "createSearchSchema" }, "/search/v2/schemas/{schema_id}": { DELETE: "deleteSearchSchema", PATCH: "patchSearchSchema", GET: "getSearchSchema" }, "/optical_char_recognition/v1/image/basic_recognize": { POST: "basicRecognizeOpticalCharRecognitionImage" }, "/speech_to_text/v1/speech/file_recognize": { POST: "fileRecognizeSpeechToTextSpeech" }, "/speech_to_text/v1/speech/stream_recognize": { POST: "streamRecognizeSpeechToTextSpeech" }, "/translation/v1/text/detect": { POST: "detectTranslationText" }, "/translation/v1/text/translate": { POST: "translateTranslationText" }, "/apaas/v1/approval_tasks/{approval_task_id}/agree": { POST: "agreeApaasApprovalTask" }, "/apaas/v1/approval_tasks/{approval_task_id}/reject": { POST: "rejectApaasApprovalTask" }, "/apaas/v1/approval_tasks/{approval_task_id}/transfer": { POST: "transferApaasApprovalTask" }, "/apaas/v1/approval_tasks/{approval_task_id}/add_assignee": { POST: "addAssigneeApaasApprovalTask" }, "/admin/v1/password/reset": { POST: "resetAdminPassword" }, "/admin/v1/admin_dept_stats": { GET: "listAdminAdminDeptStat" }, "/admin/v1/admin_user_stats": { GET: "listAdminAdminUserStat" }, "/admin/v1/badges": { POST: "createAdminBadge", GET: "listAdminBadge" }, "/admin/v1/badges/{badge_id}": { PUT: "updateAdminBadge", GET: "getAdminBadge" }, "/admin/v1/badges/{badge_id}/grants": { POST: "createAdminBadgeGrant", GET: "listAdminBadgeGrant" }, "/admin/v1/badges/{badge_id}/grants/{grant_id}": { DELETE: "deleteAdminBadgeGrant", PUT: "updateAdminBadgeGrant", GET: "getAdminBadgeGrant" }, "/ehr/v1/employees": { GET: "listEhrEmployee" }, "/ehr/v1/attachments/{token}": { GET: "getEhrAttachment" }, "/corehr/v2/basic_info/nationalities/search": { POST: "searchCorehrBasicInfoNationality" }, "/corehr/v2/basic_info/banks/search": { POST: "searchCorehrBasicInfoBank" }, "/corehr/v2/basic_info/bank_branchs/search": { POST: "searchCorehrBasicInfoBankBranch" }, "/corehr/v1/custom_fields/get_by_param": { GET: "getByParamCorehrCustomField" }, "/corehr/v1/custom_fields/query": { GET: "queryCorehrCustomField" }, "/corehr/v1/custom_fields/list_object_api_name": { GET: "listObjectApiNameCorehrCustomField" }, "/corehr/v2/basic_info/country_regions/search": { POST: "searchCorehrBasicInfoCountryRegion" }, "/corehr/v2/basic_info/country_region_subdivisions/search": { POST: "searchCorehrBasicInfoCountryRegionSubdivision" }, "/corehr/v2/basic_info/cities/search": { POST: "searchCorehrBasicInfoCity" }, "/corehr/v2/basic_info/districts/search": { POST: "searchCorehrBasicInfoDistrict" }, "/corehr/v1/employee_types": { POST: "createCorehrEmployeeType", GET: "listCorehrEmployeeType" }, "/corehr/v1/employee_types/{employee_type_id}": { DELETE: "deleteCorehrEmployeeType", PATCH: "patchCorehrEmployeeType", GET: "getCorehrEmployeeType" }, "/corehr/v1/national_id_types": { POST: "createCorehrNationalIdType", GET: "listCorehrNationalIdType" }, "/corehr/v1/national_id_types/{national_id_type_id}": { DELETE: "deleteCorehrNationalIdType", PATCH: "patchCorehrNationalIdType", GET: "getCorehrNationalIdType" }, "/corehr/v1/working_hours_types": { POST: "createCorehrWorkingHoursType", GET: "listCorehrWorkingHoursType" }, "/corehr/v1/working_hours_types/{working_hours_type_id}": { DELETE: "deleteCorehrWorkingHoursType", PATCH: "patchCorehrWorkingHoursType", GET: "getCorehrWorkingHoursType" }, "/corehr/v2/basic_info/currencies/search": { POST: "searchCorehrBasicInfoCurrency" }, "/corehr/v2/employees/batch_get": { POST: "batchGetCorehrEmployee" }, "/corehr/v2/employees/search": { POST: "searchCorehrEmployee" }, "/corehr/v1/employments": { POST: "createCorehrEmployment" }, "/corehr/v1/employments/{employment_id}": { PATCH: "patchCorehrEmployment", DELETE: "deleteCorehrEmployment" }, "/corehr/v2/persons": { POST: "createCorehrPerson" }, "/corehr/v2/persons/{person_id}": { PATCH: "patchCorehrPerson" }, "/corehr/v1/persons/{person_id}": { DELETE: "deleteCorehrPerson", GET: "getCorehrPerson" }, "/corehr/v1/files/{id}": { GET: "getCorehrFile" }, "/corehr/v1/job_datas": { POST: "createCorehrJobData", GET: "listCorehrJobData" }, "/corehr/v1/job_datas/{job_data_id}": { DELETE: "deleteCorehrJobData", PATCH: "patchCorehrJobData", GET: "getCorehrJobData" }, "/corehr/v2/employees/job_datas/query": { POST: "queryCorehrEmployeesJobData" }, "/corehr/v2/employees/job_datas/batch_get": { POST: "batchGetCorehrEmployeesJobData" }, "/corehr/v2/departments/parents": { POST: "parentsCorehrDepartment" }, "/corehr/v2/departments/search": { POST: "searchCorehrDepartment" }, "/corehr/v1/departments": { POST: "createCorehrDepartment", GET: "listCorehrDepartment" }, "/corehr/v1/departments/{department_id}": { PATCH: "patchCorehrDepartment", DELETE: "deleteCorehrDepartment", GET: "getCorehrDepartment" }, "/corehr/v2/departments/batch_get": { POST: "batchGetCorehrDepartment" }, "/corehr/v2/locations/batch_get": { POST: "batchGetCorehrLocation" }, "/corehr/v1/locations": { POST: "createCorehrLocation", GET: "listCorehrLocation" }, "/corehr/v1/locations/{location_id}": { DELETE: "deleteCorehrLocation", GET: "getCorehrLocation" }, "/corehr/v1/companies/{company_id}": { GET: "getCorehrCompany", PATCH: "patchCorehrCompany", DELETE: "deleteCorehrCompany" }, "/corehr/v1/companies": { GET: "listCorehrCompany", POST: "createCorehrCompany" }, "/corehr/v2/companies/batch_get": { POST: "batchGetCorehrCompany" }, "/corehr/v2/cost_centers": { POST: "createCorehrCostCenter" }, "/corehr/v2/cost_centers/{cost_center_id}": { PATCH: "patchCorehrCostCenter", DELETE: "deleteCorehrCostCenter" }, "/corehr/v2/cost_centers/search": { POST: "searchCorehrCostCenter" }, "/corehr/v2/cost_centers/{cost_center_id}/versions": { POST: "createCorehrCostCenterVersion" }, "/corehr/v2/cost_centers/{cost_center_id}/versions/{version_id}": { PATCH: "patchCorehrCostCenterVersion", DELETE: "deleteCorehrCostCenterVersion" }, "/corehr/v2/job_levels/batch_get": { POST: "batchGetCorehrJobLevel" }, "/corehr/v1/job_levels": { POST: "createCorehrJobLevel", GET: "listCorehrJobLevel" }, "/corehr/v1/job_levels/{job_level_id}": { DELETE: "deleteCorehrJobLevel", PATCH: "patchCorehrJobLevel", GET: "getCorehrJobLevel" }, "/corehr/v2/job_families/batch_get": { POST: "batchGetCorehrJobFamily" }, "/corehr/v1/job_families": { POST: "createCorehrJobFamily", GET: "listCorehrJobFamily" }, "/corehr/v1/job_families/{job_family_id}": { DELETE: "deleteCorehrJobFamily", PATCH: "patchCorehrJobFamily", GET: "getCorehrJobFamily" }, "/corehr/v1/jobs": { POST: "createCorehrJob", GET: "listCorehrJob" }, "/corehr/v1/jobs/{job_id}": { DELETE: "deleteCorehrJob", PATCH: "patchCorehrJob", GET: "getCorehrJob" }, "/corehr/v2/jobs/{job_id}": { GET: "getCorehrJob" }, "/corehr/v2/jobs": { GET: "listCorehrJob" }, "/corehr/v2/pre_hires": { POST: "createCorehrPreHire" }, "/corehr/v1/pre_hires/{pre_hire_id}": { PATCH: "patchCorehrPreHire", DELETE: "deleteCorehrPreHire", GET: "getCorehrPreHire" }, "/corehr/v1/pre_hires": { GET: "listCorehrPreHire" }, "/corehr/v2/contracts/search": { POST: "searchCorehrContract" }, "/corehr/v1/contracts": { POST: "createCorehrContract", GET: "listCorehrContract" }, "/corehr/v1/contracts/{contract_id}": { DELETE: "deleteCorehrContract", PATCH: "patchCorehrContract", GET: "getCorehrContract" }, "/corehr/v2/probation/search": { POST: "searchCorehrProbation" }, "/corehr/v2/probation/enable_disable_assessment": { POST: "enableDisableAssessmentCorehrProbation" }, "/corehr/v2/probation/assessments": { POST: "createCorehrProbationAssessment" }, "/corehr/v2/probation/assessments/{assessment_id}": { PATCH: "patchCorehrProbationAssessment", DELETE: "deleteCorehrProbationAssessment" }, "/corehr/v1/transfer_reasons/query": { GET: "queryCorehrTransferReason" }, "/corehr/v1/transfer_types/query": { GET: "queryCorehrTransferType" }, "/corehr/v1/job_changes": { POST: "createCorehrJobChange" }, "/corehr/v2/job_changes/search": { POST: "searchCorehrJobChange" }, "/corehr/v1/offboardings/query": { POST: "queryCorehrOffboarding" }, "/corehr/v1/offboardings/submit": { POST: "submitCorehrOffboarding" }, "/corehr/v1/offboardings/search": { POST: "searchCorehrOffboarding" }, "/corehr/v1/leave_granting_records": { POST: "createCorehrLeaveGrantingRecord" }, "/corehr/v1/leave_granting_records/{leave_granting_record_id}": { DELETE: "deleteCorehrLeaveGrantingRecord" }, "/corehr/v1/leaves/leave_types": { GET: "leaveTypesCorehrLeave" }, "/corehr/v1/leaves/leave_balances": { GET: "leaveBalancesCorehrLeave" }, "/corehr/v1/leaves/leave_request_history": { GET: "leaveRequestHistoryCorehrLeave" }, "/corehr/v2/employees/bps/batch_get": { POST: "batchGetCorehrEmployeesBp" }, "/corehr/v2/bps/get_by_department": { POST: "getByDepartmentCorehrBp" }, "/corehr/v2/bps": { GET: "listCorehrBp" }, "/corehr/v1/security_groups/query": { POST: "queryCorehrSecurityGroup" }, "/corehr/v1/assigned_users/search": { POST: "searchCorehrAssignedUser" }, "/corehr/v1/security_groups": { GET: "listCorehrSecurityGroup" }, "/corehr/v2/processes": { GET: "listCorehrProcess" }, "/corehr/v2/processes/{process_id}": { GET: "getCorehrProcess" }, "/corehr/v1/processes/{process_id}/form_variable_data": { GET: "getCorehrProcessFormVariableData" }, "/corehr/v1/compensation_standards/match": { GET: "matchCorehrCompensationStandard" }, "/hire/v1/jobs/combined_create": { POST: "combinedCreateHireJob" }, "/hire/v1/jobs/{job_id}": { GET: "getHireJob" }, "/hire/v1/jobs/{job_id}/config": { GET: "configHireJob" }, "/hire/v1/jobs": { GET: "listHireJob" }, "/hire/v1/jobs/{job_id}/combined_update": { POST: "combinedUpdateHireJob" }, "/hire/v1/jobs/{job_id}/update_config": { POST: "updateConfigHireJob" }, "/hire/v1/job_types": { GET: "listHireJobType" }, "/hire/v1/jobs/{job_id}/recruiter": { GET: "recruiterHireJob" }, "/hire/v1/job_requirements": { POST: "createHireJobRequirement", GET: "listHireJobRequirement" }, "/hire/v1/job_requirements/search": { POST: "listByIdHireJobRequirement" }, "/hire/v1/job_requirements/{job_requirement_id}": { PUT: "updateHireJobRequirement", DELETE: "deleteHireJobRequirement" }, "/hire/v1/job_requirement_schemas": { GET: "listHireJobRequirementSchema" }, "/hire/v1/job_processes": { GET: "listHireJobProcess" }, "/hire/v1/registration_schemas": { GET: "listHireRegistrationSchema" }, "/hire/v1/referral_websites/job_posts": { GET: "listHireReferralWebsiteJobPost" }, "/hire/v1/referral_websites/job_posts/{job_post_id}": { GET: "getHireReferralWebsiteJobPost" }, "/hire/v1/referrals/get_by_application": { GET: "getByApplicationHireReferral" }, "/hire/v1/external_applications": { POST: "createHireExternalApplication" }, "/hire/v1/external_applications/{external_application_id}": { PUT: "updateHireExternalApplication", DELETE: "deleteHireExternalApplication" }, "/hire/v1/external_interviews": { POST: "createHireExternalInterview" }, "/hire/v1/external_interview_assessments": { POST: "createHireExternalInterviewAssessment" }, "/hire/v1/external_background_checks": { POST: "createHireExternalBackgroundCheck" }, "/hire/v1/talents/add_to_folder": { POST: "addToFolderHireTalent" }, "/hire/v1/talent_folders": { GET: "listHireTalentFolder" }, "/hire/v1/talents/batch_get_id": { POST: "batchGetIdHireTalent" }, "/hire/v1/talents": { GET: "listHireTalent" }, "/hire/v1/talent_objects/query": { GET: "queryHireTalentObject" }, "/hire/v1/talents/{talent_id}": { GET: "getHireTalent" }, "/hire/v1/applications": { POST: "createHireApplication", GET: "listHireApplication" }, "/hire/v1/applications/{application_id}/terminate": { POST: "terminateHireApplication" }, "/hire/v1/applications/{application_id}": { GET: "getHireApplication" }, "/hire/v1/evaluations": { GET: "listHireEvaluation" }, "/hire/v1/questionnaires": { GET: "listHireQuestionnaire" }, "/hire/v1/interviews": { GET: "listHireInterview" }, "/hire/v1/offers": { POST: "createHireOffer", GET: "listHireOffer" }, "/hire/v1/offers/{offer_id}": { PUT: "updateHireOffer", GET: "getHireOffer" }, "/hire/v1/applications/{application_id}/offer": { GET: "offerHireApplication" }, "/hire/v1/offers/{offer_id}/offer_status": { PATCH: "offerStatusHireOffer" }, "/hire/v1/offers/{offer_id}/intern_offer_status": { POST: "internOfferStatusHireOffer" }, "/hire/v1/ehr_import_tasks/{ehr_import_task_id}": { PATCH: "patchHireEhrImportTask" }, "/hire/v1/applications/{application_id}/transfer_onboard": { POST: "transferOnboardHireApplication" }, "/hire/v1/employees/{employee_id}": { PATCH: "patchHireEmployee", GET: "getHireEmployee" }, "/hire/v1/employees/get_by_application": { GET: "getByApplicationHireEmployee" }, "/hire/v1/notes": { POST: "createHireNote", GET: "listHireNote" }, "/hire/v1/notes/{note_id}": { PATCH: "patchHireNote", GET: "getHireNote" }, "/hire/v1/resume_sources": { GET: "listHireResumeSource" }, "/hire/v1/eco_account_custom_fields": { POST: "createHireEcoAccountCustomField" }, "/hire/v1/eco_account_custom_fields/batch_update": { PATCH: "batchUpdateHireEcoAccountCustomField" }, "/hire/v1/eco_account_custom_fields/batch_delete": { POST: "batchDeleteHireEcoAccountCustomField" }, "/hire/v1/eco_background_check_custom_fields": { POST: "createHireEcoBackgroundCheckCustomField" }, "/hire/v1/eco_background_check_custom_fields/batch_update": { PATCH: "batchUpdateHireEcoBackgroundCheckCustomField" }, "/hire/v1/eco_background_check_custom_fields/batch_delete": { POST: "batchDeleteHireEcoBackgroundCheckCustomField" }, "/hire/v1/eco_background_check_packages": { POST: "createHireEcoBackgroundCheckPackage" }, "/hire/v1/eco_background_check_packages/batch_update": { PATCH: "batchUpdateHireEcoBackgroundCheckPackage" }, "/hire/v1/eco_background_check_packages/batch_delete": { POST: "batchDeleteHireEcoBackgroundCheckPackage" }, "/hire/v1/eco_background_checks/update_progress": { POST: "updateProgressHireEcoBackgroundCheck" }, "/hire/v1/eco_background_checks/update_result": { POST: "updateResultHireEcoBackgroundCheck" }, "/hire/v1/eco_background_checks/cancel": { POST: "cancelHireEcoBackgroundCheck" }, "/hire/v1/eco_exam_papers": { POST: "createHireEcoExamPaper" }, "/hire/v1/eco_exam_papers/batch_update": { PATCH: "batchUpdateHireEcoExamPaper" }, "/hire/v1/eco_exam_papers/batch_delete": { POST: "batchDeleteHireEcoExamPaper" }, "/hire/v1/eco_exams/{exam_id}/login_info": { POST: "loginInfoHireEcoExam" }, "/hire/v1/eco_exams/{exam_id}/update_result": { POST: "updateResultHireEcoExam" }, "/hire/v1/referral_account": { POST: "createHireReferralAccount" }, "/hire/v1/referral_account/{referral_account_id}/deactivate": { POST: "deactivateHireReferralAccount" }, "/hire/v1/referral_account/{referral_account_id}/withdraw": { POST: "withdrawHireReferralAccount" }, "/hire/v1/referral_account/reconciliation": { POST: "reconciliationHireReferralAccount" }, "/hire/v1/attachments/{attachment_id}": { GET: "getHireAttachment" }, "/hire/v1/attachments/{attachment_id}/preview": { GET: "previewHireAttachment" }, "/okr/v1/periods": { POST: "createOkrPeriod", GET: "listOkrPeriod" }, "/okr/v1/periods/{period_id}": { PATCH: "patchOkrPeriod" }, "/okr/v1/period_rules": { GET: "listOkrPeriodRule" }, "/okr/v1/users/{user_id}/okrs": { GET: "listOkrUserOkr" }, "/okr/v1/okrs/batch_get": { GET: "batchGetOkr" }, "/okr/v1/progress_records": { POST: "createOkrProgressRecord" }, "/okr/v1/progress_records/{progress_id}": { DELETE: "deleteOkrProgressRecord", PUT: "updateOkrProgressRecord", GET: "getOkrProgressRecord" }, "/human_authentication/v1/identities": { POST: "createHumanAuthenticationIdentity" }, "/acs/v1/visitors/{visitor_id}": { DELETE: "deleteAcsVisitor" }, "/acs/v1/visitors": { POST: "createAcsVisitor" }, "/acs/v1/rule_external/device_bind": { POST: "deviceBindAcsRuleExternal" }, "/acs/v1/rule_external": { GET: "getAcsRuleExternal", DELETE: "deleteAcsRuleExternal", POST: "createAcsRuleExternal" }, "/acs/v1/users/{user_id}": { PATCH: "patchAcsUser", GET: "getAcsUser" }, "/acs/v1/users": { GET: "listAcsUser" }, "/acs/v1/users/{user_id}/face": { PUT: "updateAcsUserFace", GET: "getAcsUserFace" }, "/acs/v1/devices": { GET: "listAcsDevice" }, "/acs/v1/access_records": { GET: "listAcsAccessRecord" }, "/acs/v1/access_records/{access_record_id}/access_photo": { GET: "getAcsAccessRecordAccessPhoto" }, "/performance/v1/semesters": { GET: "listPerformanceSemester" }, "/performance/v1/stage_tasks/find_by_user_list": { POST: "findByUserListPerformanceStageTask" }, "/performance/v1/stage_tasks/find_by_page": { POST: "findByPagePerformanceStageTask" }, "/performance/v1/review_datas/query": { POST: "queryPerformanceReviewData" }, "/lingo/v1/drafts": { POST: "createLingoDraft" }, "/lingo/v1/drafts/{draft_id}": { PUT: "updateLingoDraft" }, "/lingo/v1/entities": { POST: "createLingoEntity", GET: "listLingoEntity" }, "/lingo/v1/entities/{entity_id}": { PUT: "updateLingoEntity", DELETE: "deleteLingoEntity", GET: "getLingoEntity" }, "/lingo/v1/entities/match": { POST: "matchLingoEntity" }, "/lingo/v1/entities/search": { POST: "searchLingoEntity" }, "/lingo/v1/entities/highlight": { POST: "highlightLingoEntity" }, "/lingo/v1/classifications": { GET: "listLingoClassification" }, "/lingo/v1/repos": { GET: "listLingoRepo" }, "/lingo/v1/files/{file_token}/download": { GET: "downloadLingoFile" }, "/security_and_compliance/v1/openapi_logs/list_data": { POST: "listDataSecurityAndComplianceOpenapiLog" }, "/admin/v1/audit_infos": { GET: "listAdminAuditInfo" }, "/minutes/v1/minutes/{minute_token}/statistics": { GET: "getMinutesMinuteStatistics" }, "/minutes/v1/minutes/{minute_token}": { GET: "getMinutesMinute" }, "/workplace/v1/workplace_access_data/search": { POST: "searchWorkplaceWorkplaceAccessData" }, "/workplace/v1/custom_workplace_access_data/search": { POST: "searchWorkplaceCustomWorkplaceAccessData" }, "/workplace/v1/workplace_block_access_data/search": { POST: "searchWorkplaceWorkplaceBlockAccessData" }, "/application/v5/applications/favourite": { GET: "favouriteApplication" }, "/application/v5/applications/recommend": { GET: "recommendApplication" }, "/application/v6/app_recommend_rules": { GET: "listApplicationAppRecommendRule" }, "/mdm/v1/user_auth_data_relations/bind": { POST: "bindMdmUserAuthDataRelation" }, "/mdm/v1/user_auth_data_relations/unbind": { POST: "unbindMdmUserAuthDataRelation" }, "/report/v1/rules/query": { GET: "queryReportRule" }, "/report/v1/rules/{rule_id}/views/remove": { POST: "removeReportRuleView" }, "/report/v1/tasks/query": { POST: "queryReportTask" }, "/authen/v1/access_token": { POST: "createAuthenAccessToken" }, "/authen/v1/refresh_access_token": { POST: "createAuthenRefreshAccessToken" }, "/baike/v1/drafts": { POST: "createBaikeDraft" }, "/baike/v1/drafts/{draft_id}": { PUT: "updateBaikeDraft" }, "/baike/v1/entities": { POST: "createBaikeEntity", GET: "listBaikeEntity" }, "/baike/v1/entities/{entity_id}": { PUT: "updateBaikeEntity", GET: "getBaikeEntity" }, "/baike/v1/entities/match": { POST: "matchBaikeEntity" }, "/baike/v1/entities/search": { POST: "searchBaikeEntity" }, "/baike/v1/entities/highlight": { POST: "highlightBaikeEntity" }, "/baike/v1/entities/extract": { POST: "extractBaikeEntity" }, "/baike/v1/classifications": { GET: "listBaikeClassification" }, "/baike/v1/files/{file_token}/download": { GET: "downloadBaikeFile" }, "/hire/v1/applications/{application_id}/interviews": { GET: "listHireApplicationInterview" }, "/hire/v1/jobs/{job_id}/managers/{manager_id}": { GET: "getHireJobManager" }, "/hire/v1/offer_schemas/{offer_schema_id}": { GET: "getHireOfferSchema" }, "/corehr/v1/subregions": { GET: "listCorehrSubregion" }, "/corehr/v1/subregions/{subregion_id}": { GET: "getCorehrSubregion" }, "/corehr/v1/subdivisions": { GET: "listCorehrSubdivision" }, "/corehr/v1/subdivisions/{subdivision_id}": { GET: "getCorehrSubdivision" }, "/corehr/v1/country_regions": { GET: "listCorehrCountryRegion" }, "/corehr/v1/country_regions/{country_region_id}": { GET: "getCorehrCountryRegion" }, "/corehr/v1/currencies": { GET: "listCorehrCurrency" }, "/corehr/v1/currencies/{currency_id}": { GET: "getCorehrCurrency" }, "/vc/v1/room_configs/set_checkboard_access_code": { POST: "setCheckboardAccessCodeVcRoomConfig" }, "/vc/v1/room_configs/set_room_access_code": { POST: "setRoomAccessCodeVcRoomConfig" }, "/vc/v1/room_configs/query": { GET: "queryVcRoomConfig" }, "/vc/v1/room_configs/set": { POST: "setVcRoomConfig" } }); Internal.define({ "/im/v1/images": { POST: "createImImage" }, "/im/v1/files": { POST: "createImFile" }, "/drive/v1/medias/upload_all": { POST: "uploadAllDrivev1Media" }, "/drive/v1/medias/upload_part": { POST: "uploadPartDrivev1Media" }, "/drive/v1/files/upload_all": { POST: "uploadAllDrivev1File" }, "/drive/v1/files/upload_part": { POST: "uploadPartDrivev1File" }, "/attendance/v1/files/upload": { POST: "uploadAttendanceFile" }, "/task/v2/attachments/upload": { POST: "uploadTaskv2Attachment" }, "/document_ai/v1/resume/parse": { POST: "parseDocumentAiResume" }, "/document_ai/v1/vehicle_invoice/recognize": { POST: "recognizeDocumentAiVehicleInvoice" }, "/document_ai/v1/health_certificate/recognize": { POST: "recognizeDocumentAiHealthCertificate" }, "/document_ai/v1/hkm_mainland_travel_permit/recognize": { POST: "recognizeDocumentAiHkmMainlandTravelPermit" }, "/document_ai/v1/tw_mainland_travel_permit/recognize": { POST: "recognizeDocumentAiTwMainlandTravelPermit" }, "/document_ai/v1/chinese_passport/recognize": { POST: "recognizeDocumentAiChinesePassport" }, "/document_ai/v1/bank_card/recognize": { POST: "recognizeDocumentAiBankCard" }, "/document_ai/v1/vehicle_license/recognize": { POST: "recognizeDocumentAiVehicleLicense" }, "/document_ai/v1/train_invoice/recognize": { POST: "recognizeDocumentAiTrainInvoice" }, "/document_ai/v1/taxi_invoice/recognize": { POST: "recognizeDocumentAiTaxiInvoice" }, "/document_ai/v1/id_card/recognize": { POST: "recognizeDocumentAiIdCard" }, "/document_ai/v1/food_produce_license/recognize": { POST: "recognizeDocumentAiFoodProduceLicense" }, "/document_ai/v1/food_manage_license/recognize": { POST: "recognizeDocumentAiFoodManageLicense" }, "/document_ai/v1/driving_license/recognize": { POST: "recognizeDocumentAiDrivingLicense" }, "/document_ai/v1/vat_invoice/recognize": { POST: "recognizeDocumentAiVatInvoice" }, "/document_ai/v1/business_license/recognize": { POST: "recognizeDocumentAiBusinessLicense" }, "/document_ai/v1/contract/field_extraction": { POST: "fieldExtractionDocumentAiContract" }, "/document_ai/v1/business_card/recognize": { POST: "recognizeDocumentAiBusinessCard" }, "/admin/v1/badge_images": { POST: "createAdminBadgeImage" }, "/corehr/v1/persons/upload": { POST: "uploadCorehrPerson" }, "/okr/v1/images/upload": { POST: "uploadOkrImage" }, "/lingo/v1/files/upload": { POST: "uploadLingoFile" }, "/baike/v1/files/upload": { POST: "uploadBaikeFile" } }, { multipart: true }); // src/bot.ts var LarkBot = class extends import_core5.Bot { static { __name(this, "LarkBot"); } static inject = ["server", "http"]; static MessageEncoder = LarkMessageEncoder; _token; _refresher; http; assetsQuester; internal; constructor(ctx, config) { super(ctx, config, "lark"); if (!config.selfUrl && !ctx.server.config.selfUrl) { this.logger.warn("selfUrl is not set, some features may not work"); } this.http = ctx.http.extend({ endpoint: config.endpoint }); this.assetsQuester = ctx.http; this.internal = new Internal(this); ctx.plugin(HttpServer, this); } get appId() { return this.config.appId; } async initialize() { await this.refreshToken(); const { bot } = await this.http.get("/bot/v3/info"); this.selfId = bot.open_id; this.user.avatar = bot.avatar_url; this.user.name = bot.app_name; this.online(); } async refreshToken() { const { tenant_access_token: token } = await this.internal.tenantAccessTokenInternalAuth({ app_id: this.config.appId, app_secret: this.config.appSecret }); this.logger.debug("refreshed token %s", token); this.token = token; if (this._refresher) clearTimeout(this._refresher); this._refresher = setTimeout(() => this.refreshToken(), 3600 * 1e3); this.online(); } get token() { return this._token; } set token(v) { this._token = v; this.http.config.headers.Authorization = `Bearer ${v}`; } async editMessage(channelId, messageId, content) { await this.internal.updateImMessage(messageId, { content: import_core5.h.normalize(content).join(""), msg_type: "text" }); } async deleteMessage(channelId, messageId) { await this.internal.deleteImMessage(messageId); } async getMessage(channelId, messageId, recursive = true) { const data = await this.internal.getImMessage(messageId); const message = await decodeMessage(this, data.items[0], recursive); const im = await this.internal.getImChat(channelId); message.channel.type = im.chat_mode === "p2p" ? import_core5.Universal.Channel.Type.DIRECT : import_core5.Universal.Channel.Type.TEXT; return message; } async getMessageList(channelId, before) { const messages = await this.internal.listImMessage({ container_id_type: "chat", container_id: channelId, page_token: before }); const data = await Promise.all(messages.items.reverse().map((data2) => decodeMessage(this, data2))); return { data, next: data[0]?.id }; } async getUser(userId, guildId) { const data = await this.internal.getContactUser(userId); return decodeUser(data.user); } async getChannel(channelId) { const chat = await this.internal.getImChat(channelId); return decodeChannel(channelId, chat); } async getChannelList(guildId) { return { data: [await this.getChannel(guildId)] }; } async getGuild(guildId) { const chat = await this.internal.getImChat(guildId); return decodeGuild(chat); } async getGuildList(after) { const chats = await this.internal.listImChat({ page_token: after }); return { data: chats.items.map(decodeGuild), next: chats.page_token }; } async getGuildMemberList(guildId, after) { const members = await this.internal.getImChatMembers(guildId, { page_token: after }); const data = members.items.map((v) => ({ user: { id: v.member_id, name: v.name }, name: v.name })); return { data, next: members.page_token }; } }; ((LarkBot2) => { LarkBot2.Config = import_core5.Schema.intersect([ import_core5.Schema.object({ platform: import_core5.Schema.union(["feishu", "lark"]).required().description("平台名称。"), appId: import_core5.Schema.string().required().description("机器人的应用 ID。"), appSecret: import_core5.Schema.string().role("secret").required().description("机器人的应用密钥。"), encryptKey: import_core5.Schema.string().role("secret").description("机器人的 Encrypt Key。"), verificationToken: import_core5.Schema.string().description("事件推送的验证令牌。") }), import_core5.Schema.union([ import_core5.Schema.intersect([ import_core5.Schema.object({ platform: import_core5.Schema.const("feishu").required() }), import_core5.HTTP.createConfig("https://open.feishu.cn/open-apis/"), HttpServer.createConfig("/feishu") ]), import_core5.Schema.intersect([ import_core5.Schema.object({ platform: import_core5.Schema.const("lark").required() }), import_core5.HTTP.createConfig("https://open.larksuite.com/open-apis/"), HttpServer.createConfig("/lark") ]) ]) ]); })(LarkBot || (LarkBot = {})); // src/index.ts var src_default = LarkBot; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { Feishu, FeishuBot, Lark, LarkBot }); //# sourceMappingURL=index.cjs.map