@bubblelab/bubble-core 0.1.278 → 0.1.281
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/dist/bubble-bundle.d.ts +199 -158
- package/dist/bubble-factory.d.ts.map +1 -1
- package/dist/bubble-factory.js +6 -0
- package/dist/bubble-factory.js.map +1 -1
- package/dist/bubble-trigger/index.d.ts +2 -0
- package/dist/bubble-trigger/index.d.ts.map +1 -0
- package/dist/bubble-trigger/index.js +2 -0
- package/dist/bubble-trigger/index.js.map +1 -0
- package/dist/bubble-trigger/types.d.ts +87 -0
- package/dist/bubble-trigger/types.d.ts.map +1 -0
- package/dist/bubble-trigger/types.js +14 -0
- package/dist/bubble-trigger/types.js.map +1 -0
- package/dist/bubbles/service-bubble/agi-inc.d.ts +20 -20
- package/dist/bubbles/service-bubble/ai-agent.d.ts +74 -74
- package/dist/bubbles/service-bubble/airtable.d.ts +76 -76
- package/dist/bubbles/service-bubble/apify/actors/app-rankings-scraper.d.ts +6 -6
- package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +2 -2
- package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +8 -8
- package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts +2 -2
- package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +22 -22
- package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts +38 -38
- package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +52 -52
- package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +6 -6
- package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +12 -12
- package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +12 -12
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +132 -132
- package/dist/bubbles/service-bubble/apify/apify.d.ts +18 -18
- package/dist/bubbles/service-bubble/asana/asana.d.ts +1 -1
- package/dist/bubbles/service-bubble/asana/asana.schema.d.ts +1 -1
- package/dist/bubbles/service-bubble/ashby/ashby.d.ts +20 -20
- package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +28 -28
- package/dist/bubbles/service-bubble/assembled/assembled.d.ts +6 -6
- package/dist/bubbles/service-bubble/assembled/assembled.schema.d.ts +6 -6
- package/dist/bubbles/service-bubble/attio/attio.d.ts +6 -6
- package/dist/bubbles/service-bubble/attio/attio.schema.d.ts +6 -6
- package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +1 -1
- package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +1 -1
- package/dist/bubbles/service-bubble/clerk/clerk.d.ts +690 -0
- package/dist/bubbles/service-bubble/clerk/clerk.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/clerk/clerk.js +579 -0
- package/dist/bubbles/service-bubble/clerk/clerk.js.map +1 -0
- package/dist/bubbles/service-bubble/clerk/clerk.schema.d.ts +653 -0
- package/dist/bubbles/service-bubble/clerk/clerk.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/clerk/clerk.schema.js +460 -0
- package/dist/bubbles/service-bubble/clerk/clerk.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/clerk/index.d.ts +3 -0
- package/dist/bubbles/service-bubble/clerk/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/clerk/index.js +3 -0
- package/dist/bubbles/service-bubble/clerk/index.js.map +1 -0
- package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +4 -4
- package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +8 -8
- package/dist/bubbles/service-bubble/discord/discord.d.ts +12 -12
- package/dist/bubbles/service-bubble/discord/discord.schema.d.ts +12 -12
- package/dist/bubbles/service-bubble/firecrawl.d.ts +330 -330
- package/dist/bubbles/service-bubble/followupboss.d.ts +4 -4
- package/dist/bubbles/service-bubble/github.d.ts +60 -60
- package/dist/bubbles/service-bubble/gmail.d.ts +164 -164
- package/dist/bubbles/service-bubble/google-calendar.d.ts +6 -6
- package/dist/bubbles/service-bubble/google-drive.d.ts +4 -4
- package/dist/bubbles/service-bubble/google-sheets.d.ts +1811 -0
- package/dist/bubbles/service-bubble/google-sheets.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets.js +904 -0
- package/dist/bubbles/service-bubble/google-sheets.js.map +1 -0
- package/dist/bubbles/service-bubble/http.d.ts +6 -6
- package/dist/bubbles/service-bubble/hubspot/hubspot.d.ts +2 -2
- package/dist/bubbles/service-bubble/hubspot/hubspot.schema.d.ts +2 -2
- package/dist/bubbles/service-bubble/insforge-db.d.ts +8 -8
- package/dist/bubbles/service-bubble/jira/jira.d.ts +30 -30
- package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +36 -36
- package/dist/bubbles/service-bubble/looker/index.d.ts +3 -0
- package/dist/bubbles/service-bubble/looker/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/looker/index.js +3 -0
- package/dist/bubbles/service-bubble/looker/index.js.map +1 -0
- package/dist/bubbles/service-bubble/looker/looker.d.ts +768 -0
- package/dist/bubbles/service-bubble/looker/looker.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/looker/looker.js +319 -0
- package/dist/bubbles/service-bubble/looker/looker.js.map +1 -0
- package/dist/bubbles/service-bubble/looker/looker.schema.d.ts +735 -0
- package/dist/bubbles/service-bubble/looker/looker.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/looker/looker.schema.js +264 -0
- package/dist/bubbles/service-bubble/looker/looker.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/metabase/index.d.ts +4 -0
- package/dist/bubbles/service-bubble/metabase/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/metabase/index.js +4 -0
- package/dist/bubbles/service-bubble/metabase/index.js.map +1 -0
- package/dist/bubbles/service-bubble/metabase/metabase.d.ts +746 -0
- package/dist/bubbles/service-bubble/metabase/metabase.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/metabase/metabase.js +221 -0
- package/dist/bubbles/service-bubble/metabase/metabase.js.map +1 -0
- package/dist/bubbles/service-bubble/metabase/metabase.schema.d.ts +1125 -0
- package/dist/bubbles/service-bubble/metabase/metabase.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/metabase/metabase.schema.js +222 -0
- package/dist/bubbles/service-bubble/metabase/metabase.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/metabase/metabase.utils.d.ts +15 -0
- package/dist/bubbles/service-bubble/metabase/metabase.utils.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/metabase/metabase.utils.js +32 -0
- package/dist/bubbles/service-bubble/metabase/metabase.utils.js.map +1 -0
- package/dist/bubbles/service-bubble/notion/notion.d.ts +168 -168
- package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +16 -16
- package/dist/bubbles/service-bubble/postgresql.d.ts +8 -8
- package/dist/bubbles/service-bubble/posthog/posthog.d.ts +10 -10
- package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +14 -14
- package/dist/bubbles/service-bubble/pylon/index.d.ts +3 -0
- package/dist/bubbles/service-bubble/pylon/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/pylon/index.js +3 -0
- package/dist/bubbles/service-bubble/pylon/index.js.map +1 -0
- package/dist/bubbles/service-bubble/pylon/pylon.d.ts +435 -0
- package/dist/bubbles/service-bubble/pylon/pylon.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/pylon/pylon.js +375 -0
- package/dist/bubbles/service-bubble/pylon/pylon.js.map +1 -0
- package/dist/bubbles/service-bubble/pylon/pylon.schema.d.ts +408 -0
- package/dist/bubbles/service-bubble/pylon/pylon.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/pylon/pylon.schema.js +249 -0
- package/dist/bubbles/service-bubble/pylon/pylon.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/resend.d.ts +12 -12
- package/dist/bubbles/service-bubble/slack/slack.d.ts +392 -392
- package/dist/bubbles/service-bubble/slack.d.ts +5869 -0
- package/dist/bubbles/service-bubble/slack.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/slack.js +1536 -0
- package/dist/bubbles/service-bubble/slack.js.map +1 -0
- package/dist/bubbles/service-bubble/snowflake/snowflake.d.ts +4 -4
- package/dist/bubbles/service-bubble/snowflake/snowflake.schema.d.ts +4 -4
- package/dist/bubbles/service-bubble/sortly/sortly.d.ts +36 -36
- package/dist/bubbles/service-bubble/sortly/sortly.schema.d.ts +40 -40
- package/dist/bubbles/service-bubble/stripe/stripe.d.ts +24 -24
- package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +28 -28
- package/dist/bubbles/service-bubble/xero/xero.d.ts +2 -2
- package/dist/bubbles/service-bubble/xero/xero.schema.d.ts +2 -2
- package/dist/bubbles/service-bubble/zendesk/zendesk.d.ts +20 -20
- package/dist/bubbles/service-bubble/zendesk/zendesk.schema.d.ts +20 -20
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +6 -6
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +8 -8
- package/dist/bubbles/tool-bubble/app-rankings-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +20 -20
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts +3 -0
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js +3 -0
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js.map +1 -0
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts +160 -0
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js +706 -0
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts +93 -0
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js +50 -0
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js.map +1 -0
- package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +384 -384
- package/dist/bubbles/tool-bubble/people-search-tool.d.ts +44 -44
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +10 -10
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +60 -60
- package/dist/bubbles/tool-bubble/twitter-tool.d.ts +134 -134
- package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/youtube-tool.d.ts +20 -20
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +114 -0
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +1 -0
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +777 -0
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +1 -0
- package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +12 -12
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +8 -8
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +2 -2
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +34 -34
- package/dist/bubbles.json +1843 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/types/ai-models.d.ts +4 -0
- package/dist/types/ai-models.d.ts.map +1 -0
- package/dist/types/ai-models.js +16 -0
- package/dist/types/ai-models.js.map +1 -0
- package/dist/utils/param-helper.d.ts +2 -0
- package/dist/utils/param-helper.d.ts.map +1 -0
- package/dist/utils/param-helper.js +5 -0
- package/dist/utils/param-helper.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metabase.schema.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/metabase/metabase.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAiCY,CAAC;AAEhD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA0BI,CAAC;AAEzC,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;gCAkBV,CAAC;AAEnC,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA4BqB,CAAC;AAErD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAwBqC,CAAC;AAoD5E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAK/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACnE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAuCvE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAK/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// DATA SCHEMAS - Metabase API Response Objects
|
|
4
|
+
// ============================================================================
|
|
5
|
+
export const MetabaseDashcardSchema = z
|
|
6
|
+
.object({
|
|
7
|
+
id: z.number().describe('Unique dashcard identifier'),
|
|
8
|
+
card_id: z.number().nullable().describe('ID of the card in this dashcard'),
|
|
9
|
+
card: z
|
|
10
|
+
.object({
|
|
11
|
+
id: z
|
|
12
|
+
.number()
|
|
13
|
+
.nullable()
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('Card ID (null/absent for text/heading dashcards)'),
|
|
16
|
+
name: z
|
|
17
|
+
.string()
|
|
18
|
+
.nullable()
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('Card name (null/absent for text/heading dashcards)'),
|
|
21
|
+
display: z.string().optional().describe('Card display type'),
|
|
22
|
+
description: z
|
|
23
|
+
.string()
|
|
24
|
+
.nullable()
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('Card description'),
|
|
27
|
+
})
|
|
28
|
+
.passthrough()
|
|
29
|
+
.nullable()
|
|
30
|
+
.optional()
|
|
31
|
+
.describe('Embedded card metadata (null for virtual/text dashcards)'),
|
|
32
|
+
row: z.number().describe('Row position on dashboard grid'),
|
|
33
|
+
col: z.number().describe('Column position on dashboard grid'),
|
|
34
|
+
size_x: z.number().describe('Width in grid units'),
|
|
35
|
+
size_y: z.number().describe('Height in grid units'),
|
|
36
|
+
})
|
|
37
|
+
.passthrough()
|
|
38
|
+
.describe('Dashboard card (dashcard) object');
|
|
39
|
+
export const MetabaseDashboardSchema = z
|
|
40
|
+
.object({
|
|
41
|
+
id: z.number().describe('Unique dashboard identifier'),
|
|
42
|
+
name: z.string().describe('Dashboard name'),
|
|
43
|
+
description: z
|
|
44
|
+
.string()
|
|
45
|
+
.nullable()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe('Dashboard description'),
|
|
48
|
+
collection_id: z
|
|
49
|
+
.number()
|
|
50
|
+
.nullable()
|
|
51
|
+
.optional()
|
|
52
|
+
.describe('Collection the dashboard belongs to'),
|
|
53
|
+
dashcards: z
|
|
54
|
+
.array(MetabaseDashcardSchema)
|
|
55
|
+
.optional()
|
|
56
|
+
.describe('List of dashcards on this dashboard'),
|
|
57
|
+
parameters: z
|
|
58
|
+
.array(z.record(z.unknown()))
|
|
59
|
+
.optional()
|
|
60
|
+
.describe('Dashboard filter parameters'),
|
|
61
|
+
created_at: z.string().optional().describe('Creation timestamp'),
|
|
62
|
+
updated_at: z.string().optional().describe('Last update timestamp'),
|
|
63
|
+
})
|
|
64
|
+
.passthrough()
|
|
65
|
+
.describe('Metabase dashboard object');
|
|
66
|
+
export const MetabaseDashboardListItemSchema = z
|
|
67
|
+
.object({
|
|
68
|
+
id: z.number().describe('Unique dashboard identifier'),
|
|
69
|
+
name: z.string().describe('Dashboard name'),
|
|
70
|
+
description: z
|
|
71
|
+
.string()
|
|
72
|
+
.nullable()
|
|
73
|
+
.optional()
|
|
74
|
+
.describe('Dashboard description'),
|
|
75
|
+
collection_id: z
|
|
76
|
+
.number()
|
|
77
|
+
.nullable()
|
|
78
|
+
.optional()
|
|
79
|
+
.describe('Collection the dashboard belongs to'),
|
|
80
|
+
model: z.string().optional().describe('Entity model type'),
|
|
81
|
+
created_at: z.string().optional().describe('Creation timestamp'),
|
|
82
|
+
})
|
|
83
|
+
.passthrough()
|
|
84
|
+
.describe('Dashboard list item');
|
|
85
|
+
export const MetabaseCardSchema = z
|
|
86
|
+
.object({
|
|
87
|
+
id: z.number().describe('Unique card identifier'),
|
|
88
|
+
name: z.string().describe('Card name'),
|
|
89
|
+
description: z.string().nullable().optional().describe('Card description'),
|
|
90
|
+
display: z.string().optional().describe('Visualization type'),
|
|
91
|
+
collection_id: z
|
|
92
|
+
.number()
|
|
93
|
+
.nullable()
|
|
94
|
+
.optional()
|
|
95
|
+
.describe('Collection the card belongs to'),
|
|
96
|
+
database_id: z
|
|
97
|
+
.number()
|
|
98
|
+
.nullable()
|
|
99
|
+
.optional()
|
|
100
|
+
.describe('Database this card queries'),
|
|
101
|
+
dataset_query: z
|
|
102
|
+
.record(z.unknown())
|
|
103
|
+
.optional()
|
|
104
|
+
.describe('The query definition'),
|
|
105
|
+
result_metadata: z
|
|
106
|
+
.array(z.record(z.unknown()))
|
|
107
|
+
.optional()
|
|
108
|
+
.describe('Column metadata from the result'),
|
|
109
|
+
created_at: z.string().optional().describe('Creation timestamp'),
|
|
110
|
+
updated_at: z.string().optional().describe('Last update timestamp'),
|
|
111
|
+
})
|
|
112
|
+
.passthrough()
|
|
113
|
+
.describe('Metabase card (saved question) object');
|
|
114
|
+
export const MetabaseQueryResultSchema = z
|
|
115
|
+
.object({
|
|
116
|
+
rows: z.array(z.array(z.unknown())).describe('Result data rows'),
|
|
117
|
+
cols: z
|
|
118
|
+
.array(z
|
|
119
|
+
.object({
|
|
120
|
+
name: z.string().describe('Column name'),
|
|
121
|
+
display_name: z
|
|
122
|
+
.string()
|
|
123
|
+
.optional()
|
|
124
|
+
.describe('Display name for column'),
|
|
125
|
+
base_type: z
|
|
126
|
+
.string()
|
|
127
|
+
.optional()
|
|
128
|
+
.describe('Base data type of column'),
|
|
129
|
+
})
|
|
130
|
+
.passthrough())
|
|
131
|
+
.describe('Column metadata'),
|
|
132
|
+
row_count: z.number().optional().describe('Total number of rows returned'),
|
|
133
|
+
status: z.string().optional().describe('Query execution status'),
|
|
134
|
+
})
|
|
135
|
+
.passthrough()
|
|
136
|
+
.describe('Flattened Metabase query result — rows and cols at top level');
|
|
137
|
+
// ============================================================================
|
|
138
|
+
// OPERATION SCHEMAS - Input Parameters
|
|
139
|
+
// ============================================================================
|
|
140
|
+
const credentialsField = z
|
|
141
|
+
.record(z.string())
|
|
142
|
+
.optional()
|
|
143
|
+
.describe('Credential mapping for authentication');
|
|
144
|
+
const GetDashboardSchema = z.object({
|
|
145
|
+
operation: z.literal('get_dashboard').describe('Get dashboard by ID'),
|
|
146
|
+
dashboard_id: z.number().describe('The dashboard ID to retrieve'),
|
|
147
|
+
credentials: credentialsField,
|
|
148
|
+
});
|
|
149
|
+
const ListDashboardsSchema = z.object({
|
|
150
|
+
operation: z
|
|
151
|
+
.literal('list_dashboards')
|
|
152
|
+
.describe('List all available dashboards'),
|
|
153
|
+
credentials: credentialsField,
|
|
154
|
+
});
|
|
155
|
+
const GetCardSchema = z.object({
|
|
156
|
+
operation: z.literal('get_card').describe('Get card metadata by ID'),
|
|
157
|
+
card_id: z.number().describe('The card ID to retrieve'),
|
|
158
|
+
credentials: credentialsField,
|
|
159
|
+
});
|
|
160
|
+
const QueryCardSchema = z.object({
|
|
161
|
+
operation: z
|
|
162
|
+
.literal('query_card')
|
|
163
|
+
.describe("Execute a card's query and return results"),
|
|
164
|
+
card_id: z.number().describe('The card ID to query'),
|
|
165
|
+
pivot: z
|
|
166
|
+
.boolean()
|
|
167
|
+
.optional()
|
|
168
|
+
.describe('Use the pivot endpoint (/api/card/pivot/:id/query) for pivot-table results'),
|
|
169
|
+
parameters: z
|
|
170
|
+
.record(z.unknown())
|
|
171
|
+
.optional()
|
|
172
|
+
.describe('Optional query parameters (filters)'),
|
|
173
|
+
credentials: credentialsField,
|
|
174
|
+
});
|
|
175
|
+
// ============================================================================
|
|
176
|
+
// COMBINED SCHEMAS
|
|
177
|
+
// ============================================================================
|
|
178
|
+
export const MetabaseParamsSchema = z.discriminatedUnion('operation', [
|
|
179
|
+
GetDashboardSchema,
|
|
180
|
+
ListDashboardsSchema,
|
|
181
|
+
GetCardSchema,
|
|
182
|
+
QueryCardSchema,
|
|
183
|
+
]);
|
|
184
|
+
// ============================================================================
|
|
185
|
+
// RESULT SCHEMAS
|
|
186
|
+
// ============================================================================
|
|
187
|
+
const GetDashboardResultSchema = z.object({
|
|
188
|
+
operation: z.literal('get_dashboard'),
|
|
189
|
+
success: z.boolean(),
|
|
190
|
+
error: z.string().default(''),
|
|
191
|
+
data: MetabaseDashboardSchema.optional(),
|
|
192
|
+
});
|
|
193
|
+
const ListDashboardsResultSchema = z.object({
|
|
194
|
+
operation: z.literal('list_dashboards'),
|
|
195
|
+
success: z.boolean(),
|
|
196
|
+
error: z.string().default(''),
|
|
197
|
+
data: z
|
|
198
|
+
.object({
|
|
199
|
+
dashboards: z.array(MetabaseDashboardListItemSchema),
|
|
200
|
+
total: z.number(),
|
|
201
|
+
})
|
|
202
|
+
.optional(),
|
|
203
|
+
});
|
|
204
|
+
const GetCardResultSchema = z.object({
|
|
205
|
+
operation: z.literal('get_card'),
|
|
206
|
+
success: z.boolean(),
|
|
207
|
+
error: z.string().default(''),
|
|
208
|
+
data: MetabaseCardSchema.optional(),
|
|
209
|
+
});
|
|
210
|
+
const QueryCardResultSchema = z.object({
|
|
211
|
+
operation: z.literal('query_card'),
|
|
212
|
+
success: z.boolean(),
|
|
213
|
+
error: z.string().default(''),
|
|
214
|
+
data: MetabaseQueryResultSchema.optional(),
|
|
215
|
+
});
|
|
216
|
+
export const MetabaseResultSchema = z.discriminatedUnion('operation', [
|
|
217
|
+
GetDashboardResultSchema,
|
|
218
|
+
ListDashboardsResultSchema,
|
|
219
|
+
GetCardResultSchema,
|
|
220
|
+
QueryCardResultSchema,
|
|
221
|
+
]);
|
|
222
|
+
//# sourceMappingURL=metabase.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metabase.schema.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/metabase/metabase.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+EAA+E;AAC/E,+CAA+C;AAC/C,+EAA+E;AAE/E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACrD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC1E,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC;QACN,EAAE,EAAE,CAAC;aACF,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,oDAAoD,CAAC;QACjE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC5D,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,kBAAkB,CAAC;KAChC,CAAC;SACD,WAAW,EAAE;SACb,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;IACvE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC1D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC7D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAClD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;CACpD,CAAC;KACD,WAAW,EAAE;KACb,QAAQ,CAAC,kCAAkC,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACtD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC3C,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,uBAAuB,CAAC;IACpC,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,qCAAqC,CAAC;IAClD,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,sBAAsB,CAAC;SAC7B,QAAQ,EAAE;SACV,QAAQ,CAAC,qCAAqC,CAAC;IAClD,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SAC5B,QAAQ,EAAE;SACV,QAAQ,CAAC,6BAA6B,CAAC;IAC1C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAChE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CACpE,CAAC;KACD,WAAW,EAAE;KACb,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC;KAC7C,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACtD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC3C,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,uBAAuB,CAAC;IACpC,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,qCAAqC,CAAC;IAClD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC1D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CACjE,CAAC;KACD,WAAW,EAAE;KACb,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACjD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC1E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC7D,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,gCAAgC,CAAC;IAC7C,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,4BAA4B,CAAC;IACzC,aAAa,EAAE,CAAC;SACb,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACnB,QAAQ,EAAE;SACV,QAAQ,CAAC,sBAAsB,CAAC;IACnC,eAAe,EAAE,CAAC;SACf,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SAC5B,QAAQ,EAAE;SACV,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAChE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CACpE,CAAC;KACD,WAAW,EAAE;KACb,QAAQ,CAAC,uCAAuC,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAChE,IAAI,EAAE,CAAC;SACJ,KAAK,CACJ,CAAC;SACE,MAAM,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QACxC,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,yBAAyB,CAAC;QACtC,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,0BAA0B,CAAC;KACxC,CAAC;SACD,WAAW,EAAE,CACjB;SACA,QAAQ,CAAC,iBAAiB,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC1E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CACjE,CAAC;KACD,WAAW,EAAE;KACb,QAAQ,CAAC,8DAA8D,CAAC,CAAC;AAE5E,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAE/E,MAAM,gBAAgB,GAAG,CAAC;KACvB,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAClB,QAAQ,EAAE;KACV,QAAQ,CAAC,uCAAuC,CAAC,CAAC;AAErD,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACrE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACjE,WAAW,EAAE,gBAAgB;CAC9B,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,CAAC;SACT,OAAO,CAAC,iBAAiB,CAAC;SAC1B,QAAQ,CAAC,+BAA+B,CAAC;IAC5C,WAAW,EAAE,gBAAgB;CAC9B,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACpE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACvD,WAAW,EAAE,gBAAgB;CAC9B,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE,CAAC;SACT,OAAO,CAAC,YAAY,CAAC;SACrB,QAAQ,CAAC,2CAA2C,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACpD,KAAK,EAAE,CAAC;SACL,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,4EAA4E,CAC7E;IACH,UAAU,EAAE,CAAC;SACV,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACnB,QAAQ,EAAE;SACV,QAAQ,CAAC,qCAAqC,CAAC;IAClD,WAAW,EAAE,gBAAgB;CAC9B,CAAC,CAAC;AAEH,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,kBAAkB,CAAC,WAAW,EAAE;IACpE,kBAAkB;IAClB,oBAAoB;IACpB,aAAa;IACb,eAAe;CAChB,CAAC,CAAC;AAKH,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7B,IAAI,EAAE,uBAAuB,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7B,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC;QACN,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,+BAA+B,CAAC;QACpD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;KAClB,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7B,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7B,IAAI,EAAE,yBAAyB,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,kBAAkB,CAAC,WAAW,EAAE;IACpE,wBAAwB;IACxB,0BAA0B;IAC1B,mBAAmB;IACnB,qBAAqB;CACtB,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface MetabaseCredentials {
|
|
2
|
+
url: string;
|
|
3
|
+
apiKey: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Parse a multi-field credential value into typed Metabase fields.
|
|
7
|
+
* Uses the shared decodeCredentialPayload() which handles both
|
|
8
|
+
* base64 (injection path) and raw JSON (validator path).
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseMetabaseCredential(value: string): MetabaseCredentials;
|
|
11
|
+
/**
|
|
12
|
+
* Enhance Metabase API error messages with helpful hints
|
|
13
|
+
*/
|
|
14
|
+
export declare function enhanceMetabaseErrorMessage(error: string, statusCode?: number): string;
|
|
15
|
+
//# sourceMappingURL=metabase.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metabase.utils.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/metabase/metabase.utils.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAW1E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAWR"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { decodeCredentialPayload } from '@bubblelab/shared-schemas';
|
|
2
|
+
/**
|
|
3
|
+
* Parse a multi-field credential value into typed Metabase fields.
|
|
4
|
+
* Uses the shared decodeCredentialPayload() which handles both
|
|
5
|
+
* base64 (injection path) and raw JSON (validator path).
|
|
6
|
+
*/
|
|
7
|
+
export function parseMetabaseCredential(value) {
|
|
8
|
+
const parsed = decodeCredentialPayload(value);
|
|
9
|
+
if (!parsed.url || !parsed.apiKey) {
|
|
10
|
+
throw new Error('Metabase credential is missing required fields: url, apiKey');
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
url: parsed.url.replace(/\/+$/, ''), // strip trailing slashes
|
|
14
|
+
apiKey: parsed.apiKey,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Enhance Metabase API error messages with helpful hints
|
|
19
|
+
*/
|
|
20
|
+
export function enhanceMetabaseErrorMessage(error, statusCode) {
|
|
21
|
+
if (statusCode === 401) {
|
|
22
|
+
return `${error}\n\nHint: Your Metabase API key may be invalid or expired. Please check your credentials.`;
|
|
23
|
+
}
|
|
24
|
+
if (statusCode === 403) {
|
|
25
|
+
return `${error}\n\nHint: Your Metabase API key may not have permission for this operation.`;
|
|
26
|
+
}
|
|
27
|
+
if (statusCode === 404) {
|
|
28
|
+
return `${error}\n\nHint: The requested resource was not found. Check that the ID is correct.`;
|
|
29
|
+
}
|
|
30
|
+
return error;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=metabase.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metabase.utils.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/metabase/metabase.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAOpE;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,MAAM,GAAG,uBAAuB,CAAyB,KAAK,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,yBAAyB;QAC9D,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAa,EACb,UAAmB;IAEnB,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,GAAG,KAAK,2FAA2F,CAAC;IAC7G,CAAC;IACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,GAAG,KAAK,6EAA6E,CAAC;IAC/F,CAAC;IACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,GAAG,KAAK,+EAA+E,CAAC;IACjG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|