n8n-nodes-adspirer 0.1.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/LICENSE.md +21 -0
- package/README.md +301 -0
- package/dist/credentials/AdspireApi.credentials.d.ts +11 -0
- package/dist/credentials/AdspireApi.credentials.js +39 -0
- package/dist/credentials/AdspireApi.credentials.js.map +1 -0
- package/dist/credentials/AdspireOAuth2Api.credentials.d.ts +10 -0
- package/dist/credentials/AdspireOAuth2Api.credentials.js +53 -0
- package/dist/credentials/AdspireOAuth2Api.credentials.js.map +1 -0
- package/dist/icons/adspirer.dark.svg +91 -0
- package/dist/icons/adspirer.svg +91 -0
- package/dist/nodes/Adspirer/Adspirer.node.d.ts +4 -0
- package/dist/nodes/Adspirer/Adspirer.node.js +63 -0
- package/dist/nodes/Adspirer/Adspirer.node.js.map +1 -0
- package/dist/nodes/Adspirer/adspirer.dark.svg +91 -0
- package/dist/nodes/Adspirer/adspirer.svg +91 -0
- package/dist/nodes/Adspirer/resources/googleAds.d.ts +3 -0
- package/dist/nodes/Adspirer/resources/googleAds.js +332 -0
- package/dist/nodes/Adspirer/resources/googleAds.js.map +1 -0
- package/dist/nodes/Adspirer/resources/metaAds.d.ts +3 -0
- package/dist/nodes/Adspirer/resources/metaAds.js +75 -0
- package/dist/nodes/Adspirer/resources/metaAds.js.map +1 -0
- package/dist/nodes/Adspirer/shared/descriptions.d.ts +3 -0
- package/dist/nodes/Adspirer/shared/descriptions.js +40 -0
- package/dist/nodes/Adspirer/shared/descriptions.js.map +1 -0
- package/package.json +51 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Adspirer
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
# n8n-nodes-adspirer
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/n8n-nodes-adspirer)
|
|
4
|
+
[](LICENSE.md)
|
|
5
|
+
|
|
6
|
+
[n8n](https://n8n.io/) community node for [Adspirer](https://adspirer.ai) — automate ad campaign management across Google Ads, Meta Ads, LinkedIn Ads, and TikTok Ads.
|
|
7
|
+
|
|
8
|
+
Skip the dashboard. Build n8n workflows that monitor performance, optimize budgets, create campaigns, and alert your team — all on autopilot.
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<img src="icons/adspirer.svg" alt="Adspirer" width="80" />
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
## What is Adspirer?
|
|
15
|
+
|
|
16
|
+
Adspirer is an MCP (Model Context Protocol) server with **100+ advertising tools** across 4 ad platforms. It lets AI assistants manage ad campaigns through natural language — no dashboards needed.
|
|
17
|
+
|
|
18
|
+
This n8n community node brings those same tools into n8n's workflow automation platform, so you can build automated ad workflows that run on schedules, respond to events, or power AI agents.
|
|
19
|
+
|
|
20
|
+
**MCP Server:** [`https://mcp.adspirer.com/mcp`](https://mcp.adspirer.com/mcp)
|
|
21
|
+
**MCP Registry:** [`com.adspirer/ads`](https://registry.modelcontextprotocol.io)
|
|
22
|
+
**Plugin Repo:** [`amekala/ads-mcp`](https://github.com/amekala/ads-mcp)
|
|
23
|
+
|
|
24
|
+
## Operations
|
|
25
|
+
|
|
26
|
+
### Google Ads (7 operations)
|
|
27
|
+
|
|
28
|
+
| Operation | Description |
|
|
29
|
+
|-----------|-------------|
|
|
30
|
+
| **Budget Optimization** | Get budget allocation and optimization recommendations |
|
|
31
|
+
| **Campaign Performance** | Get performance metrics for all campaigns over a date range |
|
|
32
|
+
| **Create PMax Campaign** | Create a new Performance Max campaign with assets |
|
|
33
|
+
| **Create Search Campaign** | Create a new Google Search campaign with keywords and ads |
|
|
34
|
+
| **Keyword Research** | Research keywords with real CPC, search volume, and competition data |
|
|
35
|
+
| **Search Terms Analysis** | Analyze search term performance and find negative keyword opportunities |
|
|
36
|
+
| **Wasted Spend Analysis** | Identify wasted ad spend and get optimization recommendations |
|
|
37
|
+
|
|
38
|
+
### Meta Ads (3 operations)
|
|
39
|
+
|
|
40
|
+
| Operation | Description |
|
|
41
|
+
|-----------|-------------|
|
|
42
|
+
| **Ad Performance** | Analyze individual ad and creative performance with fatigue detection |
|
|
43
|
+
| **Audience Insights** | Get audience demographics, placement analysis, and targeting insights |
|
|
44
|
+
| **Campaign Performance** | Get performance metrics for Meta ad campaigns |
|
|
45
|
+
|
|
46
|
+
### AI Agent Compatible
|
|
47
|
+
|
|
48
|
+
All operations are available as AI agent tools (`usableAsTool: true`). Add the Adspirer node as a tool to any n8n AI Agent and it can call any operation based on natural language instructions.
|
|
49
|
+
|
|
50
|
+
## Authentication
|
|
51
|
+
|
|
52
|
+
### OAuth2 (Recommended)
|
|
53
|
+
|
|
54
|
+
1. Add the Adspirer node to your workflow
|
|
55
|
+
2. Select **OAuth2 (Recommended)** authentication
|
|
56
|
+
3. Click **Connect** — a browser window opens for OAuth authorization
|
|
57
|
+
4. Sign in with your [Adspirer account](https://adspirer.ai) and authorize access
|
|
58
|
+
5. Your credentials are saved — all future workflows use the same connection
|
|
59
|
+
|
|
60
|
+
No API keys to manage. OAuth tokens refresh automatically.
|
|
61
|
+
|
|
62
|
+
### API Key
|
|
63
|
+
|
|
64
|
+
1. Sign up at [adspirer.ai](https://adspirer.ai) (free tier: 15 tool calls/month)
|
|
65
|
+
2. Get your API key from your account settings
|
|
66
|
+
3. Add the Adspirer node to your workflow
|
|
67
|
+
4. Select **API Key** authentication
|
|
68
|
+
5. Paste your API key
|
|
69
|
+
|
|
70
|
+
## Installation
|
|
71
|
+
|
|
72
|
+
### n8n Community Nodes (Recommended)
|
|
73
|
+
|
|
74
|
+
1. Open your n8n instance
|
|
75
|
+
2. Go to **Settings > Community Nodes**
|
|
76
|
+
3. Click **Install a community node**
|
|
77
|
+
4. Enter `n8n-nodes-adspirer`
|
|
78
|
+
5. Click **Install**
|
|
79
|
+
|
|
80
|
+
The Adspirer node appears in the nodes panel, searchable by "Adspirer", "ads", "Google Ads", "Meta Ads", "campaign", "keyword research", or "ppc".
|
|
81
|
+
|
|
82
|
+
### Self-Hosted / Docker
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
cd ~/.n8n
|
|
86
|
+
npm install n8n-nodes-adspirer
|
|
87
|
+
# Restart n8n
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### n8n Cloud
|
|
91
|
+
|
|
92
|
+
Community nodes are available on n8n Cloud once verified. After verification, the node appears automatically in the nodes panel for all Cloud users.
|
|
93
|
+
|
|
94
|
+
## Example Workflows
|
|
95
|
+
|
|
96
|
+
### 1. Daily Google Ads Performance Report to Slack
|
|
97
|
+
|
|
98
|
+
Monitor campaign performance and get a summary in Slack every morning.
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Schedule Trigger (daily 9am)
|
|
102
|
+
→ Adspirer: Campaign Performance (Google Ads, lookback: 1 day)
|
|
103
|
+
→ Adspirer: Campaign Performance (Meta Ads, lookback: 1 day)
|
|
104
|
+
→ Code Node: merge and format cross-platform report
|
|
105
|
+
→ Slack: post to #marketing channel
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 2. Weekly Wasted Spend Alert
|
|
109
|
+
|
|
110
|
+
Catch budget waste early with weekly automated analysis.
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
Schedule Trigger (every Monday 8am)
|
|
114
|
+
→ Adspirer: Wasted Spend Analysis (Google Ads, lookback: 7 days)
|
|
115
|
+
→ Adspirer: Budget Optimization (Google Ads, lookback: 7 days)
|
|
116
|
+
→ IF Node: wasted spend > $50?
|
|
117
|
+
→ Yes: Slack alert + Google Sheets log
|
|
118
|
+
→ No: skip
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 3. New Shopify Product → Google PMax Campaign
|
|
122
|
+
|
|
123
|
+
Automatically create ad campaigns when new products are added.
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
Shopify Trigger (new product created)
|
|
127
|
+
→ Adspirer: Create PMax Campaign (product name, URL, $30/day budget)
|
|
128
|
+
→ Slack: notify marketing team with campaign details
|
|
129
|
+
→ Google Sheets: log in campaign tracker
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 4. CRM Deal → Retargeting Campaign
|
|
133
|
+
|
|
134
|
+
Launch retargeting when a deal moves to a new stage.
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
HubSpot Trigger (deal stage changed to "Proposal Sent")
|
|
138
|
+
→ Adspirer: Keyword Research (brand + competitor terms)
|
|
139
|
+
→ Adspirer: Create Search Campaign (branded search, $20/day)
|
|
140
|
+
→ Gmail: notify account manager
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 5. AI Ad Manager in Slack
|
|
144
|
+
|
|
145
|
+
Let your team manage ads through natural language in Slack.
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
Chat Trigger (Slack)
|
|
149
|
+
→ AI Agent (Claude / GPT-4)
|
|
150
|
+
→ Adspirer node (all 10 operations available as tools)
|
|
151
|
+
→ Google Sheets tool (for logging)
|
|
152
|
+
→ Slack: post response
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Example conversation:**
|
|
156
|
+
- "How are my Google Ads doing this week compared to last week?"
|
|
157
|
+
- "Research keywords for emergency plumbing services in Chicago"
|
|
158
|
+
- "Create a search campaign for luxury watches targeting New York with $50/day budget"
|
|
159
|
+
|
|
160
|
+
### 6. Cross-Platform Weekly Report to Google Sheets
|
|
161
|
+
|
|
162
|
+
Build a living dashboard with weekly performance data.
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
Schedule Trigger (every Friday 5pm)
|
|
166
|
+
→ Adspirer: Campaign Performance (Google Ads, 7 days)
|
|
167
|
+
→ Adspirer: Campaign Performance (Meta Ads, 7 days)
|
|
168
|
+
→ Code Node: normalize metrics across platforms
|
|
169
|
+
→ Google Sheets: append to "Weekly Performance" sheet
|
|
170
|
+
→ Gmail: send formatted report to client
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Nodes That Pair Well With Adspirer
|
|
174
|
+
|
|
175
|
+
| Category | Nodes | Use Case |
|
|
176
|
+
|----------|-------|----------|
|
|
177
|
+
| **Triggers** | Schedule, Webhook, Cron | Start monitoring/reporting workflows |
|
|
178
|
+
| **CRM** | HubSpot, Salesforce, Pipedrive | Deal events → campaign creation |
|
|
179
|
+
| **E-commerce** | Shopify, WooCommerce, Stripe | Product/order events → ad campaigns |
|
|
180
|
+
| **Messaging** | Slack, Gmail, Teams, Discord, Twilio | Alerts, reports, notifications |
|
|
181
|
+
| **Spreadsheets** | Google Sheets, Airtable, Notion | Dashboards, logging, tracking |
|
|
182
|
+
| **AI** | AI Agent, OpenAI, Anthropic | Natural language ad management |
|
|
183
|
+
| **Logic** | IF, Switch, Code, Merge | Threshold checks, data formatting |
|
|
184
|
+
| **Forms** | Typeform, Google Forms | Client briefs → campaign setup |
|
|
185
|
+
|
|
186
|
+
## Pricing
|
|
187
|
+
|
|
188
|
+
Adspirer uses a freemium model. Tool calls in n8n count against your Adspirer plan limits:
|
|
189
|
+
|
|
190
|
+
| Plan | Tool Calls/Month | Price |
|
|
191
|
+
|------|-----------------|-------|
|
|
192
|
+
| Free | 15 | $0 |
|
|
193
|
+
| Plus | 150 | $49/mo |
|
|
194
|
+
| Pro | 600 | $99/mo |
|
|
195
|
+
| Max | 3,000 | $199/mo |
|
|
196
|
+
|
|
197
|
+
Sign up at [adspirer.ai](https://adspirer.ai). No credit card required for the free tier.
|
|
198
|
+
|
|
199
|
+
## Alternative: n8n Built-in MCP Nodes
|
|
200
|
+
|
|
201
|
+
If you prefer to use n8n's built-in MCP support (available since n8n v1.88.0) instead of this community node, you can connect directly to Adspirer's MCP server:
|
|
202
|
+
|
|
203
|
+
1. Add the **MCP Client Tool** node as a sub-node to an AI Agent
|
|
204
|
+
2. Set Transport: **Streamable HTTP**
|
|
205
|
+
3. Set URL: `https://mcp.adspirer.com/mcp`
|
|
206
|
+
4. Authenticate via OAuth 2.1 or Bearer token
|
|
207
|
+
|
|
208
|
+
This gives you access to all 100+ Adspirer tools via the AI agent. The community node (this package) provides a more structured experience with typed operations and field validation for deterministic workflows.
|
|
209
|
+
|
|
210
|
+
## Related Projects
|
|
211
|
+
|
|
212
|
+
| Project | Description | Link |
|
|
213
|
+
|---------|-------------|------|
|
|
214
|
+
| **ads-mcp** | Adspirer MCP server registration + multi-IDE plugins (Claude Code, Cursor, Codex, OpenClaw) | [github.com/amekala/ads-mcp](https://github.com/amekala/ads-mcp) |
|
|
215
|
+
| **Adspirer Docs** | Setup guides, platform docs, API reference | [adspirer.com/docs](https://www.adspirer.com/docs) |
|
|
216
|
+
| **MCP Server** | Production MCP endpoint (Streamable HTTP) | `https://mcp.adspirer.com/mcp` |
|
|
217
|
+
| **MCP Registry** | Model Context Protocol registry listing | [registry.modelcontextprotocol.io](https://registry.modelcontextprotocol.io) |
|
|
218
|
+
|
|
219
|
+
## Development
|
|
220
|
+
|
|
221
|
+
### Prerequisites
|
|
222
|
+
|
|
223
|
+
- Node.js 22 LTS (required — Node 25 has compatibility issues with `isolated-vm`)
|
|
224
|
+
- npm
|
|
225
|
+
|
|
226
|
+
### Setup
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
git clone https://github.com/amekala/n8n-nodes-adspirer.git
|
|
230
|
+
cd n8n-nodes-adspirer
|
|
231
|
+
nvm use 22 # if using nvm
|
|
232
|
+
npm install
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Commands
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
npm run dev # Start n8n locally on :5678 with this node loaded (hot reload)
|
|
239
|
+
npm run build # Compile TypeScript → dist/
|
|
240
|
+
npm run lint # Check code quality (must pass for verification)
|
|
241
|
+
npm run lint:fix # Auto-fix lint issues
|
|
242
|
+
npm run release # Bump version, tag, push → GH Action publishes to npm
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Testing Locally
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
npm run dev
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
This starts a local n8n instance at `http://localhost:5678` with the Adspirer node pre-loaded. Create a workflow, add the Adspirer node, configure credentials, and test operations against your Adspirer account.
|
|
252
|
+
|
|
253
|
+
### Project Structure
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
n8n-nodes-adspirer/
|
|
257
|
+
├── credentials/
|
|
258
|
+
│ ├── AdspireApi.credentials.ts # API key auth
|
|
259
|
+
│ └── AdspireOAuth2Api.credentials.ts # OAuth 2.1 auth
|
|
260
|
+
├── nodes/
|
|
261
|
+
│ └── Adspirer/
|
|
262
|
+
│ ├── Adspirer.node.ts # Main node definition
|
|
263
|
+
│ ├── Adspirer.node.json # Codex metadata (categories, AI descriptions)
|
|
264
|
+
│ ├── adspirer.svg # Icon (light mode)
|
|
265
|
+
│ ├── adspirer.dark.svg # Icon (dark mode)
|
|
266
|
+
│ ├── resources/
|
|
267
|
+
│ │ ├── googleAds.ts # Google Ads operations + field definitions
|
|
268
|
+
│ │ └── metaAds.ts # Meta Ads operations + field definitions
|
|
269
|
+
│ └── shared/
|
|
270
|
+
│ └── descriptions.ts # Shared field definitions
|
|
271
|
+
├── icons/ # Credential-level icons
|
|
272
|
+
├── .github/workflows/
|
|
273
|
+
│ ├── ci.yml # Lint + build on PR
|
|
274
|
+
│ └── publish.yml # npm publish with provenance attestation
|
|
275
|
+
├── package.json
|
|
276
|
+
├── tsconfig.json
|
|
277
|
+
└── eslint.config.mjs
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Publishing
|
|
281
|
+
|
|
282
|
+
Releases are published to npm via GitHub Actions with provenance attestation (required for n8n Creator Portal verification). The workflow triggers on semver tags:
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
npm run release # Interactive: bumps version, updates changelog, tags, pushes
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
The GitHub Action then builds, lints, and publishes to npm with OIDC provenance signing.
|
|
289
|
+
|
|
290
|
+
## Support
|
|
291
|
+
|
|
292
|
+
- **Email:** abhi@adspirer.com
|
|
293
|
+
- **Issues:** [github.com/amekala/n8n-nodes-adspirer/issues](https://github.com/amekala/n8n-nodes-adspirer/issues)
|
|
294
|
+
- **Adspirer Issues:** [github.com/amekala/ads-mcp/issues](https://github.com/amekala/ads-mcp/issues)
|
|
295
|
+
- **Website:** [adspirer.ai](https://adspirer.ai)
|
|
296
|
+
- **Docs:** [adspirer.com/docs](https://www.adspirer.com/docs)
|
|
297
|
+
- **Server Status:** [mcp.adspirer.com/health](https://mcp.adspirer.com/health)
|
|
298
|
+
|
|
299
|
+
## License
|
|
300
|
+
|
|
301
|
+
[MIT](LICENSE.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IAuthenticateGeneric, Icon, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class AdspireApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
icon: Icon;
|
|
6
|
+
documentationUrl: string;
|
|
7
|
+
description: string;
|
|
8
|
+
properties: INodeProperties[];
|
|
9
|
+
authenticate: IAuthenticateGeneric;
|
|
10
|
+
test: ICredentialTestRequest;
|
|
11
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdspireApi = void 0;
|
|
4
|
+
class AdspireApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'adspireApi';
|
|
7
|
+
this.displayName = 'Adspirer API';
|
|
8
|
+
this.icon = { light: 'file:../icons/adspirer.svg', dark: 'file:../icons/adspirer.dark.svg' };
|
|
9
|
+
this.documentationUrl = 'https://www.adspirer.com/docs/quickstart';
|
|
10
|
+
this.description = 'Sign up at adspirer.ai, then get your API key from your account settings.';
|
|
11
|
+
this.properties = [
|
|
12
|
+
{
|
|
13
|
+
displayName: 'API Key',
|
|
14
|
+
name: 'apiKey',
|
|
15
|
+
type: 'string',
|
|
16
|
+
typeOptions: { password: true },
|
|
17
|
+
default: '',
|
|
18
|
+
description: 'Your Adspirer API key. Get one at adspirer.com/settings.',
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
this.authenticate = {
|
|
22
|
+
type: 'generic',
|
|
23
|
+
properties: {
|
|
24
|
+
headers: {
|
|
25
|
+
Authorization: '=Bearer {{$credentials?.apiKey}}',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
this.test = {
|
|
30
|
+
request: {
|
|
31
|
+
baseURL: 'https://mcp.adspirer.com',
|
|
32
|
+
url: '/api/v1/actions/health',
|
|
33
|
+
method: 'GET',
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.AdspireApi = AdspireApi;
|
|
39
|
+
//# sourceMappingURL=AdspireApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdspireApi.credentials.js","sourceRoot":"","sources":["../../credentials/AdspireApi.credentials.ts"],"names":[],"mappings":";;;AAQA,MAAa,UAAU;IAAvB;QACC,SAAI,GAAG,YAAY,CAAC;QAEpB,gBAAW,GAAG,cAAc,CAAC;QAE7B,SAAI,GAAS,EAAE,KAAK,EAAE,4BAA4B,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC;QAE9F,qBAAgB,GAAG,0CAA0C,CAAC;QAE9D,gBAAW,GACV,2EAA2E,CAAC;QAE7E,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,0DAA0D;aACvE;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,kCAAkC;iBACjD;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,0BAA0B;gBACnC,GAAG,EAAE,wBAAwB;gBAC7B,MAAM,EAAE,KAAK;aACb;SACD,CAAC;IACH,CAAC;CAAA;AAvCD,gCAuCC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Icon, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class AdspireOAuth2Api implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
extends: string[];
|
|
5
|
+
displayName: string;
|
|
6
|
+
icon: Icon;
|
|
7
|
+
documentationUrl: string;
|
|
8
|
+
description: string;
|
|
9
|
+
properties: INodeProperties[];
|
|
10
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdspireOAuth2Api = void 0;
|
|
4
|
+
class AdspireOAuth2Api {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'adspireOAuth2Api';
|
|
7
|
+
this.extends = ['oAuth2Api'];
|
|
8
|
+
this.displayName = 'Adspirer OAuth2 API';
|
|
9
|
+
this.icon = { light: 'file:../icons/adspirer.svg', dark: 'file:../icons/adspirer.dark.svg' };
|
|
10
|
+
this.documentationUrl = 'https://www.adspirer.com/docs/quickstart';
|
|
11
|
+
this.description = 'Connect your Adspirer account via OAuth2. Sign up at adspirer.ai if you don\'t have an account.';
|
|
12
|
+
this.properties = [
|
|
13
|
+
{
|
|
14
|
+
displayName: 'Grant Type',
|
|
15
|
+
name: 'grantType',
|
|
16
|
+
type: 'hidden',
|
|
17
|
+
default: 'authorizationCode',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
displayName: 'Authorization URL',
|
|
21
|
+
name: 'authUrl',
|
|
22
|
+
type: 'hidden',
|
|
23
|
+
default: 'https://mcp.adspirer.com/oauth/authorize',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
displayName: 'Access Token URL',
|
|
27
|
+
name: 'accessTokenUrl',
|
|
28
|
+
type: 'hidden',
|
|
29
|
+
default: 'https://mcp.adspirer.com/oauth/token',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
displayName: 'Scope',
|
|
33
|
+
name: 'scope',
|
|
34
|
+
type: 'hidden',
|
|
35
|
+
default: 'ads:read ads:write',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
displayName: 'Auth URI Query Parameters',
|
|
39
|
+
name: 'authQueryParameters',
|
|
40
|
+
type: 'hidden',
|
|
41
|
+
default: '',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
displayName: 'Authentication',
|
|
45
|
+
name: 'authentication',
|
|
46
|
+
type: 'hidden',
|
|
47
|
+
default: 'header',
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.AdspireOAuth2Api = AdspireOAuth2Api;
|
|
53
|
+
//# sourceMappingURL=AdspireOAuth2Api.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdspireOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/AdspireOAuth2Api.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IAA7B;QACC,SAAI,GAAG,kBAAkB,CAAC;QAE1B,YAAO,GAAG,CAAC,WAAW,CAAC,CAAC;QAExB,gBAAW,GAAG,qBAAqB,CAAC;QAEpC,SAAI,GAAS,EAAE,KAAK,EAAE,4BAA4B,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC;QAE9F,qBAAgB,GAAG,0CAA0C,CAAC;QAE9D,gBAAW,GACV,iGAAiG,CAAC;QAEnG,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,mBAAmB;aAC5B;YACD;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,0CAA0C;aACnD;YACD;gBACC,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,sCAAsC;aAC/C;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,oBAAoB;aAC7B;YACD;gBACC,WAAW,EAAE,2BAA2B;gBACxC,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,QAAQ;aACjB;SACD,CAAC;IACH,CAAC;CAAA;AApDD,4CAoDC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
<svg width="146" height="146" viewBox="0 0 146 146" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="146" height="146" rx="73" fill="black"/>
|
|
3
|
+
<path d="M95.4973 38.8395L67.5932 38.7324C70.4853 41.4104 71.5458 43.6647 74.5022 51.2914H94.631C104.277 51.0684 124.051 56.0855 125.976 77.9374C126.479 73.8692 125.976 70.8141 125.891 66.8235C122.722 46.3192 102.817 38.8395 95.4973 38.8395Z" fill="url(#paint0_linear_3322_26)" stroke="black" stroke-width="0.676203"/>
|
|
4
|
+
<path d="M101.909 106.721C91.6794 107.502 88.7431 100.964 86.1093 94.563H95.0094C118.95 90.3591 118.799 54.6559 95.0094 51.2544C104.656 51.0314 124.032 55.8069 125.957 77.6589C125.263 90.4866 114.752 103.906 101.909 106.721Z" fill="url(#paint1_linear_3322_26)"/>
|
|
5
|
+
<path d="M86.1093 94.563C88.7431 100.964 91.6794 107.502 101.909 106.721C114.752 103.906 125.263 90.4866 125.957 77.6589C124.032 55.8069 104.656 51.0314 95.0094 51.2544C118.799 54.6559 118.95 90.3591 95.0094 94.563M86.1093 94.563C86.1093 94.563 91.3873 94.563 95.0094 94.563M86.1093 94.563H95.0094" stroke="black" stroke-width="0.690003"/>
|
|
6
|
+
<path d="M101.739 106.76C91.5093 107.541 88.5729 101.003 85.9392 94.6025L81.7174 84.4536H65.1142L70.6307 99.1287C72.0054 101.878 76.0937 107.055 81.7174 107.43C87.2875 107.473 93.9645 107.448 96.6067 107.43C97.7301 107.359 100.329 107.124 101.739 106.76Z" fill="url(#paint2_linear_3322_26)" stroke="black" stroke-width="0.690003"/>
|
|
7
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M24.9904 86.1021C24.9902 86.1024 24.9905 86.1019 24.9904 86.1021C24.6405 86.6252 24.3021 87.1311 23.9717 87.6129C25.4405 85.2232 26.9048 83.1374 28.381 81.3168C27.0862 82.9688 25.9896 84.6082 24.9904 86.1021ZM28.381 81.3168C30.9716 78.0117 34.3565 74.6549 39.3471 72.3059C35.4771 74.1525 31.8953 76.9829 28.381 81.3168ZM47.002 69.8684C44.3016 70.3807 41.768 71.1508 39.3471 72.3059C41.5596 71.2646 44.0876 70.4213 47.002 69.8684Z" fill="url(#paint3_linear_3322_26)"/>
|
|
8
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M24.9904 86.1021C24.9902 86.1024 24.9905 86.1019 24.9904 86.1021C24.6405 86.6252 24.3021 87.1311 23.9717 87.6129C25.4405 85.2232 26.9048 83.1374 28.381 81.3168C27.0862 82.9688 25.9896 84.6082 24.9904 86.1021ZM28.381 81.3168C30.9716 78.0117 34.3565 74.6549 39.3471 72.3059C35.4771 74.1525 31.8953 76.9829 28.381 81.3168ZM47.002 69.8684C44.3016 70.3807 41.768 71.1508 39.3471 72.3059C41.5596 71.2646 44.0876 70.4213 47.002 69.8684Z" fill="url(#paint4_linear_3322_26)"/>
|
|
9
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M24.9904 86.1021C24.9902 86.1024 24.9905 86.1019 24.9904 86.1021C24.6405 86.6252 24.3021 87.1311 23.9717 87.6129C25.4405 85.2232 26.9048 83.1374 28.381 81.3168C27.0862 82.9688 25.9896 84.6082 24.9904 86.1021ZM28.381 81.3168C30.9716 78.0117 34.3565 74.6549 39.3471 72.3059C35.4771 74.1525 31.8953 76.9829 28.381 81.3168ZM47.002 69.8684C44.3016 70.3807 41.768 71.1508 39.3471 72.3059C41.5596 71.2646 44.0876 70.4213 47.002 69.8684Z" fill="url(#paint5_linear_3322_26)"/>
|
|
10
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M24.9904 86.1021C24.9902 86.1024 24.9905 86.1019 24.9904 86.1021C24.6405 86.6252 24.3021 87.1311 23.9717 87.6129C25.4405 85.2232 26.9048 83.1374 28.381 81.3168C27.0862 82.9688 25.9896 84.6082 24.9904 86.1021ZM28.381 81.3168C30.9716 78.0117 34.3565 74.6549 39.3471 72.3059C35.4771 74.1525 31.8953 76.9829 28.381 81.3168ZM47.002 69.8684C44.3016 70.3807 41.768 71.1508 39.3471 72.3059C41.5596 71.2646 44.0876 70.4213 47.002 69.8684Z" fill="black" fill-opacity="0.2"/>
|
|
11
|
+
<path d="M80.8511 81.8821L76.0308 68.8137C72.4034 68.8901 69.0265 68.8804 65.8633 68.8714C58.5977 68.8506 52.4592 68.8331 47.002 69.8684C44.0876 70.4213 41.5596 71.2646 39.3471 72.3059C35.4771 74.1525 31.8953 76.9829 28.381 81.3168C27.0862 82.9688 25.9896 84.6082 24.9904 86.1021C24.6405 86.6252 24.3021 87.1311 23.9717 87.6129L20.0084 97.4141C19.4906 99.8599 19.6334 105.18 24.3466 106.894C30.2381 109.036 33.6123 104.912 34.2014 103.573C34.6727 102.502 37.5399 94.9861 38.9146 91.362C40.2893 88.0413 45.438 81.4964 55.0358 81.882L80.8511 81.8821Z" fill="url(#paint6_linear_3322_26)"/>
|
|
12
|
+
<path d="M80.8511 81.8821L76.0308 68.8137C72.4034 68.8901 69.0265 68.8804 65.8633 68.8714C58.5977 68.8506 52.4592 68.8331 47.002 69.8684C44.0876 70.4213 41.5596 71.2646 39.3471 72.3059C35.4771 74.1525 31.8953 76.9829 28.381 81.3168C27.0862 82.9688 25.9896 84.6082 24.9904 86.1021C24.6405 86.6252 24.3021 87.1311 23.9717 87.6129L20.0084 97.4141C19.4906 99.8599 19.6334 105.18 24.3466 106.894C30.2381 109.036 33.6123 104.912 34.2014 103.573C34.6727 102.502 37.5399 94.9861 38.9146 91.362C40.2893 88.0413 45.438 81.4964 55.0358 81.882L80.8511 81.8821Z" fill="url(#paint7_linear_3322_26)"/>
|
|
13
|
+
<path d="M80.8511 81.8821L76.0308 68.8137C72.4034 68.8901 69.0265 68.8804 65.8633 68.8714C58.5977 68.8506 52.4592 68.8331 47.002 69.8684C44.0876 70.4213 41.5596 71.2646 39.3471 72.3059C35.4771 74.1525 31.8953 76.9829 28.381 81.3168C27.0862 82.9688 25.9896 84.6082 24.9904 86.1021C24.6405 86.6252 24.3021 87.1311 23.9717 87.6129L20.0084 97.4141C19.4906 99.8599 19.6334 105.18 24.3466 106.894C30.2381 109.036 33.6123 104.912 34.2014 103.573C34.6727 102.502 37.5399 94.9861 38.9146 91.362C40.2893 88.0413 45.438 81.4964 55.0358 81.882L80.8511 81.8821Z" fill="url(#paint8_linear_3322_26)"/>
|
|
14
|
+
<path d="M80.8511 81.8821L76.0308 68.8137C72.4034 68.8901 69.0265 68.8804 65.8633 68.8714C58.5977 68.8506 52.4592 68.8331 47.002 69.8684C44.0876 70.4213 41.5596 71.2646 39.3471 72.3059C35.4771 74.1525 31.8953 76.9829 28.381 81.3168C27.0862 82.9688 25.9896 84.6082 24.9904 86.1021C24.6405 86.6252 24.3021 87.1311 23.9717 87.6129L20.0084 97.4141C19.4906 99.8599 19.6334 105.18 24.3466 106.894C30.2381 109.036 33.6123 104.912 34.2014 103.573C34.6727 102.502 37.5399 94.9861 38.9146 91.362C40.2893 88.0413 45.438 81.4964 55.0358 81.882L80.8511 81.8821Z" fill="black" fill-opacity="0.2"/>
|
|
15
|
+
<path d="M24.9904 86.1021C24.9902 86.1024 24.9905 86.1019 24.9904 86.1021ZM24.9904 86.1021C24.6405 86.6252 24.3021 87.1311 23.9717 87.6129M24.9904 86.1021C25.9896 84.6082 27.0862 82.9688 28.381 81.3168M23.9717 87.6129C25.4405 85.2232 26.9048 83.1374 28.381 81.3168M23.9717 87.6129L20.0084 97.4141C19.4906 99.8599 19.6334 105.18 24.3466 106.894C30.2381 109.036 33.6123 104.912 34.2014 103.573C34.6727 102.502 37.5399 94.9861 38.9146 91.362C40.2893 88.0413 45.438 81.4964 55.0358 81.882M28.381 81.3168C30.9716 78.0117 34.3565 74.6549 39.3471 72.3059M28.381 81.3168C31.8953 76.9829 35.4771 74.1525 39.3471 72.3059M39.3471 72.3059C41.768 71.1508 44.3016 70.3807 47.002 69.8684M39.3471 72.3059C41.5596 71.2646 44.0876 70.4213 47.002 69.8684M47.002 69.8684C52.4592 68.8331 58.5977 68.8506 65.8633 68.8714C69.0265 68.8804 72.4034 68.8901 76.0308 68.8137L80.8511 81.8821M80.8511 81.8821L55.0358 81.882M80.8511 81.8821C76.2807 81.8821 64.7192 81.882 55.0358 81.882" stroke="black" stroke-width="0.690003"/>
|
|
16
|
+
<path d="M48.511 38.8476C45.7688 39.019 42.9409 42.3468 41.8697 43.9892C45.2439 39.8117 49.0466 40.7222 51.1889 44.5248C51.8677 45.7297 53.0507 48.4643 54.3716 51.7017C56.3859 56.638 58.7211 62.7433 60.0797 66.3768H75.8259C73.4515 60.6282 68.2527 48.1026 66.4531 43.9892C62.8112 39.1475 58.9728 38.3299 57.5088 38.5263C55.6521 38.562 51.2532 38.6762 48.511 38.8476Z" fill="url(#paint9_linear_3322_26)"/>
|
|
17
|
+
<path d="M48.511 38.8476C45.7688 39.019 42.9409 42.3468 41.8697 43.9892C45.2439 39.8117 49.0466 40.7222 51.1889 44.5248C51.8677 45.7297 53.0507 48.4643 54.3716 51.7017C56.3859 56.638 58.7211 62.7433 60.0797 66.3768H75.8259C73.4515 60.6282 68.2527 48.1026 66.4531 43.9892C62.8112 39.1475 58.9728 38.3299 57.5088 38.5263C55.6521 38.562 51.2532 38.6762 48.511 38.8476Z" fill="url(#paint10_linear_3322_26)"/>
|
|
18
|
+
<path d="M48.511 38.8476C45.7688 39.019 42.9409 42.3468 41.8697 43.9892C45.2439 39.8117 49.0466 40.7222 51.1889 44.5248C51.8677 45.7297 53.0507 48.4643 54.3716 51.7017C56.3859 56.638 58.7211 62.7433 60.0797 66.3768H75.8259C73.4515 60.6282 68.2527 48.1026 66.4531 43.9892C62.8112 39.1475 58.9728 38.3299 57.5088 38.5263C55.6521 38.562 51.2532 38.6762 48.511 38.8476Z" fill="url(#paint11_linear_3322_26)"/>
|
|
19
|
+
<path d="M48.511 38.8476C45.7688 39.019 42.9409 42.3468 41.8697 43.9892C45.2439 39.8117 49.0466 40.7222 51.1889 44.5248C51.8677 45.7297 53.0507 48.4643 54.3716 51.7017C56.3859 56.638 58.7211 62.7433 60.0797 66.3768H75.8259C73.4515 60.6282 68.2527 48.1026 66.4531 43.9892C62.8112 39.1475 58.9728 38.3299 57.5088 38.5263C55.6521 38.562 51.2532 38.6762 48.511 38.8476Z" stroke="black" stroke-width="0.690003"/>
|
|
20
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.1068 85.8526C25.1066 85.8529 25.107 85.8524 25.1068 85.8526C24.7569 86.3757 24.4185 86.8816 24.0881 87.3634C25.5569 84.9737 27.0212 82.8879 28.4975 81.0673C27.2026 82.7193 26.1061 84.3587 25.1068 85.8526ZM28.4975 81.0673C31.088 77.7622 34.4729 74.4054 39.4636 72.0564C35.5936 73.903 32.0117 76.7334 28.4975 81.0673ZM47.1184 69.6189C44.418 70.1312 41.8844 70.9013 39.4636 72.0564C41.676 71.0151 44.2041 70.1718 47.1184 69.6189Z" fill="url(#paint12_linear_3322_26)"/>
|
|
21
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.1068 85.8526C25.1066 85.8529 25.107 85.8524 25.1068 85.8526C24.7569 86.3757 24.4185 86.8816 24.0881 87.3634C25.5569 84.9737 27.0212 82.8879 28.4975 81.0673C27.2026 82.7193 26.1061 84.3587 25.1068 85.8526ZM28.4975 81.0673C31.088 77.7622 34.4729 74.4054 39.4636 72.0564C35.5936 73.903 32.0117 76.7334 28.4975 81.0673ZM47.1184 69.6189C44.418 70.1312 41.8844 70.9013 39.4636 72.0564C41.676 71.0151 44.2041 70.1718 47.1184 69.6189Z" fill="black" fill-opacity="0.2"/>
|
|
22
|
+
<path d="M24.0881 87.3634C25.5569 84.9737 27.0212 82.8879 28.4975 81.0673C31.088 77.7622 34.4729 74.4054 39.4636 72.0564C41.8844 70.9013 44.418 70.1312 47.1184 69.6189L54.2645 51.7468C52.9435 48.5094 51.7606 45.7748 51.0818 44.5699C48.9394 40.7672 45.1367 39.8567 41.7625 44.0343L24.0881 87.3634Z" fill="url(#paint13_linear_3322_26)"/>
|
|
23
|
+
<path d="M24.0881 87.3634C25.5569 84.9737 27.0212 82.8879 28.4975 81.0673C31.088 77.7622 34.4729 74.4054 39.4636 72.0564C41.8844 70.9013 44.418 70.1312 47.1184 69.6189L54.2645 51.7468C52.9435 48.5094 51.7606 45.7748 51.0818 44.5699C48.9394 40.7672 45.1367 39.8567 41.7625 44.0343L24.0881 87.3634Z" fill="black" fill-opacity="0.2"/>
|
|
24
|
+
<path d="M25.1068 85.8526C25.1066 85.8529 25.107 85.8524 25.1068 85.8526ZM25.1068 85.8526C24.7569 86.3757 24.4185 86.8816 24.0881 87.3634M25.1068 85.8526C26.1061 84.3587 27.2026 82.7193 28.4975 81.0673M24.0881 87.3634C25.5569 84.9737 27.0212 82.8879 28.4975 81.0673M24.0881 87.3634L41.7625 44.0343C45.1367 39.8567 48.9394 40.7672 51.0818 44.5699C51.7606 45.7748 52.9435 48.5094 54.2645 51.7468L47.1184 69.6189M28.4975 81.0673C31.088 77.7622 34.4729 74.4054 39.4636 72.0564M28.4975 81.0673C32.0117 76.7334 35.5936 73.903 39.4636 72.0564M39.4636 72.0564C41.8844 70.9013 44.418 70.1312 47.1184 69.6189M39.4636 72.0564C41.676 71.0151 44.2041 70.1718 47.1184 69.6189" stroke="black" stroke-width="0.690003"/>
|
|
25
|
+
<defs>
|
|
26
|
+
<linearGradient id="paint0_linear_3322_26" x1="69.5748" y1="38.7324" x2="122.544" y2="65.6189" gradientUnits="userSpaceOnUse">
|
|
27
|
+
<stop stop-color="#894E9F"/>
|
|
28
|
+
<stop offset="1" stop-color="#FF44C7"/>
|
|
29
|
+
</linearGradient>
|
|
30
|
+
<linearGradient id="paint1_linear_3322_26" x1="106.033" y1="51.2471" x2="106.033" y2="106.784" gradientUnits="userSpaceOnUse">
|
|
31
|
+
<stop stop-color="#7438B2"/>
|
|
32
|
+
<stop offset="1" stop-color="#64A2BB"/>
|
|
33
|
+
</linearGradient>
|
|
34
|
+
<linearGradient id="paint2_linear_3322_26" x1="72.4517" y1="80.8116" x2="91.6258" y2="107.484" gradientUnits="userSpaceOnUse">
|
|
35
|
+
<stop stop-color="#8C4EA0"/>
|
|
36
|
+
<stop offset="0.9999" stop-color="#FF5CCE"/>
|
|
37
|
+
</linearGradient>
|
|
38
|
+
<linearGradient id="paint3_linear_3322_26" x1="23.8204" y1="107.457" x2="77.5934" y2="54.2195" gradientUnits="userSpaceOnUse">
|
|
39
|
+
<stop stop-color="#4C57C6"/>
|
|
40
|
+
<stop offset="0.658654" stop-color="#83D8EE"/>
|
|
41
|
+
<stop offset="0.953555" stop-color="white" stop-opacity="0"/>
|
|
42
|
+
</linearGradient>
|
|
43
|
+
<linearGradient id="paint4_linear_3322_26" x1="123.172" y1="90.5323" x2="99.0704" y2="86.6761" gradientUnits="userSpaceOnUse">
|
|
44
|
+
<stop stop-color="#4C57C6"/>
|
|
45
|
+
<stop offset="0.658654" stop-color="#83D8EE"/>
|
|
46
|
+
<stop offset="0.953555" stop-color="white" stop-opacity="0"/>
|
|
47
|
+
</linearGradient>
|
|
48
|
+
<linearGradient id="paint5_linear_3322_26" x1="121.833" y1="47.7389" x2="105.765" y2="83.5697" gradientUnits="userSpaceOnUse">
|
|
49
|
+
<stop stop-color="#EEA7D3"/>
|
|
50
|
+
<stop offset="0.423224" stop-color="#A657C4"/>
|
|
51
|
+
<stop offset="1" stop-color="#AB57C4" stop-opacity="0"/>
|
|
52
|
+
</linearGradient>
|
|
53
|
+
<linearGradient id="paint6_linear_3322_26" x1="23.8204" y1="107.457" x2="77.5934" y2="54.2195" gradientUnits="userSpaceOnUse">
|
|
54
|
+
<stop stop-color="#4C57C6"/>
|
|
55
|
+
<stop offset="0.658654" stop-color="#83D8EE"/>
|
|
56
|
+
<stop offset="0.953555" stop-color="white" stop-opacity="0"/>
|
|
57
|
+
</linearGradient>
|
|
58
|
+
<linearGradient id="paint7_linear_3322_26" x1="123.172" y1="90.5323" x2="99.0704" y2="86.6761" gradientUnits="userSpaceOnUse">
|
|
59
|
+
<stop stop-color="#4C57C6"/>
|
|
60
|
+
<stop offset="0.658654" stop-color="#83D8EE"/>
|
|
61
|
+
<stop offset="0.953555" stop-color="white" stop-opacity="0"/>
|
|
62
|
+
</linearGradient>
|
|
63
|
+
<linearGradient id="paint8_linear_3322_26" x1="121.833" y1="47.7389" x2="105.765" y2="83.5697" gradientUnits="userSpaceOnUse">
|
|
64
|
+
<stop stop-color="#EEA7D3"/>
|
|
65
|
+
<stop offset="0.423224" stop-color="#A657C4"/>
|
|
66
|
+
<stop offset="1" stop-color="#AB57C4" stop-opacity="0"/>
|
|
67
|
+
</linearGradient>
|
|
68
|
+
<linearGradient id="paint9_linear_3322_26" x1="24.044" y1="107.162" x2="77.817" y2="53.9249" gradientUnits="userSpaceOnUse">
|
|
69
|
+
<stop stop-color="#4C57C6"/>
|
|
70
|
+
<stop offset="0.658654" stop-color="#83D8EE"/>
|
|
71
|
+
<stop offset="0.953555" stop-color="white" stop-opacity="0"/>
|
|
72
|
+
</linearGradient>
|
|
73
|
+
<linearGradient id="paint10_linear_3322_26" x1="123.395" y1="90.2377" x2="99.294" y2="86.3815" gradientUnits="userSpaceOnUse">
|
|
74
|
+
<stop stop-color="#4C57C6"/>
|
|
75
|
+
<stop offset="0.658654" stop-color="#83D8EE"/>
|
|
76
|
+
<stop offset="0.953555" stop-color="white" stop-opacity="0"/>
|
|
77
|
+
</linearGradient>
|
|
78
|
+
<linearGradient id="paint11_linear_3322_26" x1="62.3827" y1="38.5" x2="75.8259" y2="66.3505" gradientUnits="userSpaceOnUse">
|
|
79
|
+
<stop stop-color="#62D8F6"/>
|
|
80
|
+
<stop offset="1" stop-color="#A657C4"/>
|
|
81
|
+
</linearGradient>
|
|
82
|
+
<linearGradient id="paint12_linear_3322_26" x1="29.3369" y1="79.8475" x2="51.9922" y2="46.0519" gradientUnits="userSpaceOnUse">
|
|
83
|
+
<stop offset="0.233015" stop-color="#62D8F6"/>
|
|
84
|
+
<stop offset="1" stop-color="#4C57C6"/>
|
|
85
|
+
</linearGradient>
|
|
86
|
+
<linearGradient id="paint13_linear_3322_26" x1="29.3369" y1="79.8475" x2="51.9922" y2="46.0519" gradientUnits="userSpaceOnUse">
|
|
87
|
+
<stop offset="0.233015" stop-color="#62D8F6"/>
|
|
88
|
+
<stop offset="1" stop-color="#4C57C6"/>
|
|
89
|
+
</linearGradient>
|
|
90
|
+
</defs>
|
|
91
|
+
</svg>
|