0nmcp 2.1.0 → 2.3.0
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/README.md +69 -31
- package/catalog.js +756 -0
- package/cli.js +143 -0
- package/lib/badges.json +5 -5
- package/lib/catalog.json +653 -3
- package/lib/stats.json +647 -35
- package/package.json +38 -10
- package/vault/sync.js +250 -0
package/catalog.js
CHANGED
|
@@ -761,6 +761,762 @@ export const SERVICE_CATALOG = {
|
|
|
761
761
|
}),
|
|
762
762
|
},
|
|
763
763
|
|
|
764
|
+
// ── QuickBooks ──────────────────────────────────────────────
|
|
765
|
+
quickbooks: {
|
|
766
|
+
name: "QuickBooks",
|
|
767
|
+
type: "accounting",
|
|
768
|
+
description: "Accounting — invoices, customers, payments, bills, estimates, items, reports",
|
|
769
|
+
baseUrl: "https://quickbooks.api.intuit.com/v3",
|
|
770
|
+
authType: "oauth",
|
|
771
|
+
credentialKeys: ["access_token", "realmId"],
|
|
772
|
+
capabilities: [
|
|
773
|
+
{ name: "manage_invoices", actions: ["create", "list", "get", "send"], description: "Create and send invoices" },
|
|
774
|
+
{ name: "manage_customers", actions: ["create", "list", "get", "update"], description: "Manage customers" },
|
|
775
|
+
{ name: "manage_payments", actions: ["create", "list"], description: "Record and list payments" },
|
|
776
|
+
{ name: "manage_accounts", actions: ["list", "get"], description: "Chart of accounts management" },
|
|
777
|
+
{ name: "manage_bills", actions: ["create", "list"], description: "Create and track bills" },
|
|
778
|
+
{ name: "manage_estimates", actions: ["create", "list", "send"], description: "Create and send estimates" },
|
|
779
|
+
{ name: "manage_items", actions: ["create", "list", "get", "update"], description: "Manage products and services" },
|
|
780
|
+
{ name: "manage_reports", actions: ["get"], description: "Generate financial reports" },
|
|
781
|
+
],
|
|
782
|
+
endpoints: {
|
|
783
|
+
create_invoice: { method: "POST", path: "/company/{realmId}/invoice", body: { Line: [], CustomerRef: {} } },
|
|
784
|
+
list_invoices: { method: "GET", path: "/company/{realmId}/query", query: ["query"] },
|
|
785
|
+
get_invoice: { method: "GET", path: "/company/{realmId}/invoice/{invoiceId}" },
|
|
786
|
+
send_invoice: { method: "POST", path: "/company/{realmId}/invoice/{invoiceId}/send", query: ["sendTo"] },
|
|
787
|
+
create_customer: { method: "POST", path: "/company/{realmId}/customer", body: { DisplayName: "", PrimaryEmailAddr: {} } },
|
|
788
|
+
list_customers: { method: "GET", path: "/company/{realmId}/query", query: ["query"] },
|
|
789
|
+
get_customer: { method: "GET", path: "/company/{realmId}/customer/{customerId}" },
|
|
790
|
+
update_customer: { method: "POST", path: "/company/{realmId}/customer", body: { Id: "", SyncToken: "" } },
|
|
791
|
+
create_payment: { method: "POST", path: "/company/{realmId}/payment", body: { TotalAmt: 0, CustomerRef: {} } },
|
|
792
|
+
list_payments: { method: "GET", path: "/company/{realmId}/query", query: ["query"] },
|
|
793
|
+
list_accounts: { method: "GET", path: "/company/{realmId}/query", query: ["query"] },
|
|
794
|
+
get_account: { method: "GET", path: "/company/{realmId}/account/{accountId}" },
|
|
795
|
+
create_bill: { method: "POST", path: "/company/{realmId}/bill", body: { VendorRef: {}, Line: [] } },
|
|
796
|
+
list_bills: { method: "GET", path: "/company/{realmId}/query", query: ["query"] },
|
|
797
|
+
create_estimate: { method: "POST", path: "/company/{realmId}/estimate", body: { Line: [], CustomerRef: {} } },
|
|
798
|
+
send_estimate: { method: "POST", path: "/company/{realmId}/estimate/{estimateId}/send", query: ["sendTo"] },
|
|
799
|
+
create_item: { method: "POST", path: "/company/{realmId}/item", body: { Name: "", Type: "Service" } },
|
|
800
|
+
list_items: { method: "GET", path: "/company/{realmId}/query", query: ["query"] },
|
|
801
|
+
get_item: { method: "GET", path: "/company/{realmId}/item/{itemId}" },
|
|
802
|
+
profit_loss_report: { method: "GET", path: "/company/{realmId}/reports/ProfitAndLoss", query: ["start_date", "end_date"] },
|
|
803
|
+
balance_sheet: { method: "GET", path: "/company/{realmId}/reports/BalanceSheet", query: ["start_date", "end_date"] },
|
|
804
|
+
},
|
|
805
|
+
authHeader: (creds) => ({
|
|
806
|
+
"Authorization": `Bearer ${creds.access_token}`,
|
|
807
|
+
"Accept": "application/json",
|
|
808
|
+
"Content-Type": "application/json",
|
|
809
|
+
}),
|
|
810
|
+
},
|
|
811
|
+
|
|
812
|
+
// ── Asana ───────────────────────────────────────────────────
|
|
813
|
+
asana: {
|
|
814
|
+
name: "Asana",
|
|
815
|
+
type: "project",
|
|
816
|
+
description: "Project management — tasks, projects, sections, workspaces, tags, teams",
|
|
817
|
+
baseUrl: "https://app.asana.com/api/1.0",
|
|
818
|
+
authType: "token",
|
|
819
|
+
credentialKeys: ["token"],
|
|
820
|
+
capabilities: [
|
|
821
|
+
{ name: "manage_tasks", actions: ["create", "list", "get", "update", "delete"], description: "Full task lifecycle management" },
|
|
822
|
+
{ name: "manage_projects", actions: ["create", "list", "get"], description: "Create and manage projects" },
|
|
823
|
+
{ name: "manage_sections", actions: ["create", "list"], description: "Organize projects with sections" },
|
|
824
|
+
{ name: "manage_workspaces", actions: ["list"], description: "List available workspaces" },
|
|
825
|
+
{ name: "manage_tags", actions: ["create", "list"], description: "Create and manage tags" },
|
|
826
|
+
{ name: "manage_teams", actions: ["list"], description: "List organization teams" },
|
|
827
|
+
],
|
|
828
|
+
endpoints: {
|
|
829
|
+
create_task: { method: "POST", path: "/tasks", body: { data: { name: "", workspace: "", projects: [] } } },
|
|
830
|
+
list_tasks: { method: "GET", path: "/tasks", query: ["project", "assignee", "workspace", "completed_since"] },
|
|
831
|
+
get_task: { method: "GET", path: "/tasks/{taskGid}" },
|
|
832
|
+
update_task: { method: "PUT", path: "/tasks/{taskGid}", body: { data: {} } },
|
|
833
|
+
delete_task: { method: "DELETE", path: "/tasks/{taskGid}" },
|
|
834
|
+
create_project: { method: "POST", path: "/projects", body: { data: { name: "", workspace: "" } } },
|
|
835
|
+
list_projects: { method: "GET", path: "/projects", query: ["workspace", "team"] },
|
|
836
|
+
get_project: { method: "GET", path: "/projects/{projectGid}" },
|
|
837
|
+
create_section: { method: "POST", path: "/projects/{projectGid}/sections", body: { data: { name: "" } } },
|
|
838
|
+
list_sections: { method: "GET", path: "/projects/{projectGid}/sections" },
|
|
839
|
+
list_workspaces: { method: "GET", path: "/workspaces" },
|
|
840
|
+
create_tag: { method: "POST", path: "/tags", body: { data: { name: "", workspace: "" } } },
|
|
841
|
+
list_tags: { method: "GET", path: "/tags", query: ["workspace"] },
|
|
842
|
+
list_teams: { method: "GET", path: "/organizations/{organizationGid}/teams" },
|
|
843
|
+
add_task_to_project: { method: "POST", path: "/tasks/{taskGid}/addProject", body: { data: { project: "" } } },
|
|
844
|
+
search_tasks: { method: "GET", path: "/workspaces/{workspaceGid}/tasks/search", query: ["text", "completed"] },
|
|
845
|
+
},
|
|
846
|
+
authHeader: (creds) => ({
|
|
847
|
+
"Authorization": `Bearer ${creds.token}`,
|
|
848
|
+
"Content-Type": "application/json",
|
|
849
|
+
}),
|
|
850
|
+
},
|
|
851
|
+
|
|
852
|
+
// ── Intercom ────────────────────────────────────────────────
|
|
853
|
+
intercom: {
|
|
854
|
+
name: "Intercom",
|
|
855
|
+
type: "support",
|
|
856
|
+
description: "Customer messaging — contacts, conversations, companies, tags, articles",
|
|
857
|
+
baseUrl: "https://api.intercom.io",
|
|
858
|
+
authType: "access_token",
|
|
859
|
+
credentialKeys: ["accessToken"],
|
|
860
|
+
capabilities: [
|
|
861
|
+
{ name: "manage_contacts", actions: ["create", "list", "search", "update"], description: "Manage contacts and leads" },
|
|
862
|
+
{ name: "manage_conversations", actions: ["create", "list", "reply", "close"], description: "Handle customer conversations" },
|
|
863
|
+
{ name: "manage_companies", actions: ["create", "list"], description: "Manage companies" },
|
|
864
|
+
{ name: "manage_tags", actions: ["create", "list"], description: "Create and assign tags" },
|
|
865
|
+
{ name: "manage_articles", actions: ["create", "list"], description: "Manage help center articles" },
|
|
866
|
+
],
|
|
867
|
+
endpoints: {
|
|
868
|
+
create_contact: { method: "POST", path: "/contacts", body: { role: "user", email: "" } },
|
|
869
|
+
list_contacts: { method: "GET", path: "/contacts" },
|
|
870
|
+
search_contacts: { method: "POST", path: "/contacts/search", body: { query: {} } },
|
|
871
|
+
update_contact: { method: "PUT", path: "/contacts/{contactId}", body: {} },
|
|
872
|
+
create_conversation: { method: "POST", path: "/conversations", body: { from: {}, body: "" } },
|
|
873
|
+
list_conversations: { method: "GET", path: "/conversations" },
|
|
874
|
+
reply_to_conversation:{ method: "POST", path: "/conversations/{conversationId}/reply", body: { message_type: "comment", type: "admin", body: "" } },
|
|
875
|
+
close_conversation: { method: "POST", path: "/conversations/{conversationId}/parts", body: { message_type: "close", type: "admin" } },
|
|
876
|
+
create_company: { method: "POST", path: "/companies", body: { name: "", company_id: "" } },
|
|
877
|
+
list_companies: { method: "GET", path: "/companies" },
|
|
878
|
+
create_tag: { method: "POST", path: "/tags", body: { name: "" } },
|
|
879
|
+
tag_contact: { method: "POST", path: "/contacts/{contactId}/tags", body: { id: "" } },
|
|
880
|
+
list_tags: { method: "GET", path: "/tags" },
|
|
881
|
+
create_article: { method: "POST", path: "/articles", body: { title: "", body: "", author_id: "" } },
|
|
882
|
+
list_articles: { method: "GET", path: "/articles" },
|
|
883
|
+
},
|
|
884
|
+
authHeader: (creds) => ({
|
|
885
|
+
"Authorization": `Bearer ${creds.accessToken}`,
|
|
886
|
+
"Accept": "application/json",
|
|
887
|
+
"Content-Type": "application/json",
|
|
888
|
+
"Intercom-Version": "2.10",
|
|
889
|
+
}),
|
|
890
|
+
},
|
|
891
|
+
|
|
892
|
+
// ── Dropbox ─────────────────────────────────────────────────
|
|
893
|
+
dropbox: {
|
|
894
|
+
name: "Dropbox",
|
|
895
|
+
type: "storage",
|
|
896
|
+
description: "Cloud storage — files, folders, sharing, search",
|
|
897
|
+
baseUrl: "https://api.dropboxapi.com/2",
|
|
898
|
+
authType: "oauth",
|
|
899
|
+
credentialKeys: ["access_token"],
|
|
900
|
+
capabilities: [
|
|
901
|
+
{ name: "manage_files", actions: ["upload", "download", "list", "move", "delete", "search"], description: "Upload, download, and manage files" },
|
|
902
|
+
{ name: "manage_folders", actions: ["create", "list"], description: "Create and list folders" },
|
|
903
|
+
{ name: "manage_sharing", actions: ["create_link", "list_shared"], description: "Share files and folders" },
|
|
904
|
+
],
|
|
905
|
+
endpoints: {
|
|
906
|
+
list_folder: { method: "POST", path: "/files/list_folder", body: { path: "", recursive: false, limit: 100 } },
|
|
907
|
+
list_folder_continue: { method: "POST", path: "/files/list_folder/continue", body: { cursor: "" } },
|
|
908
|
+
get_metadata: { method: "POST", path: "/files/get_metadata", body: { path: "" } },
|
|
909
|
+
create_folder: { method: "POST", path: "/files/create_folder_v2", body: { path: "", autorename: false } },
|
|
910
|
+
delete: { method: "POST", path: "/files/delete_v2", body: { path: "" } },
|
|
911
|
+
move: { method: "POST", path: "/files/move_v2", body: { from_path: "", to_path: "" } },
|
|
912
|
+
copy: { method: "POST", path: "/files/copy_v2", body: { from_path: "", to_path: "" } },
|
|
913
|
+
search: { method: "POST", path: "/files/search_v2", body: { query: "", options: { max_results: 100 } } },
|
|
914
|
+
create_shared_link: { method: "POST", path: "/sharing/create_shared_link_with_settings", body: { path: "" } },
|
|
915
|
+
list_shared_links: { method: "POST", path: "/sharing/list_shared_links", body: { path: "" } },
|
|
916
|
+
},
|
|
917
|
+
authHeader: (creds) => ({
|
|
918
|
+
"Authorization": `Bearer ${creds.access_token}`,
|
|
919
|
+
"Content-Type": "application/json",
|
|
920
|
+
}),
|
|
921
|
+
},
|
|
922
|
+
|
|
923
|
+
// ── WhatsApp Business ───────────────────────────────────────
|
|
924
|
+
whatsapp: {
|
|
925
|
+
name: "WhatsApp Business",
|
|
926
|
+
type: "communication",
|
|
927
|
+
description: "Business messaging — send texts, templates, media via WhatsApp Business API",
|
|
928
|
+
baseUrl: "https://graph.facebook.com/v19.0",
|
|
929
|
+
authType: "access_token",
|
|
930
|
+
credentialKeys: ["accessToken", "phoneNumberId"],
|
|
931
|
+
capabilities: [
|
|
932
|
+
{ name: "send_message", actions: ["send_text", "send_template", "send_media"], description: "Send messages via WhatsApp" },
|
|
933
|
+
{ name: "manage_templates", actions: ["list", "get"], description: "Manage message templates" },
|
|
934
|
+
{ name: "manage_media", actions: ["upload", "get"], description: "Upload and retrieve media" },
|
|
935
|
+
],
|
|
936
|
+
endpoints: {
|
|
937
|
+
send_text_message: { method: "POST", path: "/{phoneNumberId}/messages", body: { messaging_product: "whatsapp", to: "", type: "text", text: { body: "" } } },
|
|
938
|
+
send_template_message: { method: "POST", path: "/{phoneNumberId}/messages", body: { messaging_product: "whatsapp", to: "", type: "template", template: { name: "", language: { code: "en" } } } },
|
|
939
|
+
send_media_message: { method: "POST", path: "/{phoneNumberId}/messages", body: { messaging_product: "whatsapp", to: "", type: "image", image: { link: "" } } },
|
|
940
|
+
list_templates: { method: "GET", path: "/{businessId}/message_templates" },
|
|
941
|
+
upload_media: { method: "POST", path: "/{phoneNumberId}/media", contentType: "multipart/form-data" },
|
|
942
|
+
get_media_url: { method: "GET", path: "/{mediaId}" },
|
|
943
|
+
},
|
|
944
|
+
authHeader: (creds) => ({
|
|
945
|
+
"Authorization": `Bearer ${creds.accessToken}`,
|
|
946
|
+
"Content-Type": "application/json",
|
|
947
|
+
}),
|
|
948
|
+
},
|
|
949
|
+
|
|
950
|
+
// ── Instagram ───────────────────────────────────────────────
|
|
951
|
+
instagram: {
|
|
952
|
+
name: "Instagram",
|
|
953
|
+
type: "social",
|
|
954
|
+
description: "Social media — posts, comments, insights, stories via Instagram Graph API",
|
|
955
|
+
baseUrl: "https://graph.facebook.com/v19.0",
|
|
956
|
+
authType: "access_token",
|
|
957
|
+
credentialKeys: ["accessToken", "igUserId"],
|
|
958
|
+
capabilities: [
|
|
959
|
+
{ name: "manage_media", actions: ["create", "list", "get"], description: "Create and manage media posts" },
|
|
960
|
+
{ name: "manage_comments", actions: ["list", "reply", "delete"], description: "Moderate comments" },
|
|
961
|
+
{ name: "manage_insights", actions: ["get"], description: "View account and media insights" },
|
|
962
|
+
{ name: "manage_stories", actions: ["list"], description: "List active stories" },
|
|
963
|
+
],
|
|
964
|
+
endpoints: {
|
|
965
|
+
list_media: { method: "GET", path: "/{igUserId}/media", query: ["fields", "limit"] },
|
|
966
|
+
get_media: { method: "GET", path: "/{mediaId}", query: ["fields"] },
|
|
967
|
+
create_media_container: { method: "POST", path: "/{igUserId}/media", body: { image_url: "", caption: "" } },
|
|
968
|
+
publish_media: { method: "POST", path: "/{igUserId}/media_publish", body: { creation_id: "" } },
|
|
969
|
+
list_comments: { method: "GET", path: "/{mediaId}/comments", query: ["fields"] },
|
|
970
|
+
reply_to_comment: { method: "POST", path: "/{commentId}/replies", body: { message: "" } },
|
|
971
|
+
delete_comment: { method: "DELETE", path: "/{commentId}" },
|
|
972
|
+
get_insights: { method: "GET", path: "/{igUserId}/insights", query: ["metric", "period"] },
|
|
973
|
+
list_stories: { method: "GET", path: "/{igUserId}/stories", query: ["fields"] },
|
|
974
|
+
get_profile: { method: "GET", path: "/{igUserId}", query: ["fields"] },
|
|
975
|
+
},
|
|
976
|
+
authHeader: (creds) => ({
|
|
977
|
+
"Authorization": `Bearer ${creds.accessToken}`,
|
|
978
|
+
"Content-Type": "application/json",
|
|
979
|
+
}),
|
|
980
|
+
},
|
|
981
|
+
|
|
982
|
+
// ── X (Twitter) ─────────────────────────────────────────────
|
|
983
|
+
twitter: {
|
|
984
|
+
name: "X (Twitter)",
|
|
985
|
+
type: "social",
|
|
986
|
+
description: "Social platform — tweets, users, followers, lists, direct messages",
|
|
987
|
+
baseUrl: "https://api.x.com/2",
|
|
988
|
+
authType: "oauth",
|
|
989
|
+
credentialKeys: ["bearerToken"],
|
|
990
|
+
capabilities: [
|
|
991
|
+
{ name: "manage_tweets", actions: ["create", "list", "delete", "search"], description: "Post and manage tweets" },
|
|
992
|
+
{ name: "manage_users", actions: ["get", "list_followers", "list_following"], description: "View user profiles and connections" },
|
|
993
|
+
{ name: "manage_lists", actions: ["create", "list"], description: "Create and manage lists" },
|
|
994
|
+
{ name: "manage_dm", actions: ["send"], description: "Send direct messages" },
|
|
995
|
+
],
|
|
996
|
+
endpoints: {
|
|
997
|
+
create_tweet: { method: "POST", path: "/tweets", body: { text: "" } },
|
|
998
|
+
delete_tweet: { method: "DELETE", path: "/tweets/{tweetId}" },
|
|
999
|
+
get_tweet: { method: "GET", path: "/tweets/{tweetId}", query: ["tweet.fields", "expansions"] },
|
|
1000
|
+
search_tweets: { method: "GET", path: "/tweets/search/recent", query: ["query", "max_results", "tweet.fields"] },
|
|
1001
|
+
get_user: { method: "GET", path: "/users/{userId}", query: ["user.fields"] },
|
|
1002
|
+
get_user_by_username: { method: "GET", path: "/users/by/username/{username}", query: ["user.fields"] },
|
|
1003
|
+
get_user_tweets: { method: "GET", path: "/users/{userId}/tweets", query: ["max_results", "tweet.fields"] },
|
|
1004
|
+
get_followers: { method: "GET", path: "/users/{userId}/followers", query: ["max_results", "user.fields"] },
|
|
1005
|
+
get_following: { method: "GET", path: "/users/{userId}/following", query: ["max_results", "user.fields"] },
|
|
1006
|
+
create_list: { method: "POST", path: "/lists", body: { name: "", description: "" } },
|
|
1007
|
+
get_lists: { method: "GET", path: "/users/{userId}/owned_lists" },
|
|
1008
|
+
send_dm: { method: "POST", path: "/dm_conversations/with/{participantId}/messages", body: { text: "" } },
|
|
1009
|
+
like_tweet: { method: "POST", path: "/users/{userId}/likes", body: { tweet_id: "" } },
|
|
1010
|
+
unlike_tweet: { method: "DELETE", path: "/users/{userId}/likes/{tweetId}" },
|
|
1011
|
+
retweet: { method: "POST", path: "/users/{userId}/retweets", body: { tweet_id: "" } },
|
|
1012
|
+
unretweet: { method: "DELETE", path: "/users/{userId}/retweets/{tweetId}" },
|
|
1013
|
+
},
|
|
1014
|
+
authHeader: (creds) => ({
|
|
1015
|
+
"Authorization": `Bearer ${creds.bearerToken}`,
|
|
1016
|
+
"Content-Type": "application/json",
|
|
1017
|
+
}),
|
|
1018
|
+
},
|
|
1019
|
+
|
|
1020
|
+
// ── TikTok Business ─────────────────────────────────────────
|
|
1021
|
+
tiktok: {
|
|
1022
|
+
name: "TikTok Business",
|
|
1023
|
+
type: "social",
|
|
1024
|
+
description: "Social video — videos, ads, campaigns, reports via TikTok Business API",
|
|
1025
|
+
baseUrl: "https://business-api.tiktok.com/open_api/v1.3",
|
|
1026
|
+
authType: "access_token",
|
|
1027
|
+
credentialKeys: ["accessToken", "advertiserId"],
|
|
1028
|
+
capabilities: [
|
|
1029
|
+
{ name: "manage_videos", actions: ["list", "get"], description: "View video content" },
|
|
1030
|
+
{ name: "manage_ads", actions: ["create", "list", "get", "update"], description: "Manage ad creatives" },
|
|
1031
|
+
{ name: "manage_campaigns", actions: ["create", "list", "get", "update"], description: "Manage ad campaigns" },
|
|
1032
|
+
{ name: "manage_reports", actions: ["get"], description: "Pull performance reports" },
|
|
1033
|
+
],
|
|
1034
|
+
endpoints: {
|
|
1035
|
+
list_videos: { method: "GET", path: "/video/list/", query: ["advertiser_id"] },
|
|
1036
|
+
get_video_info: { method: "GET", path: "/video/info/", query: ["advertiser_id", "video_ids"] },
|
|
1037
|
+
create_campaign: { method: "POST", path: "/campaign/create/", body: { advertiser_id: "", campaign_name: "", objective_type: "", budget_mode: "" } },
|
|
1038
|
+
list_campaigns: { method: "GET", path: "/campaign/get/", query: ["advertiser_id", "page", "page_size"] },
|
|
1039
|
+
get_campaign: { method: "GET", path: "/campaign/get/", query: ["advertiser_id", "campaign_ids"] },
|
|
1040
|
+
update_campaign: { method: "POST", path: "/campaign/update/", body: { advertiser_id: "", campaign_id: "" } },
|
|
1041
|
+
create_ad_group: { method: "POST", path: "/adgroup/create/", body: { advertiser_id: "", campaign_id: "", adgroup_name: "" } },
|
|
1042
|
+
list_ad_groups: { method: "GET", path: "/adgroup/get/", query: ["advertiser_id", "page", "page_size"] },
|
|
1043
|
+
create_ad: { method: "POST", path: "/ad/create/", body: { advertiser_id: "", adgroup_id: "", creatives: [] } },
|
|
1044
|
+
list_ads: { method: "GET", path: "/ad/get/", query: ["advertiser_id", "page", "page_size"] },
|
|
1045
|
+
get_report: { method: "POST", path: "/report/integrated/get/", body: { advertiser_id: "", report_type: "", dimensions: [], metrics: [] } },
|
|
1046
|
+
},
|
|
1047
|
+
authHeader: (creds) => ({
|
|
1048
|
+
"Access-Token": creds.accessToken,
|
|
1049
|
+
"Content-Type": "application/json",
|
|
1050
|
+
}),
|
|
1051
|
+
},
|
|
1052
|
+
|
|
1053
|
+
// ── Google Ads ──────────────────────────────────────────────
|
|
1054
|
+
google_ads: {
|
|
1055
|
+
name: "Google Ads",
|
|
1056
|
+
type: "advertising",
|
|
1057
|
+
description: "Search and display advertising — campaigns, ad groups, ads, keywords, reports",
|
|
1058
|
+
baseUrl: "https://googleads.googleapis.com/v16",
|
|
1059
|
+
authType: "oauth",
|
|
1060
|
+
credentialKeys: ["access_token", "developerToken", "customerId"],
|
|
1061
|
+
capabilities: [
|
|
1062
|
+
{ name: "manage_campaigns", actions: ["create", "list", "get", "update"], description: "Manage ad campaigns" },
|
|
1063
|
+
{ name: "manage_ad_groups", actions: ["create", "list"], description: "Manage ad groups" },
|
|
1064
|
+
{ name: "manage_ads", actions: ["create", "list"], description: "Manage ad creatives" },
|
|
1065
|
+
{ name: "manage_keywords", actions: ["create", "list"], description: "Manage keywords and targeting" },
|
|
1066
|
+
{ name: "get_reports", actions: ["get"], description: "Pull campaign performance reports" },
|
|
1067
|
+
],
|
|
1068
|
+
endpoints: {
|
|
1069
|
+
search: { method: "POST", path: "/customers/{customerId}/googleAds:searchStream", body: { query: "" } },
|
|
1070
|
+
mutate_campaigns: { method: "POST", path: "/customers/{customerId}/campaigns:mutate", body: { operations: [] } },
|
|
1071
|
+
list_campaigns: { method: "POST", path: "/customers/{customerId}/googleAds:search", body: { query: "SELECT campaign.id, campaign.name, campaign.status FROM campaign" } },
|
|
1072
|
+
create_campaign: { method: "POST", path: "/customers/{customerId}/campaigns:mutate", body: { operations: [{ create: {} }] } },
|
|
1073
|
+
list_ad_groups: { method: "POST", path: "/customers/{customerId}/googleAds:search", body: { query: "SELECT ad_group.id, ad_group.name FROM ad_group" } },
|
|
1074
|
+
create_ad_group: { method: "POST", path: "/customers/{customerId}/adGroups:mutate", body: { operations: [{ create: {} }] } },
|
|
1075
|
+
list_ads: { method: "POST", path: "/customers/{customerId}/googleAds:search", body: { query: "SELECT ad_group_ad.ad.id, ad_group_ad.ad.name FROM ad_group_ad" } },
|
|
1076
|
+
create_ad: { method: "POST", path: "/customers/{customerId}/adGroupAds:mutate", body: { operations: [{ create: {} }] } },
|
|
1077
|
+
get_report: { method: "POST", path: "/customers/{customerId}/googleAds:searchStream", body: { query: "" } },
|
|
1078
|
+
},
|
|
1079
|
+
authHeader: (creds) => ({
|
|
1080
|
+
"Authorization": `Bearer ${creds.access_token}`,
|
|
1081
|
+
"developer-token": creds.developerToken,
|
|
1082
|
+
"Content-Type": "application/json",
|
|
1083
|
+
}),
|
|
1084
|
+
},
|
|
1085
|
+
|
|
1086
|
+
// ── Facebook Ads ────────────────────────────────────────────
|
|
1087
|
+
facebook_ads: {
|
|
1088
|
+
name: "Facebook Ads",
|
|
1089
|
+
type: "advertising",
|
|
1090
|
+
description: "Social advertising — campaigns, ad sets, ads, insights, audiences",
|
|
1091
|
+
baseUrl: "https://graph.facebook.com/v19.0",
|
|
1092
|
+
authType: "access_token",
|
|
1093
|
+
credentialKeys: ["accessToken", "adAccountId"],
|
|
1094
|
+
capabilities: [
|
|
1095
|
+
{ name: "manage_campaigns", actions: ["create", "list", "get", "update"], description: "Manage ad campaigns" },
|
|
1096
|
+
{ name: "manage_adsets", actions: ["create", "list", "get", "update"], description: "Manage ad sets and targeting" },
|
|
1097
|
+
{ name: "manage_ads", actions: ["create", "list", "get"], description: "Manage ad creatives" },
|
|
1098
|
+
{ name: "manage_insights", actions: ["get"], description: "View performance insights" },
|
|
1099
|
+
{ name: "manage_audiences", actions: ["create", "list"], description: "Create and manage custom audiences" },
|
|
1100
|
+
],
|
|
1101
|
+
endpoints: {
|
|
1102
|
+
create_campaign: { method: "POST", path: "/act_{adAccountId}/campaigns", body: { name: "", objective: "", status: "PAUSED", special_ad_categories: [] } },
|
|
1103
|
+
list_campaigns: { method: "GET", path: "/act_{adAccountId}/campaigns", query: ["fields", "limit"] },
|
|
1104
|
+
get_campaign: { method: "GET", path: "/{campaignId}", query: ["fields"] },
|
|
1105
|
+
update_campaign: { method: "POST", path: "/{campaignId}", body: {} },
|
|
1106
|
+
create_adset: { method: "POST", path: "/act_{adAccountId}/adsets", body: { name: "", campaign_id: "", daily_budget: 0, targeting: {}, status: "PAUSED" } },
|
|
1107
|
+
list_adsets: { method: "GET", path: "/act_{adAccountId}/adsets", query: ["fields", "limit"] },
|
|
1108
|
+
create_ad: { method: "POST", path: "/act_{adAccountId}/ads", body: { name: "", adset_id: "", creative: {}, status: "PAUSED" } },
|
|
1109
|
+
list_ads: { method: "GET", path: "/act_{adAccountId}/ads", query: ["fields", "limit"] },
|
|
1110
|
+
get_insights: { method: "GET", path: "/act_{adAccountId}/insights", query: ["fields", "date_preset", "level", "time_range"] },
|
|
1111
|
+
create_audience: { method: "POST", path: "/act_{adAccountId}/customaudiences", body: { name: "", subtype: "CUSTOM", description: "" } },
|
|
1112
|
+
list_audiences: { method: "GET", path: "/act_{adAccountId}/customaudiences", query: ["fields", "limit"] },
|
|
1113
|
+
},
|
|
1114
|
+
authHeader: (creds) => ({
|
|
1115
|
+
"Authorization": `Bearer ${creds.accessToken}`,
|
|
1116
|
+
"Content-Type": "application/json",
|
|
1117
|
+
}),
|
|
1118
|
+
},
|
|
1119
|
+
|
|
1120
|
+
// ── Plaid ───────────────────────────────────────────────────
|
|
1121
|
+
plaid: {
|
|
1122
|
+
name: "Plaid",
|
|
1123
|
+
type: "finance",
|
|
1124
|
+
description: "Financial data — bank accounts, transactions, identity, auth via Plaid API",
|
|
1125
|
+
baseUrl: "https://production.plaid.com",
|
|
1126
|
+
authType: "api_key",
|
|
1127
|
+
credentialKeys: ["clientId", "secret"],
|
|
1128
|
+
capabilities: [
|
|
1129
|
+
{ name: "manage_links", actions: ["create", "exchange"], description: "Create link tokens and exchange public tokens" },
|
|
1130
|
+
{ name: "manage_accounts", actions: ["list", "get_balance"], description: "List accounts and get balances" },
|
|
1131
|
+
{ name: "manage_transactions", actions: ["list", "sync"], description: "List and sync transactions" },
|
|
1132
|
+
{ name: "manage_identity", actions: ["get"], description: "Retrieve identity information" },
|
|
1133
|
+
{ name: "manage_auth", actions: ["get"], description: "Get account and routing numbers" },
|
|
1134
|
+
],
|
|
1135
|
+
endpoints: {
|
|
1136
|
+
create_link_token: { method: "POST", path: "/link/token/create", body: { client_id: "", secret: "", user: { client_user_id: "" }, client_name: "", products: [], country_codes: ["US"], language: "en" } },
|
|
1137
|
+
exchange_public_token:{ method: "POST", path: "/item/public_token/exchange", body: { client_id: "", secret: "", public_token: "" } },
|
|
1138
|
+
get_accounts: { method: "POST", path: "/accounts/get", body: { client_id: "", secret: "", access_token: "" } },
|
|
1139
|
+
get_balance: { method: "POST", path: "/accounts/balance/get", body: { client_id: "", secret: "", access_token: "" } },
|
|
1140
|
+
get_transactions: { method: "POST", path: "/transactions/get", body: { client_id: "", secret: "", access_token: "", start_date: "", end_date: "" } },
|
|
1141
|
+
sync_transactions: { method: "POST", path: "/transactions/sync", body: { client_id: "", secret: "", access_token: "" } },
|
|
1142
|
+
get_identity: { method: "POST", path: "/identity/get", body: { client_id: "", secret: "", access_token: "" } },
|
|
1143
|
+
get_auth: { method: "POST", path: "/auth/get", body: { client_id: "", secret: "", access_token: "" } },
|
|
1144
|
+
get_institutions: { method: "POST", path: "/institutions/get", body: { client_id: "", secret: "", count: 10, offset: 0, country_codes: ["US"] } },
|
|
1145
|
+
},
|
|
1146
|
+
authHeader: (creds) => ({
|
|
1147
|
+
"Content-Type": "application/json",
|
|
1148
|
+
}),
|
|
1149
|
+
},
|
|
1150
|
+
|
|
1151
|
+
// ── Square ──────────────────────────────────────────────────
|
|
1152
|
+
square: {
|
|
1153
|
+
name: "Square",
|
|
1154
|
+
type: "payments",
|
|
1155
|
+
description: "Payments and commerce — payments, customers, orders, catalog, inventory",
|
|
1156
|
+
baseUrl: "https://connect.squareup.com/v2",
|
|
1157
|
+
authType: "access_token",
|
|
1158
|
+
credentialKeys: ["accessToken"],
|
|
1159
|
+
capabilities: [
|
|
1160
|
+
{ name: "manage_payments", actions: ["create", "list", "get", "refund"], description: "Process and manage payments" },
|
|
1161
|
+
{ name: "manage_customers", actions: ["create", "list", "get", "update", "delete"], description: "Manage customer directory" },
|
|
1162
|
+
{ name: "manage_orders", actions: ["create", "list", "get"], description: "Create and manage orders" },
|
|
1163
|
+
{ name: "manage_catalog", actions: ["create", "list", "search"], description: "Manage product catalog" },
|
|
1164
|
+
{ name: "manage_inventory", actions: ["get", "adjust"], description: "Track and adjust inventory" },
|
|
1165
|
+
],
|
|
1166
|
+
endpoints: {
|
|
1167
|
+
create_payment: { method: "POST", path: "/payments", body: { source_id: "", idempotency_key: "", amount_money: { amount: 0, currency: "USD" } } },
|
|
1168
|
+
list_payments: { method: "GET", path: "/payments", query: ["begin_time", "end_time", "sort_order", "cursor", "limit"] },
|
|
1169
|
+
get_payment: { method: "GET", path: "/payments/{paymentId}" },
|
|
1170
|
+
create_refund: { method: "POST", path: "/refunds", body: { idempotency_key: "", payment_id: "", amount_money: {} } },
|
|
1171
|
+
create_customer: { method: "POST", path: "/customers", body: { given_name: "", family_name: "", email_address: "" } },
|
|
1172
|
+
list_customers: { method: "GET", path: "/customers", query: ["cursor", "limit", "sort_field", "sort_order"] },
|
|
1173
|
+
get_customer: { method: "GET", path: "/customers/{customerId}" },
|
|
1174
|
+
update_customer: { method: "PUT", path: "/customers/{customerId}", body: {} },
|
|
1175
|
+
delete_customer: { method: "DELETE", path: "/customers/{customerId}" },
|
|
1176
|
+
create_order: { method: "POST", path: "/orders", body: { order: { location_id: "", line_items: [] }, idempotency_key: "" } },
|
|
1177
|
+
list_orders: { method: "POST", path: "/orders/search", body: { location_ids: [], query: {} } },
|
|
1178
|
+
get_order: { method: "GET", path: "/orders/{orderId}" },
|
|
1179
|
+
create_catalog_object:{ method: "POST", path: "/catalog/object", body: { idempotency_key: "", object: {} } },
|
|
1180
|
+
list_catalog: { method: "GET", path: "/catalog/list", query: ["types", "cursor"] },
|
|
1181
|
+
search_catalog: { method: "POST", path: "/catalog/search", body: { object_types: [], query: {} } },
|
|
1182
|
+
get_inventory: { method: "POST", path: "/inventory/counts/batch-retrieve", body: { catalog_object_ids: [] } },
|
|
1183
|
+
adjust_inventory: { method: "POST", path: "/inventory/changes/batch-create", body: { idempotency_key: "", changes: [] } },
|
|
1184
|
+
},
|
|
1185
|
+
authHeader: (creds) => ({
|
|
1186
|
+
"Authorization": `Bearer ${creds.accessToken}`,
|
|
1187
|
+
"Content-Type": "application/json",
|
|
1188
|
+
"Square-Version": "2024-01-18",
|
|
1189
|
+
}),
|
|
1190
|
+
},
|
|
1191
|
+
|
|
1192
|
+
// ── TikTok Ads ──────────────────────────────────────────────
|
|
1193
|
+
tiktok_ads: {
|
|
1194
|
+
name: "TikTok Ads",
|
|
1195
|
+
type: "advertising",
|
|
1196
|
+
description: "TikTok advertising — campaigns, ad groups, ads, reports, audiences",
|
|
1197
|
+
baseUrl: "https://business-api.tiktok.com/open_api/v1.3",
|
|
1198
|
+
authType: "access_token",
|
|
1199
|
+
credentialKeys: ["accessToken", "advertiserId"],
|
|
1200
|
+
capabilities: [
|
|
1201
|
+
{ name: "manage_campaigns", actions: ["create", "list", "get", "update"], description: "Manage ad campaigns" },
|
|
1202
|
+
{ name: "manage_ad_groups", actions: ["create", "list", "update"], description: "Manage ad groups and targeting" },
|
|
1203
|
+
{ name: "manage_ads", actions: ["create", "list", "update"], description: "Manage ad creatives" },
|
|
1204
|
+
{ name: "manage_reports", actions: ["get"], description: "Pull performance reports" },
|
|
1205
|
+
{ name: "manage_audiences", actions: ["create", "list"], description: "Create and manage custom audiences" },
|
|
1206
|
+
],
|
|
1207
|
+
endpoints: {
|
|
1208
|
+
create_campaign: { method: "POST", path: "/campaign/create/", body: { advertiser_id: "", campaign_name: "", objective_type: "", budget_mode: "" } },
|
|
1209
|
+
list_campaigns: { method: "GET", path: "/campaign/get/", query: ["advertiser_id", "page", "page_size"] },
|
|
1210
|
+
update_campaign_status: { method: "POST", path: "/campaign/update/status/", body: { advertiser_id: "", campaign_ids: [], opt_status: "" } },
|
|
1211
|
+
create_adgroup: { method: "POST", path: "/adgroup/create/", body: { advertiser_id: "", campaign_id: "", adgroup_name: "", placement_type: "" } },
|
|
1212
|
+
list_adgroups: { method: "GET", path: "/adgroup/get/", query: ["advertiser_id", "page", "page_size"] },
|
|
1213
|
+
update_adgroup: { method: "POST", path: "/adgroup/update/", body: { advertiser_id: "", adgroup_id: "" } },
|
|
1214
|
+
create_ad: { method: "POST", path: "/ad/create/", body: { advertiser_id: "", adgroup_id: "", creatives: [] } },
|
|
1215
|
+
list_ads: { method: "GET", path: "/ad/get/", query: ["advertiser_id", "page", "page_size"] },
|
|
1216
|
+
update_ad: { method: "POST", path: "/ad/update/", body: { advertiser_id: "", ad_ids: [] } },
|
|
1217
|
+
get_report: { method: "POST", path: "/report/integrated/get/", body: { advertiser_id: "", report_type: "", dimensions: [], metrics: [], data_level: "" } },
|
|
1218
|
+
create_audience: { method: "POST", path: "/dmp/custom_audience/create/", body: { advertiser_id: "", custom_audience_name: "" } },
|
|
1219
|
+
list_audiences: { method: "GET", path: "/dmp/custom_audience/list/", query: ["advertiser_id", "page", "page_size"] },
|
|
1220
|
+
},
|
|
1221
|
+
authHeader: (creds) => ({
|
|
1222
|
+
"Access-Token": creds.accessToken,
|
|
1223
|
+
"Content-Type": "application/json",
|
|
1224
|
+
}),
|
|
1225
|
+
},
|
|
1226
|
+
|
|
1227
|
+
// ── X Ads ───────────────────────────────────────────────────
|
|
1228
|
+
x_ads: {
|
|
1229
|
+
name: "X Ads",
|
|
1230
|
+
type: "advertising",
|
|
1231
|
+
description: "X (Twitter) advertising — campaigns, line items, promoted tweets, reports, audiences",
|
|
1232
|
+
baseUrl: "https://ads-api.x.com/12",
|
|
1233
|
+
authType: "oauth",
|
|
1234
|
+
credentialKeys: ["access_token", "accountId"],
|
|
1235
|
+
capabilities: [
|
|
1236
|
+
{ name: "manage_campaigns", actions: ["create", "list", "get", "update"], description: "Manage ad campaigns" },
|
|
1237
|
+
{ name: "manage_line_items", actions: ["create", "list", "get"], description: "Manage line items and targeting" },
|
|
1238
|
+
{ name: "manage_promoted_tweets", actions: ["create", "list"], description: "Manage promoted tweets" },
|
|
1239
|
+
{ name: "manage_reports", actions: ["get"], description: "Pull campaign analytics" },
|
|
1240
|
+
{ name: "manage_audiences", actions: ["create", "list"], description: "Manage tailored audiences" },
|
|
1241
|
+
],
|
|
1242
|
+
endpoints: {
|
|
1243
|
+
list_campaigns: { method: "GET", path: "/accounts/{accountId}/campaigns", query: ["count", "cursor", "sort_by"] },
|
|
1244
|
+
create_campaign: { method: "POST", path: "/accounts/{accountId}/campaigns", body: { name: "", funding_instrument_id: "", daily_budget_amount_local_micro: 0, status: "PAUSED" } },
|
|
1245
|
+
get_campaign: { method: "GET", path: "/accounts/{accountId}/campaigns/{campaignId}" },
|
|
1246
|
+
update_campaign: { method: "PUT", path: "/accounts/{accountId}/campaigns/{campaignId}", body: {} },
|
|
1247
|
+
list_line_items: { method: "GET", path: "/accounts/{accountId}/line_items", query: ["campaign_ids", "count", "cursor"] },
|
|
1248
|
+
create_line_item: { method: "POST", path: "/accounts/{accountId}/line_items", body: { campaign_id: "", objective: "", placements: [], bid_amount_local_micro: 0 } },
|
|
1249
|
+
list_promoted_tweets: { method: "GET", path: "/accounts/{accountId}/promoted_tweets", query: ["line_item_ids", "count"] },
|
|
1250
|
+
create_promoted_tweet: { method: "POST", path: "/accounts/{accountId}/promoted_tweets", body: { line_item_id: "", tweet_ids: [] } },
|
|
1251
|
+
get_stats: { method: "GET", path: "/stats/accounts/{accountId}", query: ["entity", "entity_ids", "start_time", "end_time", "granularity", "metric_groups"] },
|
|
1252
|
+
create_audience: { method: "POST", path: "/accounts/{accountId}/tailored_audiences", body: { name: "", list_type: "" } },
|
|
1253
|
+
list_audiences: { method: "GET", path: "/accounts/{accountId}/tailored_audiences", query: ["count", "cursor"] },
|
|
1254
|
+
},
|
|
1255
|
+
authHeader: (creds) => ({
|
|
1256
|
+
"Authorization": `Bearer ${creds.access_token}`,
|
|
1257
|
+
"Content-Type": "application/json",
|
|
1258
|
+
}),
|
|
1259
|
+
},
|
|
1260
|
+
|
|
1261
|
+
// ── LinkedIn Ads ────────────────────────────────────────────
|
|
1262
|
+
linkedin_ads: {
|
|
1263
|
+
name: "LinkedIn Ads",
|
|
1264
|
+
type: "advertising",
|
|
1265
|
+
description: "Professional advertising — campaigns, campaign groups, creatives, reports, audiences",
|
|
1266
|
+
baseUrl: "https://api.linkedin.com/rest",
|
|
1267
|
+
authType: "oauth",
|
|
1268
|
+
credentialKeys: ["access_token", "adAccountId"],
|
|
1269
|
+
capabilities: [
|
|
1270
|
+
{ name: "manage_campaigns", actions: ["create", "list", "get", "update"], description: "Manage ad campaigns" },
|
|
1271
|
+
{ name: "manage_campaign_groups", actions: ["create", "list"], description: "Manage campaign groups" },
|
|
1272
|
+
{ name: "manage_creatives", actions: ["create", "list"], description: "Manage ad creatives" },
|
|
1273
|
+
{ name: "manage_reports", actions: ["get"], description: "Pull campaign analytics" },
|
|
1274
|
+
{ name: "manage_audiences", actions: ["create", "list"], description: "Manage matched audiences" },
|
|
1275
|
+
],
|
|
1276
|
+
endpoints: {
|
|
1277
|
+
list_campaigns: { method: "GET", path: "/adCampaigns", query: ["q", "search", "count", "start"] },
|
|
1278
|
+
create_campaign: { method: "POST", path: "/adCampaigns", body: { account: "", name: "", type: "SPONSORED_UPDATES", status: "PAUSED" } },
|
|
1279
|
+
get_campaign: { method: "GET", path: "/adCampaigns/{campaignId}" },
|
|
1280
|
+
update_campaign: { method: "POST", path: "/adCampaigns/{campaignId}", body: {} },
|
|
1281
|
+
list_campaign_groups: { method: "GET", path: "/adCampaignGroups", query: ["q", "search", "count"] },
|
|
1282
|
+
create_campaign_group: { method: "POST", path: "/adCampaignGroups", body: { account: "", name: "", status: "ACTIVE" } },
|
|
1283
|
+
list_creatives: { method: "GET", path: "/adCreatives", query: ["q", "search", "campaigns", "count"] },
|
|
1284
|
+
create_creative: { method: "POST", path: "/adCreatives", body: { campaign: "", reference: "" } },
|
|
1285
|
+
get_analytics: { method: "GET", path: "/adAnalytics", query: ["q", "dateRange", "campaigns", "pivot", "timeGranularity", "fields"] },
|
|
1286
|
+
create_audience: { method: "POST", path: "/dmpSegments", body: { name: "", account: "", type: "" } },
|
|
1287
|
+
list_audiences: { method: "GET", path: "/dmpSegments", query: ["q", "account", "count"] },
|
|
1288
|
+
},
|
|
1289
|
+
authHeader: (creds) => ({
|
|
1290
|
+
"Authorization": `Bearer ${creds.access_token}`,
|
|
1291
|
+
"Content-Type": "application/json",
|
|
1292
|
+
"LinkedIn-Version": "202402",
|
|
1293
|
+
"X-Restli-Protocol-Version": "2.0.0",
|
|
1294
|
+
}),
|
|
1295
|
+
},
|
|
1296
|
+
|
|
1297
|
+
// ── Instagram Ads ───────────────────────────────────────────
|
|
1298
|
+
instagram_ads: {
|
|
1299
|
+
name: "Instagram Ads",
|
|
1300
|
+
type: "advertising",
|
|
1301
|
+
description: "Instagram advertising — campaigns, ad sets, ads, insights via Facebook Marketing API",
|
|
1302
|
+
baseUrl: "https://graph.facebook.com/v19.0",
|
|
1303
|
+
authType: "access_token",
|
|
1304
|
+
credentialKeys: ["accessToken", "adAccountId"],
|
|
1305
|
+
capabilities: [
|
|
1306
|
+
{ name: "manage_campaigns", actions: ["create", "list"], description: "Manage Instagram ad campaigns" },
|
|
1307
|
+
{ name: "manage_adsets", actions: ["create", "list"], description: "Manage ad sets with Instagram placement" },
|
|
1308
|
+
{ name: "manage_ads", actions: ["create", "list"], description: "Manage Instagram ad creatives" },
|
|
1309
|
+
{ name: "manage_insights", actions: ["get"], description: "View Instagram ad performance" },
|
|
1310
|
+
],
|
|
1311
|
+
endpoints: {
|
|
1312
|
+
create_campaign: { method: "POST", path: "/act_{adAccountId}/campaigns", body: { name: "", objective: "", status: "PAUSED", special_ad_categories: [] } },
|
|
1313
|
+
list_campaigns: { method: "GET", path: "/act_{adAccountId}/campaigns", query: ["fields", "limit", "effective_status"] },
|
|
1314
|
+
create_adset: { method: "POST", path: "/act_{adAccountId}/adsets", body: { name: "", campaign_id: "", daily_budget: 0, targeting: { publisher_platforms: ["instagram"] }, status: "PAUSED" } },
|
|
1315
|
+
list_adsets: { method: "GET", path: "/act_{adAccountId}/adsets", query: ["fields", "limit"] },
|
|
1316
|
+
create_ad: { method: "POST", path: "/act_{adAccountId}/ads", body: { name: "", adset_id: "", creative: {}, status: "PAUSED" } },
|
|
1317
|
+
list_ads: { method: "GET", path: "/act_{adAccountId}/ads", query: ["fields", "limit"] },
|
|
1318
|
+
get_insights: { method: "GET", path: "/act_{adAccountId}/insights", query: ["fields", "date_preset", "level", "filtering"] },
|
|
1319
|
+
get_ad_previews: { method: "GET", path: "/{adId}/previews", query: ["ad_format"] },
|
|
1320
|
+
},
|
|
1321
|
+
authHeader: (creds) => ({
|
|
1322
|
+
"Authorization": `Bearer ${creds.accessToken}`,
|
|
1323
|
+
"Content-Type": "application/json",
|
|
1324
|
+
}),
|
|
1325
|
+
},
|
|
1326
|
+
|
|
1327
|
+
// ── Smartlead ───────────────────────────────────────────────
|
|
1328
|
+
smartlead: {
|
|
1329
|
+
name: "Smartlead",
|
|
1330
|
+
type: "marketing",
|
|
1331
|
+
description: "Cold email outreach — campaigns, leads, sequences, email accounts",
|
|
1332
|
+
baseUrl: "https://server.smartlead.ai/api/v1",
|
|
1333
|
+
authType: "api_key",
|
|
1334
|
+
credentialKeys: ["apiKey"],
|
|
1335
|
+
capabilities: [
|
|
1336
|
+
{ name: "manage_campaigns", actions: ["create", "list", "get", "update"], description: "Manage outreach campaigns" },
|
|
1337
|
+
{ name: "manage_leads", actions: ["add", "list", "get"], description: "Add and manage leads" },
|
|
1338
|
+
{ name: "manage_sequences", actions: ["create", "list"], description: "Create email sequences" },
|
|
1339
|
+
{ name: "manage_email_accounts", actions: ["list", "add"], description: "Manage sending email accounts" },
|
|
1340
|
+
],
|
|
1341
|
+
endpoints: {
|
|
1342
|
+
create_campaign: { method: "POST", path: "/campaigns/create", query: ["api_key"], body: { name: "" } },
|
|
1343
|
+
list_campaigns: { method: "GET", path: "/campaigns", query: ["api_key"] },
|
|
1344
|
+
get_campaign: { method: "GET", path: "/campaigns/{campaignId}", query: ["api_key"] },
|
|
1345
|
+
update_campaign: { method: "POST", path: "/campaigns/{campaignId}/settings", query: ["api_key"], body: {} },
|
|
1346
|
+
add_leads: { method: "POST", path: "/campaigns/{campaignId}/leads", query: ["api_key"], body: { lead_list: [] } },
|
|
1347
|
+
list_leads: { method: "GET", path: "/campaigns/{campaignId}/leads", query: ["api_key", "offset", "limit"] },
|
|
1348
|
+
get_lead: { method: "GET", path: "/leads/{leadId}", query: ["api_key"] },
|
|
1349
|
+
add_email_account: { method: "POST", path: "/email-accounts/save", query: ["api_key"], body: { from_name: "", from_email: "", smtp_host: "", smtp_port: 587 } },
|
|
1350
|
+
list_email_accounts: { method: "GET", path: "/email-accounts", query: ["api_key"] },
|
|
1351
|
+
get_campaign_stats: { method: "GET", path: "/campaigns/{campaignId}/analytics", query: ["api_key"] },
|
|
1352
|
+
create_sequence: { method: "POST", path: "/campaigns/{campaignId}/sequences", query: ["api_key"], body: { sequences: [] } },
|
|
1353
|
+
list_sequences: { method: "GET", path: "/campaigns/{campaignId}/sequences", query: ["api_key"] },
|
|
1354
|
+
},
|
|
1355
|
+
authHeader: (creds) => ({
|
|
1356
|
+
"Content-Type": "application/json",
|
|
1357
|
+
}),
|
|
1358
|
+
},
|
|
1359
|
+
|
|
1360
|
+
// ── Zapier ──────────────────────────────────────────────────
|
|
1361
|
+
zapier: {
|
|
1362
|
+
name: "Zapier",
|
|
1363
|
+
type: "automation",
|
|
1364
|
+
description: "Workflow automation — zaps, actions (limited API, most interaction via webhooks)",
|
|
1365
|
+
baseUrl: "https://api.zapier.com/v1",
|
|
1366
|
+
authType: "api_key",
|
|
1367
|
+
credentialKeys: ["apiKey"],
|
|
1368
|
+
capabilities: [
|
|
1369
|
+
{ name: "manage_zaps", actions: ["list", "get", "enable", "disable"], description: "View and toggle zaps" },
|
|
1370
|
+
{ name: "manage_actions", actions: ["list"], description: "List available actions" },
|
|
1371
|
+
],
|
|
1372
|
+
endpoints: {
|
|
1373
|
+
list_zaps: { method: "GET", path: "/zaps" },
|
|
1374
|
+
get_zap: { method: "GET", path: "/zaps/{zapId}" },
|
|
1375
|
+
enable_zap: { method: "PUT", path: "/zaps/{zapId}", body: { is_enabled: true } },
|
|
1376
|
+
disable_zap: { method: "PUT", path: "/zaps/{zapId}", body: { is_enabled: false } },
|
|
1377
|
+
list_actions: { method: "GET", path: "/actions" },
|
|
1378
|
+
},
|
|
1379
|
+
authHeader: (creds) => ({
|
|
1380
|
+
"Authorization": `Bearer ${creds.apiKey}`,
|
|
1381
|
+
"Content-Type": "application/json",
|
|
1382
|
+
}),
|
|
1383
|
+
},
|
|
1384
|
+
|
|
1385
|
+
// ── MuleSoft ────────────────────────────────────────────────
|
|
1386
|
+
mulesoft: {
|
|
1387
|
+
name: "MuleSoft",
|
|
1388
|
+
type: "integration",
|
|
1389
|
+
description: "Integration platform — APIs, applications, environments via Anypoint Platform",
|
|
1390
|
+
baseUrl: "https://anypoint.mulesoft.com",
|
|
1391
|
+
authType: "token",
|
|
1392
|
+
credentialKeys: ["token"],
|
|
1393
|
+
capabilities: [
|
|
1394
|
+
{ name: "manage_apis", actions: ["list", "get"], description: "View API definitions and specifications" },
|
|
1395
|
+
{ name: "manage_applications", actions: ["list", "get", "deploy"], description: "Deploy and manage applications" },
|
|
1396
|
+
{ name: "manage_environments", actions: ["list"], description: "List deployment environments" },
|
|
1397
|
+
],
|
|
1398
|
+
endpoints: {
|
|
1399
|
+
list_organizations: { method: "GET", path: "/accounts/api/me" },
|
|
1400
|
+
list_environments: { method: "GET", path: "/accounts/api/organizations/{orgId}/environments" },
|
|
1401
|
+
list_apis: { method: "GET", path: "/apimanager/api/v1/organizations/{orgId}/environments/{envId}/apis", query: ["limit", "offset"] },
|
|
1402
|
+
get_api: { method: "GET", path: "/apimanager/api/v1/organizations/{orgId}/environments/{envId}/apis/{apiId}" },
|
|
1403
|
+
list_applications: { method: "GET", path: "/amc/application-manager/api/v2/organizations/{orgId}/environments/{envId}/deployments" },
|
|
1404
|
+
get_application: { method: "GET", path: "/amc/application-manager/api/v2/organizations/{orgId}/environments/{envId}/deployments/{deploymentId}" },
|
|
1405
|
+
deploy_application: { method: "POST", path: "/amc/application-manager/api/v2/organizations/{orgId}/environments/{envId}/deployments", body: { name: "", target: {} } },
|
|
1406
|
+
},
|
|
1407
|
+
authHeader: (creds) => ({
|
|
1408
|
+
"Authorization": `Bearer ${creds.token}`,
|
|
1409
|
+
"Content-Type": "application/json",
|
|
1410
|
+
}),
|
|
1411
|
+
},
|
|
1412
|
+
|
|
1413
|
+
// ── Microsoft Azure ─────────────────────────────────────────
|
|
1414
|
+
azure: {
|
|
1415
|
+
name: "Microsoft Azure",
|
|
1416
|
+
type: "cloud",
|
|
1417
|
+
description: "Cloud infrastructure — resources, resource groups, storage, VMs via Azure Resource Manager",
|
|
1418
|
+
baseUrl: "https://management.azure.com",
|
|
1419
|
+
authType: "oauth",
|
|
1420
|
+
credentialKeys: ["access_token", "subscriptionId"],
|
|
1421
|
+
capabilities: [
|
|
1422
|
+
{ name: "manage_resources", actions: ["list", "get", "create", "delete"], description: "Manage Azure resources" },
|
|
1423
|
+
{ name: "manage_resource_groups", actions: ["list", "create"], description: "Manage resource groups" },
|
|
1424
|
+
{ name: "manage_storage", actions: ["list_accounts", "list_containers"], description: "Manage storage accounts" },
|
|
1425
|
+
{ name: "manage_vms", actions: ["list", "get", "start", "stop"], description: "Manage virtual machines" },
|
|
1426
|
+
],
|
|
1427
|
+
endpoints: {
|
|
1428
|
+
list_subscriptions: { method: "GET", path: "/subscriptions", query: ["api-version=2022-12-01"] },
|
|
1429
|
+
list_resource_groups: { method: "GET", path: "/subscriptions/{subscriptionId}/resourcegroups", query: ["api-version=2023-07-01"] },
|
|
1430
|
+
create_resource_group: { method: "PUT", path: "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", query: ["api-version=2023-07-01"], body: { location: "" } },
|
|
1431
|
+
list_resources: { method: "GET", path: "/subscriptions/{subscriptionId}/resources", query: ["api-version=2023-07-01"] },
|
|
1432
|
+
get_resource: { method: "GET", path: "/{resourceId}", query: ["api-version=2023-07-01"] },
|
|
1433
|
+
delete_resource: { method: "DELETE", path: "/{resourceId}", query: ["api-version=2023-07-01"] },
|
|
1434
|
+
list_storage_accounts: { method: "GET", path: "/subscriptions/{subscriptionId}/providers/Microsoft.Storage/storageAccounts", query: ["api-version=2023-01-01"] },
|
|
1435
|
+
list_vms: { method: "GET", path: "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachines", query: ["api-version=2023-09-01"] },
|
|
1436
|
+
get_vm: { method: "GET", path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}", query: ["api-version=2023-09-01"] },
|
|
1437
|
+
start_vm: { method: "POST", path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/start", query: ["api-version=2023-09-01"] },
|
|
1438
|
+
stop_vm: { method: "POST", path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/deallocate", query: ["api-version=2023-09-01"] },
|
|
1439
|
+
},
|
|
1440
|
+
authHeader: (creds) => ({
|
|
1441
|
+
"Authorization": `Bearer ${creds.access_token}`,
|
|
1442
|
+
"Content-Type": "application/json",
|
|
1443
|
+
}),
|
|
1444
|
+
},
|
|
1445
|
+
|
|
1446
|
+
// ── Pipedrive ───────────────────────────────────────────────
|
|
1447
|
+
pipedrive: {
|
|
1448
|
+
name: "Pipedrive",
|
|
1449
|
+
type: "crm",
|
|
1450
|
+
description: "Sales CRM — deals, persons, organizations, activities, pipelines, notes",
|
|
1451
|
+
baseUrl: "https://api.pipedrive.com/v1",
|
|
1452
|
+
authType: "api_key",
|
|
1453
|
+
credentialKeys: ["apiKey"],
|
|
1454
|
+
capabilities: [
|
|
1455
|
+
{ name: "manage_deals", actions: ["create", "list", "get", "update", "delete"], description: "Full deal lifecycle management" },
|
|
1456
|
+
{ name: "manage_persons", actions: ["create", "list", "get", "update", "delete"], description: "Manage contact persons" },
|
|
1457
|
+
{ name: "manage_organizations", actions: ["create", "list", "get"], description: "Manage organizations" },
|
|
1458
|
+
{ name: "manage_activities", actions: ["create", "list", "get"], description: "Schedule and track activities" },
|
|
1459
|
+
{ name: "manage_pipelines", actions: ["list", "get"], description: "View sales pipelines and stages" },
|
|
1460
|
+
{ name: "manage_notes", actions: ["create", "list"], description: "Add and view notes" },
|
|
1461
|
+
],
|
|
1462
|
+
endpoints: {
|
|
1463
|
+
create_deal: { method: "POST", path: "/deals", query: ["api_token"], body: { title: "" } },
|
|
1464
|
+
list_deals: { method: "GET", path: "/deals", query: ["api_token", "start", "limit", "status", "sort"] },
|
|
1465
|
+
get_deal: { method: "GET", path: "/deals/{dealId}", query: ["api_token"] },
|
|
1466
|
+
update_deal: { method: "PUT", path: "/deals/{dealId}", query: ["api_token"], body: {} },
|
|
1467
|
+
delete_deal: { method: "DELETE", path: "/deals/{dealId}", query: ["api_token"] },
|
|
1468
|
+
create_person: { method: "POST", path: "/persons", query: ["api_token"], body: { name: "" } },
|
|
1469
|
+
list_persons: { method: "GET", path: "/persons", query: ["api_token", "start", "limit", "sort"] },
|
|
1470
|
+
get_person: { method: "GET", path: "/persons/{personId}", query: ["api_token"] },
|
|
1471
|
+
update_person: { method: "PUT", path: "/persons/{personId}", query: ["api_token"], body: {} },
|
|
1472
|
+
delete_person: { method: "DELETE", path: "/persons/{personId}", query: ["api_token"] },
|
|
1473
|
+
create_organization: { method: "POST", path: "/organizations", query: ["api_token"], body: { name: "" } },
|
|
1474
|
+
list_organizations: { method: "GET", path: "/organizations", query: ["api_token", "start", "limit", "sort"] },
|
|
1475
|
+
create_activity: { method: "POST", path: "/activities", query: ["api_token"], body: { subject: "", type: "" } },
|
|
1476
|
+
list_activities: { method: "GET", path: "/activities", query: ["api_token", "start", "limit", "type"] },
|
|
1477
|
+
list_pipelines: { method: "GET", path: "/pipelines", query: ["api_token"] },
|
|
1478
|
+
get_pipeline: { method: "GET", path: "/pipelines/{pipelineId}", query: ["api_token"] },
|
|
1479
|
+
create_note: { method: "POST", path: "/notes", query: ["api_token"], body: { content: "" } },
|
|
1480
|
+
list_notes: { method: "GET", path: "/notes", query: ["api_token", "start", "limit", "sort"] },
|
|
1481
|
+
search_items: { method: "GET", path: "/itemSearch", query: ["api_token", "term", "item_types", "fields"] },
|
|
1482
|
+
},
|
|
1483
|
+
authHeader: (creds) => ({
|
|
1484
|
+
"Content-Type": "application/json",
|
|
1485
|
+
}),
|
|
1486
|
+
},
|
|
1487
|
+
|
|
1488
|
+
// ── LinkedIn ────────────────────────────────────────────────
|
|
1489
|
+
linkedin: {
|
|
1490
|
+
name: "LinkedIn",
|
|
1491
|
+
type: "social",
|
|
1492
|
+
description: "Professional network — posts, profile, connections, organizations via LinkedIn API",
|
|
1493
|
+
baseUrl: "https://api.linkedin.com/rest",
|
|
1494
|
+
authType: "oauth",
|
|
1495
|
+
credentialKeys: ["access_token"],
|
|
1496
|
+
capabilities: [
|
|
1497
|
+
{ name: "manage_posts", actions: ["create", "list", "delete"], description: "Create and manage posts" },
|
|
1498
|
+
{ name: "manage_profile", actions: ["get"], description: "View profile information" },
|
|
1499
|
+
{ name: "manage_connections", actions: ["list"], description: "View connections" },
|
|
1500
|
+
{ name: "manage_organizations", actions: ["get", "list_posts"], description: "View company pages and posts" },
|
|
1501
|
+
],
|
|
1502
|
+
endpoints: {
|
|
1503
|
+
create_post: { method: "POST", path: "/posts", body: { author: "", commentary: "", visibility: "PUBLIC", distribution: { feedDistribution: "MAIN_FEED" }, lifecycleState: "PUBLISHED" } },
|
|
1504
|
+
get_profile: { method: "GET", path: "/me", query: ["projection"] },
|
|
1505
|
+
list_connections: { method: "GET", path: "/connections", query: ["start", "count", "projection"] },
|
|
1506
|
+
get_organization: { method: "GET", path: "/organizations/{organizationId}", query: ["projection"] },
|
|
1507
|
+
list_org_posts: { method: "GET", path: "/posts", query: ["author", "q", "count", "start"] },
|
|
1508
|
+
delete_post: { method: "DELETE", path: "/posts/{postId}" },
|
|
1509
|
+
get_post: { method: "GET", path: "/posts/{postId}" },
|
|
1510
|
+
upload_image: { method: "POST", path: "/images", query: ["action=initializeUpload"], body: { initializeUploadRequest: { owner: "" } } },
|
|
1511
|
+
},
|
|
1512
|
+
authHeader: (creds) => ({
|
|
1513
|
+
"Authorization": `Bearer ${creds.access_token}`,
|
|
1514
|
+
"Content-Type": "application/json",
|
|
1515
|
+
"LinkedIn-Version": "202402",
|
|
1516
|
+
"X-Restli-Protocol-Version": "2.0.0",
|
|
1517
|
+
}),
|
|
1518
|
+
},
|
|
1519
|
+
|
|
764
1520
|
};
|
|
765
1521
|
|
|
766
1522
|
// ── Helpers ────────────────────────────────────────────────
|