@oomol-lab/open-connector 1.9.0 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/open-connector/catalog/apps/agentearth.json +441 -0
- package/assets/open-connector/catalog/apps/appgrowing_mcp.json +863 -0
- package/assets/open-connector/catalog/apps/arcmira.json +610 -0
- package/assets/open-connector/catalog/apps/bainiu.json +654 -0
- package/assets/open-connector/catalog/apps/chaport.json +331 -0
- package/assets/open-connector/catalog/apps/cnb.json +1408 -0
- package/assets/open-connector/catalog/apps/crtsh.json +123 -0
- package/assets/open-connector/catalog/apps/eastmoney_miaoxiang.json +406 -0
- package/assets/open-connector/catalog/apps/fastmoss_mcp.json +876 -876
- package/assets/open-connector/catalog/apps/ftshare.json +1162 -0
- package/assets/open-connector/catalog/apps/fusion-api.json +143 -0
- package/assets/open-connector/catalog/apps/fxbaogao.json +308 -0
- package/assets/open-connector/catalog/apps/github.json +38 -3
- package/assets/open-connector/catalog/apps/hrmos_kintai.json +7519 -0
- package/assets/open-connector/catalog/apps/humor_api.json +351 -0
- package/assets/open-connector/catalog/apps/kaonavi.json +1723 -0
- package/assets/open-connector/catalog/apps/linear_mcp.json +882 -22
- package/assets/open-connector/catalog/apps/listinggood.json +362 -0
- package/assets/open-connector/catalog/apps/notion_mcp.json +338 -1
- package/assets/open-connector/catalog/apps/outlook.json +414 -0
- package/assets/open-connector/catalog/apps/porteden.json +1258 -0
- package/assets/open-connector/catalog/apps/qiuxiaoce.json +915 -0
- package/assets/open-connector/catalog/apps/qqmusic.json +1834 -0
- package/assets/open-connector/catalog/apps/rakuraku_seisan.json +217 -0
- package/assets/open-connector/catalog/apps/redfox.json +9661 -897
- package/assets/open-connector/catalog/apps/salesforce.json +4907 -0
- package/assets/open-connector/catalog/apps/sansan.json +4594 -0
- package/assets/open-connector/catalog/apps/smarthr.json +8071 -0
- package/assets/open-connector/catalog/apps/smooth.json +914 -0
- package/assets/open-connector/catalog/apps/tapd.json +727 -0
- package/assets/open-connector/catalog/apps/tencent_meeting_mcp.json +1301 -0
- package/assets/open-connector/catalog/apps/threatfox.json +203 -0
- package/assets/open-connector/catalog/apps/tradebee.json +915 -0
- package/assets/open-connector/catalog/apps/twittrapi.json +4914 -0
- package/assets/open-connector/catalog/apps/urlhaus.json +246 -0
- package/assets/open-connector/catalog/apps/weread.json +1514 -0
- package/assets/open-connector/catalog/apps/whatsapp.json +12 -0
- package/assets/open-connector/catalog/apps/zhiliaobiaoxun.json +812 -0
- package/assets/open-connector/catalog/apps-index.json +1 -1
- package/package.json +2 -1
- package/src/connection-service.js +55 -11
- package/src/core/provider-error-codes.d.ts +9 -0
- package/src/core/provider-error-codes.js +13 -0
- package/src/core/request.d.ts +2 -0
- package/src/core/request.js +11 -2
- package/src/mail/imap-smtp/protocol.js +4 -3
- package/src/oauth/oauth-flow-service.js +1 -0
- package/src/oauth/oauth-token.d.ts +2 -0
- package/src/providers/17track/runtime.js +17 -20
- package/src/providers/action-contracts.generated.d.ts +36 -6
- package/src/providers/agentearth/actions.d.ts +2 -0
- package/src/providers/agentearth/actions.js +100 -0
- package/src/providers/agentearth/executors.d.ts +4 -0
- package/src/providers/agentearth/executors.js +109 -0
- package/src/providers/appgrowing_mcp/actions.d.ts +2 -0
- package/src/providers/appgrowing_mcp/actions.js +175 -0
- package/src/providers/appgrowing_mcp/executors.d.ts +4 -0
- package/src/providers/appgrowing_mcp/executors.js +66 -0
- package/src/providers/arcmira/executors.d.ts +3 -0
- package/src/providers/arcmira/executors.js +8 -0
- package/src/providers/arcmira/runtime.d.ts +6 -0
- package/src/providers/arcmira/runtime.js +41 -0
- package/src/providers/bainiu/actions.d.ts +2 -0
- package/src/providers/bainiu/actions.js +108 -0
- package/src/providers/bainiu/executors.d.ts +4 -0
- package/src/providers/bainiu/executors.js +113 -0
- package/src/providers/baixiao/executors.js +1 -1
- package/src/providers/bing_webmaster/executors.js +1 -1
- package/src/providers/chaport/actions.d.ts +2 -0
- package/src/providers/chaport/actions.js +70 -0
- package/src/providers/chaport/executors.d.ts +4 -0
- package/src/providers/chaport/executors.js +128 -0
- package/src/providers/clickup/runtime.js +49 -52
- package/src/providers/cnb/actions.d.ts +2 -0
- package/src/providers/cnb/actions.js +341 -0
- package/src/providers/cnb/executors.d.ts +4 -0
- package/src/providers/cnb/executors.js +135 -0
- package/src/providers/coupontools/runtime.js +11 -14
- package/src/providers/crtsh/executors.d.ts +3 -0
- package/src/providers/crtsh/executors.js +19 -0
- package/src/providers/crtsh/runtime.d.ts +17 -0
- package/src/providers/crtsh/runtime.js +84 -0
- package/src/providers/eastmoney_miaoxiang/actions.d.ts +2 -0
- package/src/providers/eastmoney_miaoxiang/actions.js +95 -0
- package/src/providers/eastmoney_miaoxiang/executors.d.ts +4 -0
- package/src/providers/eastmoney_miaoxiang/executors.js +81 -0
- package/src/providers/fastmoss_mcp/actions-content.d.ts +2 -0
- package/src/providers/fastmoss_mcp/actions-content.js +140 -0
- package/src/providers/fastmoss_mcp/actions-creator.d.ts +2 -0
- package/src/providers/fastmoss_mcp/actions-creator.js +154 -0
- package/src/providers/fastmoss_mcp/actions-product.d.ts +2 -0
- package/src/providers/fastmoss_mcp/actions-product.js +167 -0
- package/src/providers/fastmoss_mcp/actions-research.d.ts +2 -0
- package/src/providers/fastmoss_mcp/actions-research.js +174 -0
- package/src/providers/fastmoss_mcp/actions-shop.d.ts +2 -0
- package/src/providers/fastmoss_mcp/actions-shop.js +142 -0
- package/src/providers/fastmoss_mcp/actions.js +11 -12
- package/src/providers/fastmoss_mcp/schemas.d.ts +51 -0
- package/src/providers/fastmoss_mcp/schemas.js +52 -0
- package/src/providers/ftshare/actions.d.ts +2 -0
- package/src/providers/ftshare/actions.js +124 -0
- package/src/providers/ftshare/executors.d.ts +4 -0
- package/src/providers/ftshare/executors.js +102 -0
- package/src/providers/fusion-api/operations.js +37 -0
- package/src/providers/fxbaogao/actions.d.ts +2 -0
- package/src/providers/fxbaogao/actions.js +74 -0
- package/src/providers/fxbaogao/executors.d.ts +4 -0
- package/src/providers/fxbaogao/executors.js +155 -0
- package/src/providers/github/app-installation.d.ts +37 -0
- package/src/providers/github/app-installation.js +233 -0
- package/src/providers/github/executors.js +93 -15
- package/src/providers/github/runtime-repository.js +21 -1
- package/src/providers/github/runtime-shared.d.ts +2 -0
- package/src/providers/github/runtime-shared.js +1 -0
- package/src/providers/googledrive/runtime-request.js +3 -3
- package/src/providers/hrmos_kintai/actions.d.ts +2 -0
- package/src/providers/hrmos_kintai/actions.js +139 -0
- package/src/providers/hrmos_kintai/attendance-actions.d.ts +2 -0
- package/src/providers/hrmos_kintai/attendance-actions.js +276 -0
- package/src/providers/hrmos_kintai/business-actions.d.ts +2 -0
- package/src/providers/hrmos_kintai/business-actions.js +143 -0
- package/src/providers/hrmos_kintai/business-schemas.d.ts +4 -0
- package/src/providers/hrmos_kintai/business-schemas.js +320 -0
- package/src/providers/hrmos_kintai/executors.d.ts +4 -0
- package/src/providers/hrmos_kintai/executors.js +61 -0
- package/src/providers/hrmos_kintai/export-actions.d.ts +2 -0
- package/src/providers/hrmos_kintai/export-actions.js +58 -0
- package/src/providers/hrmos_kintai/operations.d.ts +9 -0
- package/src/providers/hrmos_kintai/operations.js +278 -0
- package/src/providers/hrmos_kintai/runtime.d.ts +10 -0
- package/src/providers/hrmos_kintai/runtime.js +217 -0
- package/src/providers/hrmos_kintai/schemas.d.ts +10 -0
- package/src/providers/hrmos_kintai/schemas.js +70 -0
- package/src/providers/humor_api/actions.d.ts +2 -0
- package/src/providers/humor_api/actions.js +96 -0
- package/src/providers/humor_api/executors.d.ts +4 -0
- package/src/providers/humor_api/executors.js +76 -0
- package/src/providers/kaonavi/actions.d.ts +4 -0
- package/src/providers/kaonavi/actions.js +144 -0
- package/src/providers/kaonavi/additional-actions.d.ts +10 -0
- package/src/providers/kaonavi/additional-actions.js +203 -0
- package/src/providers/kaonavi/executors.d.ts +4 -0
- package/src/providers/kaonavi/executors.js +69 -0
- package/src/providers/kaonavi/runtime.d.ts +4 -0
- package/src/providers/kaonavi/runtime.js +69 -0
- package/src/providers/linear_mcp/actions.d.ts +14 -0
- package/src/providers/linear_mcp/actions.js +134 -0
- package/src/providers/linear_mcp/runtime-mcp.d.ts +7 -1
- package/src/providers/linear_mcp/runtime-mcp.js +140 -28
- package/src/providers/linkfox/runtime.js +48 -51
- package/src/providers/listinggood/actions.d.ts +2 -0
- package/src/providers/listinggood/actions.js +95 -0
- package/src/providers/listinggood/executors.d.ts +4 -0
- package/src/providers/listinggood/executors.js +99 -0
- package/src/providers/mcp-tools.d.ts +3 -0
- package/src/providers/mcp-tools.js +5 -4
- package/src/providers/notion_mcp/executors.js +53 -24
- package/src/providers/notion_mcp/mcp-response.d.ts +26 -0
- package/src/providers/notion_mcp/mcp-response.js +95 -0
- package/src/providers/omise/executors.js +1 -1
- package/src/providers/outlook/executors.js +35 -2
- package/src/providers/porteden/actions.d.ts +2 -0
- package/src/providers/porteden/actions.js +162 -0
- package/src/providers/porteden/executors.d.ts +4 -0
- package/src/providers/porteden/executors.js +140 -0
- package/src/providers/provider-runtime.d.ts +3 -2
- package/src/providers/pushover/runtime.js +28 -31
- package/src/providers/qianfan/runtime.js +16 -19
- package/src/providers/qiuxiaoce/actions.d.ts +2 -0
- package/src/providers/qiuxiaoce/actions.js +248 -0
- package/src/providers/qiuxiaoce/executors.d.ts +4 -0
- package/src/providers/qiuxiaoce/executors.js +76 -0
- package/src/providers/qiuxiaoce/routes.d.ts +1 -0
- package/src/providers/qiuxiaoce/routes.js +20 -0
- package/src/providers/qqmusic/actions.d.ts +2 -0
- package/src/providers/qqmusic/actions.js +229 -0
- package/src/providers/qqmusic/executors.d.ts +4 -0
- package/src/providers/qqmusic/executors.js +92 -0
- package/src/providers/qqmusic/report-schema.d.ts +4 -0
- package/src/providers/qqmusic/report-schema.js +119 -0
- package/src/providers/rakuraku_seisan/actions.d.ts +2 -0
- package/src/providers/rakuraku_seisan/actions.js +50 -0
- package/src/providers/rakuraku_seisan/executors.d.ts +4 -0
- package/src/providers/rakuraku_seisan/executors.js +40 -0
- package/src/providers/rakuraku_seisan/runtime.d.ts +8 -0
- package/src/providers/rakuraku_seisan/runtime.js +251 -0
- package/src/providers/redfox/actions-account.d.ts +2 -0
- package/src/providers/redfox/actions-account.js +24 -0
- package/src/providers/redfox/actions-autohome.d.ts +2 -0
- package/src/providers/redfox/actions-autohome.js +51 -0
- package/src/providers/redfox/actions-baijiahao.d.ts +2 -0
- package/src/providers/redfox/actions-baijiahao.js +58 -0
- package/src/providers/redfox/actions-bilibili.d.ts +2 -0
- package/src/providers/redfox/actions-bilibili.js +67 -0
- package/src/providers/redfox/actions-dongchedi.d.ts +2 -0
- package/src/providers/redfox/actions-dongchedi.js +49 -0
- package/src/providers/redfox/actions-douyin.d.ts +2 -0
- package/src/providers/redfox/actions-douyin.js +297 -0
- package/src/providers/redfox/actions-generation.d.ts +2 -0
- package/src/providers/redfox/actions-generation.js +293 -0
- package/src/providers/redfox/actions-instagram.d.ts +2 -0
- package/src/providers/redfox/actions-instagram.js +49 -0
- package/src/providers/redfox/actions-kuaishou.d.ts +2 -0
- package/src/providers/redfox/actions-kuaishou.js +53 -0
- package/src/providers/redfox/actions-search.d.ts +2 -0
- package/src/providers/redfox/actions-search.js +125 -0
- package/src/providers/redfox/actions-tiktok.d.ts +2 -0
- package/src/providers/redfox/actions-tiktok.js +136 -0
- package/src/providers/redfox/actions-tools.d.ts +2 -0
- package/src/providers/redfox/actions-tools.js +151 -0
- package/src/providers/redfox/actions-toutiao.d.ts +2 -0
- package/src/providers/redfox/actions-toutiao.js +68 -0
- package/src/providers/redfox/actions-transcription.d.ts +2 -0
- package/src/providers/redfox/actions-transcription.js +165 -0
- package/src/providers/redfox/actions-wechat-channel.d.ts +2 -0
- package/src/providers/redfox/actions-wechat-channel.js +63 -0
- package/src/providers/redfox/actions-wechat.d.ts +2 -0
- package/src/providers/redfox/actions-wechat.js +302 -0
- package/src/providers/redfox/actions-weibo.d.ts +2 -0
- package/src/providers/redfox/actions-weibo.js +61 -0
- package/src/providers/redfox/actions-x.d.ts +2 -0
- package/src/providers/redfox/actions-x.js +126 -0
- package/src/providers/redfox/actions-xiaohongshu.d.ts +2 -0
- package/src/providers/redfox/actions-xiaohongshu.js +244 -0
- package/src/providers/redfox/actions-yiche.d.ts +2 -0
- package/src/providers/redfox/actions-yiche.js +59 -0
- package/src/providers/redfox/actions-youtube.d.ts +2 -0
- package/src/providers/redfox/actions-youtube.js +64 -0
- package/src/providers/redfox/actions-zhihu.d.ts +2 -0
- package/src/providers/redfox/actions-zhihu.js +26 -0
- package/src/providers/redfox/actions.d.ts +2 -0
- package/src/providers/redfox/actions.js +49 -0
- package/src/providers/redfox/executors.d.ts +2 -14
- package/src/providers/redfox/executors.js +28 -551
- package/src/providers/redfox/routes.d.ts +11 -0
- package/src/providers/redfox/routes.js +329 -0
- package/src/providers/redfox/runtime.d.ts +6 -0
- package/src/providers/redfox/runtime.js +151 -0
- package/src/providers/redfox/schemas.d.ts +9 -0
- package/src/providers/redfox/schemas.js +40 -0
- package/src/providers/registry.generated.js +30 -0
- package/src/providers/salesforce/context.d.ts +16 -0
- package/src/providers/salesforce/context.js +58 -0
- package/src/providers/salesforce/executors.d.ts +5 -0
- package/src/providers/salesforce/executors.js +54 -0
- package/src/providers/salesforce/media.d.ts +9 -0
- package/src/providers/salesforce/media.js +66 -0
- package/src/providers/salesforce/oauth.d.ts +2 -0
- package/src/providers/salesforce/oauth.js +89 -0
- package/src/providers/salesforce/runtime-analytics.d.ts +2 -0
- package/src/providers/salesforce/runtime-analytics.js +60 -0
- package/src/providers/salesforce/runtime-automation.d.ts +2 -0
- package/src/providers/salesforce/runtime-automation.js +64 -0
- package/src/providers/salesforce/runtime-base.d.ts +2 -0
- package/src/providers/salesforce/runtime-base.js +51 -0
- package/src/providers/salesforce/runtime-bulk.d.ts +2 -0
- package/src/providers/salesforce/runtime-bulk.js +98 -0
- package/src/providers/salesforce/runtime-data.d.ts +2 -0
- package/src/providers/salesforce/runtime-data.js +207 -0
- package/src/providers/salesforce/runtime-files.d.ts +2 -0
- package/src/providers/salesforce/runtime-files.js +108 -0
- package/src/providers/salesforce/transport.d.ts +9 -0
- package/src/providers/salesforce/transport.js +65 -0
- package/src/providers/sansan/actions.d.ts +2 -0
- package/src/providers/sansan/actions.js +165 -0
- package/src/providers/sansan/admin-actions.d.ts +2 -0
- package/src/providers/sansan/admin-actions.js +181 -0
- package/src/providers/sansan/admin.d.ts +2 -0
- package/src/providers/sansan/admin.js +42 -0
- package/src/providers/sansan/business-actions.d.ts +2 -0
- package/src/providers/sansan/business-actions.js +160 -0
- package/src/providers/sansan/business.d.ts +2 -0
- package/src/providers/sansan/business.js +51 -0
- package/src/providers/sansan/executors.d.ts +4 -0
- package/src/providers/sansan/executors.js +59 -0
- package/src/providers/sansan/file-schema.d.ts +2 -0
- package/src/providers/sansan/file-schema.js +8 -0
- package/src/providers/sansan/files.d.ts +11 -0
- package/src/providers/sansan/files.js +49 -0
- package/src/providers/sansan/organization-actions.d.ts +2 -0
- package/src/providers/sansan/organization-actions.js +198 -0
- package/src/providers/sansan/organization-columns.d.ts +2 -0
- package/src/providers/sansan/organization-columns.js +33 -0
- package/src/providers/sansan/organization.d.ts +2 -0
- package/src/providers/sansan/organization.js +88 -0
- package/src/providers/sansan/read.d.ts +2 -0
- package/src/providers/sansan/read.js +25 -0
- package/src/providers/sansan/request.d.ts +22 -0
- package/src/providers/sansan/request.js +94 -0
- package/src/providers/sansan/schemas.d.ts +7 -0
- package/src/providers/sansan/schemas.js +72 -0
- package/src/providers/shopee/runtime.d.ts +33 -29
- package/src/providers/shopee/runtime.js +166 -169
- package/src/providers/smarthr/actions.d.ts +2 -0
- package/src/providers/smarthr/actions.js +286 -0
- package/src/providers/smarthr/employee-runtime.d.ts +1 -0
- package/src/providers/smarthr/employee-runtime.js +63 -0
- package/src/providers/smarthr/employee-schema.d.ts +3 -0
- package/src/providers/smarthr/employee-schema.js +222 -0
- package/src/providers/smarthr/executors.d.ts +4 -0
- package/src/providers/smarthr/executors.js +35 -0
- package/src/providers/smarthr/pagination.d.ts +1 -0
- package/src/providers/smarthr/pagination.js +84 -0
- package/src/providers/smarthr/resource-routes.d.ts +16 -0
- package/src/providers/smarthr/resource-routes.js +163 -0
- package/src/providers/smarthr/runtime.d.ts +13 -0
- package/src/providers/smarthr/runtime.js +242 -0
- package/src/providers/smarthr/supplemental-actions.d.ts +2 -0
- package/src/providers/smarthr/supplemental-actions.js +541 -0
- package/src/providers/smooth/actions.d.ts +2 -0
- package/src/providers/smooth/actions.js +138 -0
- package/src/providers/smooth/executors.d.ts +4 -0
- package/src/providers/smooth/executors.js +102 -0
- package/src/providers/tapd/actions.d.ts +8 -0
- package/src/providers/tapd/actions.js +89 -0
- package/src/providers/tapd/executors.d.ts +4 -0
- package/src/providers/tapd/executors.js +137 -0
- package/src/providers/teable/runtime.js +12 -15
- package/src/providers/tencent_meeting_mcp/actions.d.ts +2 -0
- package/src/providers/tencent_meeting_mcp/actions.js +420 -0
- package/src/providers/tencent_meeting_mcp/executors.d.ts +4 -0
- package/src/providers/tencent_meeting_mcp/executors.js +117 -0
- package/src/providers/threatfox/executors.d.ts +4 -0
- package/src/providers/threatfox/executors.js +40 -0
- package/src/providers/threatfox/runtime.d.ts +15 -0
- package/src/providers/threatfox/runtime.js +128 -0
- package/src/providers/ticket_tailor/runtime.js +1 -1
- package/src/providers/ticketmaster/runtime.js +3 -6
- package/src/providers/timelinesai/runtime.js +13 -16
- package/src/providers/tradebee/actions.d.ts +2 -0
- package/src/providers/tradebee/actions.js +176 -0
- package/src/providers/tradebee/executors.d.ts +4 -0
- package/src/providers/tradebee/executors.js +83 -0
- package/src/providers/twittrapi/executors.d.ts +4 -0
- package/src/providers/twittrapi/executors.js +17 -0
- package/src/providers/twittrapi/runtime.d.ts +12 -0
- package/src/providers/twittrapi/runtime.js +203 -0
- package/src/providers/urlhaus/executors.d.ts +4 -0
- package/src/providers/urlhaus/executors.js +40 -0
- package/src/providers/urlhaus/runtime.d.ts +15 -0
- package/src/providers/urlhaus/runtime.js +142 -0
- package/src/providers/wangdian/runtime.js +16 -19
- package/src/providers/weread/actions.d.ts +2 -0
- package/src/providers/weread/actions.js +424 -0
- package/src/providers/weread/executors.d.ts +4 -0
- package/src/providers/weread/executors.js +98 -0
- package/src/providers/whatsapp/runtime.js +6 -1
- package/src/providers/workast/runtime.js +12 -17
- package/src/providers/youzan/runtime.js +21 -24
- package/src/providers/zenkit/runtime.js +13 -19
- package/src/providers/zhiliaobiaoxun/actions.d.ts +2 -0
- package/src/providers/zhiliaobiaoxun/actions.js +138 -0
- package/src/providers/zhiliaobiaoxun/executors.d.ts +4 -0
- package/src/providers/zhiliaobiaoxun/executors.js +78 -0
- package/src/server/api/auth.d.ts +2 -0
- package/src/server/api/auth.js +2 -1
- package/src/server/api/console-catalog-routes.d.ts +17 -0
- package/src/server/api/console-catalog-routes.js +88 -0
- package/src/server/api/console-oauth-routes.d.ts +18 -0
- package/src/server/api/console-oauth-routes.js +298 -0
- package/src/server/api/docs-routes.d.ts +12 -0
- package/src/server/api/docs-routes.js +38 -0
- package/src/server/api/http-utils.d.ts +1 -0
- package/src/server/api/http-utils.js +8 -0
- package/src/server/api/marketplace-routes.d.ts +7 -0
- package/src/server/api/marketplace-routes.js +62 -0
- package/src/server/api/mcp-routes.d.ts +18 -0
- package/src/server/api/mcp-routes.js +37 -0
- package/src/server/api/policy-routes.d.ts +13 -0
- package/src/server/api/policy-routes.js +50 -0
- package/src/server/api/policy-snapshot.d.ts +14 -0
- package/src/server/api/policy-snapshot.js +30 -0
- package/src/server/api/run-log-routes.d.ts +7 -0
- package/src/server/api/run-log-routes.js +70 -0
- package/src/server/api/runtime-api.d.ts +0 -7
- package/src/server/api/runtime-api.js +0 -13
- package/src/server/api/runtime-app-routes.d.ts +10 -0
- package/src/server/api/runtime-app-routes.js +72 -0
- package/src/server/api/runtime-catalog-routes.d.ts +37 -0
- package/src/server/api/runtime-catalog-routes.js +133 -0
- package/src/server/api/runtime-execution-routes.d.ts +16 -0
- package/src/server/api/runtime-execution-routes.js +198 -0
- package/src/server/api/saas-oauth-routes.d.ts +9 -0
- package/src/server/api/saas-oauth-routes.js +27 -0
- package/src/server/api/saas-project-routes.d.ts +7 -0
- package/src/server/api/saas-project-routes.js +16 -0
- package/src/server/api/transit-file-routes.d.ts +9 -0
- package/src/server/api/transit-file-routes.js +49 -0
- package/src/server/api/trigger-routes.d.ts +15 -0
- package/src/server/api/trigger-routes.js +48 -0
- package/src/server/connect-app.d.ts +1 -0
- package/src/server/connect-app.js +3 -1
- package/src/server/connect-server.d.ts +3 -54
- package/src/server/connect-server.js +95 -1148
- package/src/providers/fastmoss_mcp/official-tools.json +0 -2922
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { s } from "../../core/json-schema.js";
|
|
2
|
+
import { defineProviderAction } from "../../core/provider-definition.js";
|
|
3
|
+
import { sansanAdminActions } from "./admin-actions.js";
|
|
4
|
+
import { sansanBusinessActions } from "./business-actions.js";
|
|
5
|
+
import { sansanOrganizationActions } from "./organization-actions.js";
|
|
6
|
+
import { businessCardSchema, reportPageSchema, businessCardPageSchema, tagPageSchema, userSchema } from "./schemas.js";
|
|
7
|
+
export const sansanActions = [
|
|
8
|
+
...sansanBusinessActions,
|
|
9
|
+
...sansanOrganizationActions,
|
|
10
|
+
...sansanAdminActions,
|
|
11
|
+
defineProviderAction("sansan", {
|
|
12
|
+
name: "get_current_user",
|
|
13
|
+
operationType: "read",
|
|
14
|
+
description: "Get the Sansan user and permissions associated with the connected API key.",
|
|
15
|
+
requiredScopes: [],
|
|
16
|
+
inputSchema: s.object("No input is required.", {}, { required: [] }),
|
|
17
|
+
outputSchema: userSchema,
|
|
18
|
+
}),
|
|
19
|
+
defineProviderAction("sansan", {
|
|
20
|
+
name: "list_business_cards",
|
|
21
|
+
operationType: "read",
|
|
22
|
+
description: "List business cards updated within a time interval, with optional historical cards and tags. Use nextPageToken to continue.",
|
|
23
|
+
requiredScopes: [],
|
|
24
|
+
inputSchema: {
|
|
25
|
+
...s.object("Business card update query.", {
|
|
26
|
+
nextPageToken: s.nonEmptyString("Continue a previous query using its nextPageToken; original query parameters are inherited."),
|
|
27
|
+
limit: s.integer("Maximum records per page, from 1 to 300; defaults to 100.", {
|
|
28
|
+
minimum: 1,
|
|
29
|
+
maximum: 300,
|
|
30
|
+
}),
|
|
31
|
+
range: s.stringEnum("Record ownership scope: me or all accessible records; defaults to me.", ["me", "all"]),
|
|
32
|
+
includeTags: s.boolean("Include attached tags and treat tag changes as business card updates."),
|
|
33
|
+
includePastBizCards: s.boolean("Include older business cards for merged persons; defaults to false."),
|
|
34
|
+
entryStatus: s.array("Digitization statuses to include; defaults to completed.", s.stringEnum("A business card digitization status.", ["processing", "completed", "unreadable"])),
|
|
35
|
+
orderBy: s.stringEnum("Sort field; defaults to updatedAt for listing and registeredAt for searching.", [
|
|
36
|
+
"registeredAt",
|
|
37
|
+
"completedAt",
|
|
38
|
+
"updatedAt",
|
|
39
|
+
]),
|
|
40
|
+
orderDirection: s.stringEnum("Sort direction; defaults to asc for listing and desc for searching.", [
|
|
41
|
+
"asc",
|
|
42
|
+
"desc",
|
|
43
|
+
]),
|
|
44
|
+
updatedFrom: s.string("Start of the update interval as an ISO 8601 timestamp with timezone. Required on the first page.", { format: "date-time" }),
|
|
45
|
+
updatedTo: s.string("End of the update interval as an ISO 8601 timestamp with timezone. Required on the first page.", { format: "date-time" }),
|
|
46
|
+
}, { required: [] }),
|
|
47
|
+
anyOf: [{ required: ["nextPageToken"] }, { required: ["updatedFrom", "updatedTo"] }],
|
|
48
|
+
},
|
|
49
|
+
outputSchema: businessCardPageSchema,
|
|
50
|
+
}),
|
|
51
|
+
defineProviderAction("sansan", {
|
|
52
|
+
name: "search_business_cards",
|
|
53
|
+
operationType: "read",
|
|
54
|
+
description: "Search accessible Sansan business cards by company, name, email, telephone, mobile, and tags.",
|
|
55
|
+
requiredScopes: [],
|
|
56
|
+
inputSchema: s.object("Business card search filters.", {
|
|
57
|
+
nextPageToken: s.nonEmptyString("Continue a previous query using its nextPageToken; original query parameters are inherited."),
|
|
58
|
+
limit: s.integer("Maximum records per page, from 1 to 300; defaults to 100.", {
|
|
59
|
+
minimum: 1,
|
|
60
|
+
maximum: 300,
|
|
61
|
+
}),
|
|
62
|
+
range: s.stringEnum("Record ownership scope: me or all accessible records; defaults to me.", ["me", "all"]),
|
|
63
|
+
includeTags: s.boolean("Include attached tags and treat tag changes as business card updates."),
|
|
64
|
+
includePastBizCards: s.boolean("Include older business cards for merged persons; defaults to false."),
|
|
65
|
+
entryStatus: s.array("Digitization statuses to include; defaults to completed.", s.stringEnum("A business card digitization status.", ["processing", "completed", "unreadable"])),
|
|
66
|
+
orderBy: s.stringEnum("Sort field; defaults to updatedAt for listing and registeredAt for searching.", [
|
|
67
|
+
"registeredAt",
|
|
68
|
+
"completedAt",
|
|
69
|
+
"updatedAt",
|
|
70
|
+
]),
|
|
71
|
+
orderDirection: s.stringEnum("Sort direction; defaults to asc for listing and desc for searching.", [
|
|
72
|
+
"asc",
|
|
73
|
+
"desc",
|
|
74
|
+
]),
|
|
75
|
+
companyName: s.string("Company name substring."),
|
|
76
|
+
name: s.string("Name prefix."),
|
|
77
|
+
email: s.string("Exact email address."),
|
|
78
|
+
tel: s.string("Telephone number substring."),
|
|
79
|
+
mobile: s.string("Mobile number substring."),
|
|
80
|
+
tagIds: s.array("Filter by one or more Sansan tag IDs.", s.nonEmptyString("A tag ID.")),
|
|
81
|
+
}, { required: [] }),
|
|
82
|
+
outputSchema: businessCardPageSchema,
|
|
83
|
+
}),
|
|
84
|
+
defineProviderAction("sansan", {
|
|
85
|
+
name: "get_business_card",
|
|
86
|
+
operationType: "read",
|
|
87
|
+
description: "Get a business card by ID. Sansan may return the latest merged card with a different ID.",
|
|
88
|
+
requiredScopes: [],
|
|
89
|
+
inputSchema: s.object("Business card lookup.", {
|
|
90
|
+
businessCardId: s.nonEmptyString("The Sansan business card ID."),
|
|
91
|
+
includeTags: s.boolean("Include attached tags and treat tag changes as business card updates."),
|
|
92
|
+
}, { required: ["businessCardId"] }),
|
|
93
|
+
outputSchema: businessCardSchema,
|
|
94
|
+
}),
|
|
95
|
+
defineProviderAction("sansan", {
|
|
96
|
+
name: "get_person",
|
|
97
|
+
operationType: "read",
|
|
98
|
+
description: "Get the latest business card for a Sansan person, optionally including tags.",
|
|
99
|
+
requiredScopes: [],
|
|
100
|
+
inputSchema: s.object("Person lookup.", {
|
|
101
|
+
personId: s.nonEmptyString("The Sansan person ID."),
|
|
102
|
+
includeTags: s.boolean("Include attached tags and treat tag changes as business card updates."),
|
|
103
|
+
}, { required: ["personId"] }),
|
|
104
|
+
outputSchema: businessCardSchema,
|
|
105
|
+
}),
|
|
106
|
+
defineProviderAction("sansan", {
|
|
107
|
+
name: "list_business_card_tags",
|
|
108
|
+
operationType: "read",
|
|
109
|
+
description: "List tags attached to a Sansan business card.",
|
|
110
|
+
requiredScopes: [],
|
|
111
|
+
inputSchema: s.object("Business card tag query.", {
|
|
112
|
+
businessCardId: s.nonEmptyString("The Sansan business card ID."),
|
|
113
|
+
nextPageToken: s.nonEmptyString("Continue a previous query using its nextPageToken; original query parameters are inherited."),
|
|
114
|
+
limit: s.integer("Maximum records per page, from 1 to 300; defaults to 100.", {
|
|
115
|
+
minimum: 1,
|
|
116
|
+
maximum: 300,
|
|
117
|
+
}),
|
|
118
|
+
}, { required: ["businessCardId"] }),
|
|
119
|
+
outputSchema: tagPageSchema,
|
|
120
|
+
}),
|
|
121
|
+
defineProviderAction("sansan", {
|
|
122
|
+
name: "list_tags",
|
|
123
|
+
operationType: "read",
|
|
124
|
+
description: "List Sansan tags by ownership, visibility, owner user, and tag name.",
|
|
125
|
+
requiredScopes: [],
|
|
126
|
+
inputSchema: s.object("Tag query filters.", {
|
|
127
|
+
nextPageToken: s.nonEmptyString("Continue a previous query using its nextPageToken; original query parameters are inherited."),
|
|
128
|
+
limit: s.integer("Maximum records per page, from 1 to 300; defaults to 100.", {
|
|
129
|
+
minimum: 1,
|
|
130
|
+
maximum: 300,
|
|
131
|
+
}),
|
|
132
|
+
range: s.stringEnum("Record ownership scope: me or all accessible records; defaults to me.", ["me", "all"]),
|
|
133
|
+
type: s.array("Tag visibility types to include.", s.stringEnum("A tag visibility type.", ["private", "public", "shared"])),
|
|
134
|
+
ownerUserId: s.string("Tag owner user ID, effective only when range is all.", {
|
|
135
|
+
maxLength: 20,
|
|
136
|
+
}),
|
|
137
|
+
tagName: s.string("Tag name substring.", { maxLength: 50 }),
|
|
138
|
+
}, { required: [] }),
|
|
139
|
+
outputSchema: tagPageSchema,
|
|
140
|
+
}),
|
|
141
|
+
defineProviderAction("sansan", {
|
|
142
|
+
name: "list_contact_reports",
|
|
143
|
+
operationType: "read",
|
|
144
|
+
description: "List Sansan contact reports updated within a time interval, including meetings, calls, emails, and business card exchanges.",
|
|
145
|
+
requiredScopes: [],
|
|
146
|
+
inputSchema: {
|
|
147
|
+
...s.object("Contact report query filters.", {
|
|
148
|
+
nextPageToken: s.nonEmptyString("Continue a previous query using its nextPageToken; original query parameters are inherited."),
|
|
149
|
+
limit: s.integer("Maximum records per page, from 1 to 300; defaults to 100.", {
|
|
150
|
+
minimum: 1,
|
|
151
|
+
maximum: 300,
|
|
152
|
+
}),
|
|
153
|
+
updatedFrom: s.string("Start of the update interval as an ISO 8601 timestamp with timezone. Required on the first page.", { format: "date-time" }),
|
|
154
|
+
updatedTo: s.string("End of the update interval as an ISO 8601 timestamp with timezone. Required on the first page.", { format: "date-time" }),
|
|
155
|
+
range: s.stringEnum("Record ownership scope: me or all accessible records; defaults to me.", ["me", "all"]),
|
|
156
|
+
category: s.array("Exact category names to include.", s.string("A report category.")),
|
|
157
|
+
type: s.array("Contact report types to include.", s.stringEnum("A contact report type.", ["Meeting", "Call", "Email", "BizCardExchange", "OnlineMeeting"])),
|
|
158
|
+
orderBy: s.stringEnum("Sort field; defaults to updatedAt.", ["registeredAt", "updatedAt"]),
|
|
159
|
+
orderDirection: s.stringEnum("Sort direction; defaults to desc.", ["asc", "desc"]),
|
|
160
|
+
}, { required: [] }),
|
|
161
|
+
anyOf: [{ required: ["nextPageToken"] }, { required: ["updatedFrom", "updatedTo"] }],
|
|
162
|
+
},
|
|
163
|
+
outputSchema: reportPageSchema,
|
|
164
|
+
}),
|
|
165
|
+
];
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { s } from "../../core/json-schema.js";
|
|
2
|
+
import { defineProviderAction } from "../../core/provider-definition.js";
|
|
3
|
+
export const sansanAdminActions = [
|
|
4
|
+
defineProviderAction("sansan", {
|
|
5
|
+
name: "list_departments",
|
|
6
|
+
description: "List administrative department IDs, names, and parents. System administrator only.",
|
|
7
|
+
operationType: "read",
|
|
8
|
+
requiredScopes: [],
|
|
9
|
+
inputSchema: s.object("Department pagination.", {
|
|
10
|
+
nextPageToken: s.nonEmptyString("Continue with the next page token; original filters are inherited."),
|
|
11
|
+
}, { required: [] }),
|
|
12
|
+
outputSchema: s.object("A page of administration records.", {
|
|
13
|
+
data: s.array("Records in this page.", s.object("An administrative department.", {
|
|
14
|
+
id: s.nonEmptyString("The department ID."),
|
|
15
|
+
name: s.string("Department name."),
|
|
16
|
+
parentId: s.nullable(s.string("Parent department ID.")),
|
|
17
|
+
}, { additionalProperties: true, required: [] })),
|
|
18
|
+
hasMore: s.boolean("Whether another page is available."),
|
|
19
|
+
nextPageToken: s.nullable(s.string("The next page token, or null.")),
|
|
20
|
+
}, { additionalProperties: true, required: ["data", "hasMore", "nextPageToken"] }),
|
|
21
|
+
}),
|
|
22
|
+
defineProviderAction("sansan", {
|
|
23
|
+
name: "get_department_access_control",
|
|
24
|
+
description: "Get the access control pattern assigned to a department. System administrator only.",
|
|
25
|
+
operationType: "read",
|
|
26
|
+
requiredScopes: [],
|
|
27
|
+
inputSchema: s.object("Department selection.", {
|
|
28
|
+
departmentId: s.nonEmptyString("The department ID."),
|
|
29
|
+
}, { required: ["departmentId"] }),
|
|
30
|
+
outputSchema: s.object("Department access control assignment.", {
|
|
31
|
+
departmentId: s.nonEmptyString("The department ID."),
|
|
32
|
+
accessControlPattern: s.object("A Sansan access control pattern, including upstream-defined fields.", {
|
|
33
|
+
aclPatternId: s.nonEmptyString("The access control pattern ID."),
|
|
34
|
+
aclPatternName: s.nonEmptyString("Access control pattern name."),
|
|
35
|
+
description: s.string("Access control pattern description."),
|
|
36
|
+
details: s.array("Department access rules.", s.object("Access rule for a target department; additional provider-defined fields are accepted.", {
|
|
37
|
+
objectDepartmentId: s.nonEmptyString("The department whose data this rule covers."),
|
|
38
|
+
accessibleFieldsSettingsName: s.nonEmptyString("The upstream accessible-fields setting name, such as ALL. Use values configured in Sansan; no complete enum is published."),
|
|
39
|
+
}, { additionalProperties: true, required: ["objectDepartmentId", "accessibleFieldsSettingsName"] })),
|
|
40
|
+
isInUse: s.boolean("Whether this pattern is in use."),
|
|
41
|
+
}, { additionalProperties: true, required: [] }),
|
|
42
|
+
}, { additionalProperties: true, required: [] }),
|
|
43
|
+
}),
|
|
44
|
+
defineProviderAction("sansan", {
|
|
45
|
+
name: "set_department_access_control",
|
|
46
|
+
description: "Assign an access control pattern to a department. System administrator only.",
|
|
47
|
+
operationType: "write",
|
|
48
|
+
requiredScopes: [],
|
|
49
|
+
inputSchema: s.object("Department and pattern assignment.", {
|
|
50
|
+
departmentId: s.nonEmptyString("The department ID."),
|
|
51
|
+
aclPatternId: s.nonEmptyString("The access control pattern ID."),
|
|
52
|
+
}, { required: ["departmentId", "aclPatternId"] }),
|
|
53
|
+
outputSchema: s.object("Successful administration change.", {
|
|
54
|
+
success: s.boolean("Whether the request succeeded."),
|
|
55
|
+
data: s.nullable(s.unknownObject("Any JSON payload returned by Sansan.")),
|
|
56
|
+
}, { required: ["success", "data"] }),
|
|
57
|
+
}),
|
|
58
|
+
defineProviderAction("sansan", {
|
|
59
|
+
name: "list_access_control_patterns",
|
|
60
|
+
description: "List access control patterns, optionally filtering by a name substring. System administrator only.",
|
|
61
|
+
operationType: "read",
|
|
62
|
+
requiredScopes: [],
|
|
63
|
+
inputSchema: s.object("Access control pattern search.", {
|
|
64
|
+
nextPageToken: s.nonEmptyString("Continue with the next page token; original filters are inherited."),
|
|
65
|
+
name: s.string("Pattern name substring."),
|
|
66
|
+
}, { required: [] }),
|
|
67
|
+
outputSchema: s.object("A page of administration records.", {
|
|
68
|
+
data: s.array("Records in this page.", s.object("A Sansan access control pattern, including upstream-defined fields.", {
|
|
69
|
+
aclPatternId: s.nonEmptyString("The access control pattern ID."),
|
|
70
|
+
aclPatternName: s.nonEmptyString("Access control pattern name."),
|
|
71
|
+
description: s.string("Access control pattern description."),
|
|
72
|
+
details: s.array("Department access rules.", s.object("Access rule for a target department; additional provider-defined fields are accepted.", {
|
|
73
|
+
objectDepartmentId: s.nonEmptyString("The department whose data this rule covers."),
|
|
74
|
+
accessibleFieldsSettingsName: s.nonEmptyString("The upstream accessible-fields setting name, such as ALL. Use values configured in Sansan; no complete enum is published."),
|
|
75
|
+
}, { additionalProperties: true, required: ["objectDepartmentId", "accessibleFieldsSettingsName"] })),
|
|
76
|
+
isInUse: s.boolean("Whether this pattern is in use."),
|
|
77
|
+
}, { additionalProperties: true, required: [] })),
|
|
78
|
+
hasMore: s.boolean("Whether another page is available."),
|
|
79
|
+
nextPageToken: s.nullable(s.string("The next page token, or null.")),
|
|
80
|
+
}, { additionalProperties: true, required: ["data", "hasMore", "nextPageToken"] }),
|
|
81
|
+
}),
|
|
82
|
+
defineProviderAction("sansan", {
|
|
83
|
+
name: "create_access_control_pattern",
|
|
84
|
+
description: "Create an access control pattern with department access rules. System administrator only.",
|
|
85
|
+
operationType: "write",
|
|
86
|
+
requiredScopes: [],
|
|
87
|
+
inputSchema: s.object("New access control pattern.", {
|
|
88
|
+
aclPatternName: s.nonEmptyString("Access control pattern name."),
|
|
89
|
+
description: s.string("Access control pattern description."),
|
|
90
|
+
details: s.array("Department access rules.", s.object("Access rule for a target department; additional provider-defined fields are accepted.", {
|
|
91
|
+
objectDepartmentId: s.nonEmptyString("The department whose data this rule covers."),
|
|
92
|
+
accessibleFieldsSettingsName: s.nonEmptyString("The upstream accessible-fields setting name, such as ALL. Use values configured in Sansan; no complete enum is published."),
|
|
93
|
+
}, { additionalProperties: true, required: ["objectDepartmentId", "accessibleFieldsSettingsName"] })),
|
|
94
|
+
}, { required: ["aclPatternName", "details"] }),
|
|
95
|
+
outputSchema: s.object("Created access control pattern.", {
|
|
96
|
+
id: s.nonEmptyString("The access control pattern ID."),
|
|
97
|
+
}, { additionalProperties: true, required: ["id"] }),
|
|
98
|
+
}),
|
|
99
|
+
defineProviderAction("sansan", {
|
|
100
|
+
name: "update_access_control_pattern",
|
|
101
|
+
description: "Update an access control pattern and its department rules. System administrator only.",
|
|
102
|
+
operationType: "write",
|
|
103
|
+
requiredScopes: [],
|
|
104
|
+
inputSchema: s.object("Access control pattern changes.", {
|
|
105
|
+
patternId: s.nonEmptyString("The access control pattern ID."),
|
|
106
|
+
aclPatternName: s.nonEmptyString("Access control pattern name."),
|
|
107
|
+
description: s.string("Access control pattern description."),
|
|
108
|
+
details: s.array("Department access rules.", s.object("Access rule for a target department; additional provider-defined fields are accepted.", {
|
|
109
|
+
objectDepartmentId: s.nonEmptyString("The department whose data this rule covers."),
|
|
110
|
+
accessibleFieldsSettingsName: s.nonEmptyString("The upstream accessible-fields setting name, such as ALL. Use values configured in Sansan; no complete enum is published."),
|
|
111
|
+
}, { additionalProperties: true, required: ["objectDepartmentId", "accessibleFieldsSettingsName"] })),
|
|
112
|
+
}, { required: ["patternId"] }),
|
|
113
|
+
outputSchema: s.object("Successful administration change.", {
|
|
114
|
+
success: s.boolean("Whether the request succeeded."),
|
|
115
|
+
data: s.nullable(s.unknownObject("Any JSON payload returned by Sansan.")),
|
|
116
|
+
}, { required: ["success", "data"] }),
|
|
117
|
+
}),
|
|
118
|
+
defineProviderAction("sansan", {
|
|
119
|
+
name: "delete_access_control_pattern",
|
|
120
|
+
description: "Delete an access control pattern. System administrator only; Sansan may reject a pattern still in use.",
|
|
121
|
+
operationType: "destructive",
|
|
122
|
+
requiredScopes: [],
|
|
123
|
+
inputSchema: s.object("Access control pattern to delete.", {
|
|
124
|
+
patternId: s.nonEmptyString("The access control pattern ID."),
|
|
125
|
+
}, { required: ["patternId"] }),
|
|
126
|
+
outputSchema: s.object("Successful administration change.", {
|
|
127
|
+
success: s.boolean("Whether the request succeeded."),
|
|
128
|
+
data: s.nullable(s.unknownObject("Any JSON payload returned by Sansan.")),
|
|
129
|
+
}, { required: ["success", "data"] }),
|
|
130
|
+
}),
|
|
131
|
+
defineProviderAction("sansan", {
|
|
132
|
+
name: "get_default_email_client",
|
|
133
|
+
description: "Get the default email client settings for new users. System administrator only.",
|
|
134
|
+
operationType: "read",
|
|
135
|
+
requiredScopes: [],
|
|
136
|
+
inputSchema: s.object("No input is required.", {}, { required: [] }),
|
|
137
|
+
outputSchema: s.object("Organization default email client; null when not configured.", {
|
|
138
|
+
settings: s.nullable(s.object("Email client configuration.", {
|
|
139
|
+
emailClient: s.stringEnum("Default email client for newly added users.", [
|
|
140
|
+
"clientSoftware",
|
|
141
|
+
"gmail",
|
|
142
|
+
"office365",
|
|
143
|
+
]),
|
|
144
|
+
encoding: s.stringEnum("Required only for clientSoftware.", ["sjis", "utf8", "iso2022jp"]),
|
|
145
|
+
}, { additionalProperties: true, required: [] })),
|
|
146
|
+
}, { required: ["settings"] }),
|
|
147
|
+
}),
|
|
148
|
+
defineProviderAction("sansan", {
|
|
149
|
+
name: "set_default_email_client",
|
|
150
|
+
description: "Set the default email client for subsequently added users; users may change it later. System administrator only.",
|
|
151
|
+
operationType: "write",
|
|
152
|
+
requiredScopes: [],
|
|
153
|
+
inputSchema: {
|
|
154
|
+
...s.object("Default email client settings.", {
|
|
155
|
+
emailClient: s.stringEnum("Default email client for newly added users.", [
|
|
156
|
+
"clientSoftware",
|
|
157
|
+
"gmail",
|
|
158
|
+
"office365",
|
|
159
|
+
]),
|
|
160
|
+
encoding: s.stringEnum("Required only for clientSoftware.", ["sjis", "utf8", "iso2022jp"]),
|
|
161
|
+
}, { required: ["emailClient"] }),
|
|
162
|
+
allOf: [
|
|
163
|
+
{
|
|
164
|
+
if: { properties: { emailClient: { const: "clientSoftware" } } },
|
|
165
|
+
then: { required: ["encoding"] },
|
|
166
|
+
else: { not: { required: ["encoding"] } },
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
},
|
|
170
|
+
outputSchema: s.object("Organization default email client; null when not configured.", {
|
|
171
|
+
settings: s.nullable(s.object("Email client configuration.", {
|
|
172
|
+
emailClient: s.stringEnum("Default email client for newly added users.", [
|
|
173
|
+
"clientSoftware",
|
|
174
|
+
"gmail",
|
|
175
|
+
"office365",
|
|
176
|
+
]),
|
|
177
|
+
encoding: s.stringEnum("Required only for clientSoftware.", ["sjis", "utf8", "iso2022jp"]),
|
|
178
|
+
}, { additionalProperties: true, required: [] })),
|
|
179
|
+
}, { required: ["settings"] }),
|
|
180
|
+
}),
|
|
181
|
+
];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { normalizeSansanPage, readSansanJson, requestSansan, requestSansanJson, sansanPageQuery, sansanPathId, } from "./request.js";
|
|
2
|
+
export const sansanAdminHandlers = {
|
|
3
|
+
async list_departments(input, context) {
|
|
4
|
+
return normalizeSansanPage(await requestSansanJson("/admin/departments", { query: sansanPageQuery(input) }, context));
|
|
5
|
+
},
|
|
6
|
+
async get_department_access_control(input, context) {
|
|
7
|
+
return requestSansanJson(departmentPath(input), {}, context);
|
|
8
|
+
},
|
|
9
|
+
async set_department_access_control(input, context) {
|
|
10
|
+
return changeAdmin(departmentPath(input), "PUT", { aclPatternId: input.aclPatternId }, context);
|
|
11
|
+
},
|
|
12
|
+
async list_access_control_patterns(input, context) {
|
|
13
|
+
return normalizeSansanPage(await requestSansanJson("/admin/accessControl/pattern", { query: sansanPageQuery(input) }, context));
|
|
14
|
+
},
|
|
15
|
+
async create_access_control_pattern(input, context) {
|
|
16
|
+
return requestSansanJson("/admin/accessControl/pattern", { method: "POST", json: input }, context);
|
|
17
|
+
},
|
|
18
|
+
async update_access_control_pattern(input, context) {
|
|
19
|
+
const { patternId, ...body } = input;
|
|
20
|
+
return changeAdmin(`/admin/accessControl/pattern/${sansanPathId(patternId, "patternId")}`, "PUT", body, context);
|
|
21
|
+
},
|
|
22
|
+
async delete_access_control_pattern(input, context) {
|
|
23
|
+
return changeAdmin(`/admin/accessControl/pattern/${sansanPathId(input.patternId, "patternId")}`, "DELETE", undefined, context);
|
|
24
|
+
},
|
|
25
|
+
async get_default_email_client(_input, context) {
|
|
26
|
+
return requestSansan("/organizationSettings/emailClient", {}, context, async (response) => ({
|
|
27
|
+
settings: await readSansanJson(response, true),
|
|
28
|
+
}));
|
|
29
|
+
},
|
|
30
|
+
async set_default_email_client(input, context) {
|
|
31
|
+
return requestSansan("/organizationSettings/emailClient", { method: "PUT", json: input }, context, async (response) => ({ settings: await readSansanJson(response) }));
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
function departmentPath(input) {
|
|
35
|
+
return `/admin/accessControl/department/${sansanPathId(input.departmentId, "departmentId")}/pattern`;
|
|
36
|
+
}
|
|
37
|
+
function changeAdmin(path, method, json, context) {
|
|
38
|
+
return requestSansan(path, { method, json }, context, async (response) => ({
|
|
39
|
+
success: true,
|
|
40
|
+
data: await readSansanJson(response, true),
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { s } from "../../core/json-schema.js";
|
|
2
|
+
import { defineProviderAction } from "../../core/provider-definition.js";
|
|
3
|
+
import { sansanFileSchema } from "./file-schema.js";
|
|
4
|
+
import { businessCardSchema, reportSchema } from "./schemas.js";
|
|
5
|
+
export const sansanBusinessActions = [
|
|
6
|
+
defineProviderAction("sansan", {
|
|
7
|
+
name: "create_business_card",
|
|
8
|
+
description: "Create a Sansan business card, optionally for another user through the administrator import API.",
|
|
9
|
+
operationType: "write",
|
|
10
|
+
requiredScopes: [],
|
|
11
|
+
inputSchema: {
|
|
12
|
+
...s.object("Business card fields. At least one non-empty companyName, firstName, or lastName is required.", {
|
|
13
|
+
ownerUserId: s.nonEmptyString("Optional record owner user ID. When provided, use the system-administrator import API; the user must belong to the same company and contract. Omit to create for the connected user."),
|
|
14
|
+
lastName: s.nullable(s.string("Last name.", { maxLength: 250 })),
|
|
15
|
+
firstName: s.nullable(s.string("First name.", { maxLength: 250 })),
|
|
16
|
+
lastNameReading: s.nullable(s.string("Last name reading in kana; do not use kanji, hiragana, or full-width alphanumeric characters.", {
|
|
17
|
+
maxLength: 250,
|
|
18
|
+
})),
|
|
19
|
+
firstNameReading: s.nullable(s.string("First name reading in kana; do not use kanji, hiragana, or full-width alphanumeric characters.", {
|
|
20
|
+
maxLength: 250,
|
|
21
|
+
})),
|
|
22
|
+
departmentName: s.nullable(s.string("Department name.", { maxLength: 250 })),
|
|
23
|
+
title: s.nullable(s.string("Job title.", { maxLength: 250 })),
|
|
24
|
+
companyName: s.nullable(s.string("Company name.", { maxLength: 250 })),
|
|
25
|
+
prefecture: s.nullable(s.string("Prefecture or state.", { maxLength: 250 })),
|
|
26
|
+
city: s.nullable(s.string("City.", { maxLength: 250 })),
|
|
27
|
+
street: s.nullable(s.string("Street address.", { maxLength: 250 })),
|
|
28
|
+
building: s.nullable(s.string("Building.", { maxLength: 250 })),
|
|
29
|
+
email: s.nullable(s.string("Email address.", { maxLength: 250 })),
|
|
30
|
+
mobile: s.nullable(s.string("Mobile number using digits, plus, and hyphen.", { maxLength: 30 })),
|
|
31
|
+
tel: s.nullable(s.string("Telephone number using digits, plus, and hyphen.", { maxLength: 30 })),
|
|
32
|
+
secondTel: s.nullable(s.string("Second telephone number using digits, plus, and hyphen.", { maxLength: 30 })),
|
|
33
|
+
fax: s.nullable(s.string("Fax number using digits, plus, and hyphen.", { maxLength: 30 })),
|
|
34
|
+
url: s.nullable(s.string("Website URL.", { maxLength: 250 })),
|
|
35
|
+
memo: s.nullable(s.string("Memo.", { maxLength: 2000 })),
|
|
36
|
+
exchangeDate: s.nullable(s.string("Business card exchange date, YYYY-MM-DD.", { format: "date" })),
|
|
37
|
+
countryCode: s.nullable(s.string("ISO 3166-1 alpha-2 country code or AUTO to infer the country from contact information.")),
|
|
38
|
+
postalCode: s.nullable(s.string("Postal code: alphanumeric, hyphens and spaces; at most ten characters excluding hyphens and spaces.")),
|
|
39
|
+
tagIds: s.array("Existing tag IDs to attach, at most fifteen.", s.nonEmptyString("An existing tag ID."), {
|
|
40
|
+
maxItems: 15,
|
|
41
|
+
}),
|
|
42
|
+
sharingPermissions: s.nullable(s.object("Per-field visibility settings.", {
|
|
43
|
+
companyInformation: s.nullable(s.boolean("Whether to share company information.")),
|
|
44
|
+
name: s.nullable(s.boolean("Whether to share the name.")),
|
|
45
|
+
exchangeDate: s.nullable(s.boolean("Whether to share the exchange date.")),
|
|
46
|
+
contact: s.nullable(s.boolean("Whether to share contact details.")),
|
|
47
|
+
mobile: s.nullable(s.boolean("Whether to share the mobile number.")),
|
|
48
|
+
email: s.nullable(s.boolean("Whether to share the email address.")),
|
|
49
|
+
memo: s.nullable(s.boolean("Whether to share the memo.")),
|
|
50
|
+
others: s.nullable(s.boolean("Whether to share other information.")),
|
|
51
|
+
}, { required: [] })),
|
|
52
|
+
}, { required: [] }),
|
|
53
|
+
anyOf: [
|
|
54
|
+
{
|
|
55
|
+
required: ["companyName"],
|
|
56
|
+
properties: { companyName: { type: "string", minLength: 1 } },
|
|
57
|
+
},
|
|
58
|
+
{ required: ["firstName"], properties: { firstName: { type: "string", minLength: 1 } } },
|
|
59
|
+
{ required: ["lastName"], properties: { lastName: { type: "string", minLength: 1 } } },
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
outputSchema: businessCardSchema,
|
|
63
|
+
}),
|
|
64
|
+
defineProviderAction("sansan", {
|
|
65
|
+
name: "upload_business_card_image",
|
|
66
|
+
description: "Submit JPEG business card images for paid Sansan digitization. Optionally use administrator import for another owner.",
|
|
67
|
+
operationType: "write",
|
|
68
|
+
requiredScopes: [],
|
|
69
|
+
inputSchema: s.object("Image URLs and digitization options.", {
|
|
70
|
+
ownerUserId: s.nonEmptyString("Optional record owner user ID. When provided, use the system-administrator import API; the user must belong to the same company and contract. Omit to create for the connected user."),
|
|
71
|
+
frontImageUrl: s.string("Public URL of the front JPEG image, at most 5 MB.", {
|
|
72
|
+
format: "uri",
|
|
73
|
+
}),
|
|
74
|
+
backImageUrl: s.string("Public URL of the optional back JPEG image, at most 5 MB.", {
|
|
75
|
+
format: "uri",
|
|
76
|
+
}),
|
|
77
|
+
exchangeDate: s.string("Business card exchange date, YYYY-MM-DD.", { format: "date" }),
|
|
78
|
+
prioritizeHandWrittenDates: s.boolean("Use a handwritten date on the image as the exchange date."),
|
|
79
|
+
memo: s.string("Memo attached to the imported card.", { maxLength: 2000 }),
|
|
80
|
+
languages: s.array("Requested digitization languages, at most two.", s.stringEnum("A supported digitization language.", [
|
|
81
|
+
"Japanese",
|
|
82
|
+
"English",
|
|
83
|
+
"Chinese",
|
|
84
|
+
"Korean",
|
|
85
|
+
"Spanish",
|
|
86
|
+
"Portuguese",
|
|
87
|
+
"German",
|
|
88
|
+
"French",
|
|
89
|
+
"Thai",
|
|
90
|
+
"Indonesian",
|
|
91
|
+
"Vietnamese",
|
|
92
|
+
]), { maxItems: 2 }),
|
|
93
|
+
tagIds: s.array("Existing tag IDs to attach, at most fifteen.", s.nonEmptyString("An existing tag ID."), {
|
|
94
|
+
maxItems: 15,
|
|
95
|
+
}),
|
|
96
|
+
}, { required: ["frontImageUrl"] }),
|
|
97
|
+
outputSchema: s.object("Business cards submitted for paid digitization.", {
|
|
98
|
+
data: s.array("Created card identifiers for each requested language.", s.object("A card queued for digitization.", {
|
|
99
|
+
id: s.string("The created business card ID."),
|
|
100
|
+
language: s.string("The digitization language."),
|
|
101
|
+
}, { additionalProperties: true, required: [] })),
|
|
102
|
+
}, { additionalProperties: true, required: ["data"] }),
|
|
103
|
+
}),
|
|
104
|
+
defineProviderAction("sansan", {
|
|
105
|
+
name: "get_business_card_image",
|
|
106
|
+
description: "Download the front or back of a Sansan business card as a JPEG file URL.",
|
|
107
|
+
operationType: "read",
|
|
108
|
+
requiredScopes: [],
|
|
109
|
+
inputSchema: s.object("Business card image selection.", {
|
|
110
|
+
businessCardId: s.nonEmptyString("The Sansan business card ID."),
|
|
111
|
+
side: s.stringEnum("The card side; defaults to front.", ["front", "back"]),
|
|
112
|
+
}, { required: ["businessCardId"] }),
|
|
113
|
+
outputSchema: sansanFileSchema,
|
|
114
|
+
}),
|
|
115
|
+
defineProviderAction("sansan", {
|
|
116
|
+
name: "create_contact_report",
|
|
117
|
+
description: "Create a Sansan contact report. External attendee details also create new business cards; optionally import for another owner as an administrator.",
|
|
118
|
+
operationType: "write",
|
|
119
|
+
requiredScopes: [],
|
|
120
|
+
inputSchema: s.object("Contact report details.", {
|
|
121
|
+
ownerUserId: s.nonEmptyString("Optional record owner user ID. When provided, use the system-administrator import API; the user must belong to the same company and contract. Omit to create for the connected user."),
|
|
122
|
+
startTime: s.string("Start timestamp with timezone; seconds must be 00.", {
|
|
123
|
+
format: "date-time",
|
|
124
|
+
}),
|
|
125
|
+
endTime: s.string("End timestamp with timezone; seconds must be 00.", {
|
|
126
|
+
format: "date-time",
|
|
127
|
+
}),
|
|
128
|
+
externalAttendees: s.array("External attendees whose details create new business cards.", {
|
|
129
|
+
...s.object("An external attendee. Sansan creates a new business card from these details.", {
|
|
130
|
+
companyName: s.string("Company name.", { maxLength: 250 }),
|
|
131
|
+
lastName: s.string("Last name.", { maxLength: 250 }),
|
|
132
|
+
firstName: s.string("First name.", { maxLength: 250 }),
|
|
133
|
+
email: s.string("Email address.", { maxLength: 250 }),
|
|
134
|
+
}, { required: [] }),
|
|
135
|
+
anyOf: [
|
|
136
|
+
{ required: ["companyName"], properties: { companyName: { minLength: 1 } } },
|
|
137
|
+
{ required: ["lastName"], properties: { lastName: { minLength: 1 } } },
|
|
138
|
+
{ required: ["firstName"], properties: { firstName: { minLength: 1 } } },
|
|
139
|
+
],
|
|
140
|
+
}),
|
|
141
|
+
internalAttendeeUserIds: s.array("Internal attendee user IDs; omission defaults to the report owner.", s.nonEmptyString("An internal user ID.")),
|
|
142
|
+
type: s.stringEnum("The contact interaction type.", [
|
|
143
|
+
"Meeting",
|
|
144
|
+
"Visit",
|
|
145
|
+
"MeetingAtOffice",
|
|
146
|
+
"Call",
|
|
147
|
+
"OutboundCall",
|
|
148
|
+
"InboundCall",
|
|
149
|
+
"Email",
|
|
150
|
+
"SentEmail",
|
|
151
|
+
"ReceivedEmail",
|
|
152
|
+
"OnlineMeeting",
|
|
153
|
+
]),
|
|
154
|
+
title: s.string("Contact report title."),
|
|
155
|
+
location: s.string("Contact location."),
|
|
156
|
+
memo: s.string("Contact report memo."),
|
|
157
|
+
}, { required: ["startTime", "endTime", "externalAttendees", "type"] }),
|
|
158
|
+
outputSchema: reportSchema,
|
|
159
|
+
}),
|
|
160
|
+
];
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { looseArray, optionalString } from "../../core/cast.js";
|
|
2
|
+
import { providerInputError } from "../provider-runtime.js";
|
|
3
|
+
import { downloadSansanSource, encodeSansanMultipart, requireSansanTransit, uploadSansanDownload } from "./files.js";
|
|
4
|
+
import { requestSansan, requestSansanJson, sansanPathId } from "./request.js";
|
|
5
|
+
export const sansanBusinessHandlers = {
|
|
6
|
+
async create_business_card(input, context) {
|
|
7
|
+
if (![input.companyName, input.firstName, input.lastName].some((value) => optionalString(value)?.trim())) {
|
|
8
|
+
throw providerInputError("A non-empty companyName, firstName, or lastName is required");
|
|
9
|
+
}
|
|
10
|
+
return requestSansanJson(importPath("bizCards", input), { method: "POST", json: input }, context);
|
|
11
|
+
},
|
|
12
|
+
async create_contact_report(input, context) {
|
|
13
|
+
for (const field of ["startTime", "endTime"]) {
|
|
14
|
+
const time = String(input[field]).slice(11);
|
|
15
|
+
const seconds = time.split(":")[2]?.split("+")[0]?.split("-")[0]?.toUpperCase().split("Z")[0];
|
|
16
|
+
const [wholeSeconds, fraction = ""] = (seconds ?? "").split(".");
|
|
17
|
+
if (wholeSeconds !== "00" || [...fraction].some((digit) => digit !== "0")) {
|
|
18
|
+
throw providerInputError(`${field} must have zero seconds`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return requestSansanJson(importPath("reports", input), { method: "POST", json: input }, context);
|
|
22
|
+
},
|
|
23
|
+
async upload_business_card_image(input, context) {
|
|
24
|
+
const form = new FormData();
|
|
25
|
+
await addImage(form, "frontImage", "frontImageUrl", input, context);
|
|
26
|
+
if (input.backImageUrl !== undefined)
|
|
27
|
+
await addImage(form, "backImage", "backImageUrl", input, context);
|
|
28
|
+
for (const key of ["ownerUserId", "exchangeDate", "prioritizeHandWrittenDates", "memo"]) {
|
|
29
|
+
if (input[key] !== undefined)
|
|
30
|
+
form.append(key, String(input[key]));
|
|
31
|
+
}
|
|
32
|
+
for (const value of looseArray(input.languages))
|
|
33
|
+
form.append("language", String(value));
|
|
34
|
+
for (const value of looseArray(input.tagIds))
|
|
35
|
+
form.append("tagIds", String(value));
|
|
36
|
+
return requestSansanJson(importPath("bizCards/images", input), { method: "POST", ...(await encodeSansanMultipart(form)) }, context);
|
|
37
|
+
},
|
|
38
|
+
async get_business_card_image(input, context) {
|
|
39
|
+
requireSansanTransit(context);
|
|
40
|
+
const id = sansanPathId(input.businessCardId, "businessCardId");
|
|
41
|
+
const side = optionalString(input.side) ?? "front";
|
|
42
|
+
return requestSansan(`/bizCards/${id}/image`, { query: { side } }, context, (response) => uploadSansanDownload(response, `sansan-business-card-${side}.jpg`, "image/jpeg", context));
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
function importPath(resource, input) {
|
|
46
|
+
return input.ownerUserId === undefined ? `/${resource}` : `/admin/import/${resource}`;
|
|
47
|
+
}
|
|
48
|
+
async function addImage(form, part, field, input, context) {
|
|
49
|
+
const bytes = await downloadSansanSource(String(input[field]), field, context, true);
|
|
50
|
+
form.append(part, new Blob([bytes], { type: "image/jpeg" }), `${part}.jpg`);
|
|
51
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CredentialValidators, ProviderExecutors, ProviderProxyExecutor } from "../../core/types.ts";
|
|
2
|
+
export declare const executors: ProviderExecutors;
|
|
3
|
+
export declare const credentialValidators: CredentialValidators;
|
|
4
|
+
export declare const proxy: ProviderProxyExecutor;
|