741 lines
17 KiB
YAML
741 lines
17 KiB
YAML
version: 6.4.0
|
|
|
|
type: DeclarativeSource
|
|
|
|
description: >-
|
|
Airbyte connector for [SendPulse](https://sendpulse.com/) allows you to
|
|
seamlessly sync data from SendPulse to your data warehouse. It retrieves
|
|
essential information from various SendPulse streams, including mailing lists,
|
|
campaigns, templates, senders, webhooks, balance details, and balance. This
|
|
enables you to analyze and manage your SendPulse email marketing and
|
|
communication efforts effectively in a centralized location.
|
|
|
|
check:
|
|
type: CheckStream
|
|
stream_names:
|
|
- mailing_lists
|
|
|
|
definitions:
|
|
streams:
|
|
mailing_lists:
|
|
type: DeclarativeStream
|
|
name: mailing_lists
|
|
primary_key:
|
|
- id
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /addressbooks
|
|
http_method: GET
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path: []
|
|
paginator:
|
|
type: DefaultPaginator
|
|
page_token_option:
|
|
type: RequestOption
|
|
inject_into: request_parameter
|
|
field_name: offset
|
|
page_size_option:
|
|
type: RequestOption
|
|
inject_into: request_parameter
|
|
field_name: limit
|
|
pagination_strategy:
|
|
type: OffsetIncrement
|
|
page_size: 100
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/mailing_lists"
|
|
campaigns:
|
|
type: DeclarativeStream
|
|
name: campaigns
|
|
primary_key:
|
|
- id
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /campaigns
|
|
http_method: GET
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path: []
|
|
paginator:
|
|
type: DefaultPaginator
|
|
page_token_option:
|
|
type: RequestOption
|
|
inject_into: request_parameter
|
|
field_name: offset
|
|
page_size_option:
|
|
type: RequestOption
|
|
inject_into: request_parameter
|
|
field_name: limit
|
|
pagination_strategy:
|
|
type: OffsetIncrement
|
|
page_size: 100
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/campaigns"
|
|
templates:
|
|
type: DeclarativeStream
|
|
name: templates
|
|
primary_key:
|
|
- id
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /templates
|
|
http_method: GET
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path: []
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/templates"
|
|
senders:
|
|
type: DeclarativeStream
|
|
name: senders
|
|
primary_key:
|
|
- email
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /senders
|
|
http_method: GET
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path: []
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/senders"
|
|
webhooks:
|
|
type: DeclarativeStream
|
|
name: webhooks
|
|
primary_key:
|
|
- id
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /v2/email-service/webhook
|
|
http_method: GET
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path:
|
|
- data
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/webhooks"
|
|
balance_details:
|
|
type: DeclarativeStream
|
|
name: balance_details
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /user/balance/detail
|
|
http_method: GET
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path: []
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/balance_details"
|
|
balance:
|
|
type: DeclarativeStream
|
|
name: balance
|
|
primary_key:
|
|
- currency
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /balance
|
|
http_method: GET
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path: []
|
|
transformations:
|
|
- type: AddFields
|
|
fields:
|
|
- path:
|
|
- datetime
|
|
value: "{{ now_utc() }}"
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/balance"
|
|
base_requester:
|
|
type: HttpRequester
|
|
url_base: https://api.sendpulse.com
|
|
authenticator:
|
|
type: OAuthAuthenticator
|
|
client_id: "{{ config[\"client_id\"] }}"
|
|
grant_type: client_credentials
|
|
client_secret: "{{ config[\"client_secret\"] }}"
|
|
expires_in_name: expires_in
|
|
access_token_name: access_token
|
|
refresh_request_body: {}
|
|
token_refresh_endpoint: https://api.sendpulse.com/oauth/access_token
|
|
|
|
streams:
|
|
- $ref: "#/definitions/streams/mailing_lists"
|
|
- $ref: "#/definitions/streams/campaigns"
|
|
- $ref: "#/definitions/streams/templates"
|
|
- $ref: "#/definitions/streams/senders"
|
|
- $ref: "#/definitions/streams/webhooks"
|
|
- $ref: "#/definitions/streams/balance_details"
|
|
- $ref: "#/definitions/streams/balance"
|
|
|
|
spec:
|
|
type: Spec
|
|
connection_specification:
|
|
type: object
|
|
$schema: http://json-schema.org/draft-07/schema#
|
|
required:
|
|
- client_id
|
|
- client_secret
|
|
properties:
|
|
client_id:
|
|
type: string
|
|
name: client_id
|
|
order: 0
|
|
title: OAuth Client ID
|
|
airbyte_secret: true
|
|
client_secret:
|
|
type: string
|
|
name: client_secret
|
|
order: 1
|
|
title: OAuth Client Secret
|
|
airbyte_secret: true
|
|
additionalProperties: true
|
|
|
|
metadata:
|
|
autoImportSchema:
|
|
mailing_lists: true
|
|
campaigns: true
|
|
templates: true
|
|
senders: true
|
|
webhooks: true
|
|
balance_details: true
|
|
balance: true
|
|
testedStreams:
|
|
mailing_lists:
|
|
streamHash: 94deb8cdf6a5627bf44c8fe39cf3e0aa183184a3
|
|
hasResponse: true
|
|
responsesAreSuccessful: true
|
|
hasRecords: true
|
|
primaryKeysArePresent: true
|
|
primaryKeysAreUnique: true
|
|
campaigns:
|
|
streamHash: 3ca300e8a792ec17b4154bca202122028bfbb672
|
|
hasResponse: true
|
|
responsesAreSuccessful: true
|
|
hasRecords: true
|
|
primaryKeysArePresent: true
|
|
primaryKeysAreUnique: true
|
|
templates:
|
|
streamHash: 248f143b8ac05c88695bfda1fbb78aa332dc78e1
|
|
hasResponse: true
|
|
responsesAreSuccessful: true
|
|
hasRecords: true
|
|
primaryKeysArePresent: true
|
|
primaryKeysAreUnique: true
|
|
senders:
|
|
streamHash: 9fa00e085af9f89d6fa8fea75cd2f7c99b7c36ff
|
|
hasResponse: true
|
|
responsesAreSuccessful: true
|
|
hasRecords: true
|
|
primaryKeysArePresent: true
|
|
primaryKeysAreUnique: true
|
|
webhooks:
|
|
streamHash: 1bf46a2ea368a7057b227be76df1b0cf37411cfa
|
|
hasResponse: true
|
|
responsesAreSuccessful: true
|
|
hasRecords: true
|
|
primaryKeysArePresent: true
|
|
primaryKeysAreUnique: true
|
|
balance_details:
|
|
streamHash: c09fa8c41b04a121d5bb71a49da8ed1a0332de50
|
|
hasResponse: true
|
|
responsesAreSuccessful: true
|
|
hasRecords: true
|
|
primaryKeysArePresent: true
|
|
primaryKeysAreUnique: true
|
|
balance:
|
|
streamHash: ad1a47782c97f7dc55182808d5a147cfb4f87bf0
|
|
hasResponse: true
|
|
responsesAreSuccessful: true
|
|
hasRecords: true
|
|
primaryKeysArePresent: true
|
|
primaryKeysAreUnique: true
|
|
assist:
|
|
docsUrl: https://sendpulse.com/tr/integrations/api
|
|
|
|
schemas:
|
|
mailing_lists:
|
|
type: object
|
|
$schema: http://json-schema.org/schema#
|
|
additionalProperties: true
|
|
properties:
|
|
active_email_qty:
|
|
type:
|
|
- number
|
|
- "null"
|
|
active_phones_quantity:
|
|
type:
|
|
- number
|
|
- "null"
|
|
all_email_qty:
|
|
type:
|
|
- number
|
|
- "null"
|
|
creationdate:
|
|
type:
|
|
- string
|
|
- "null"
|
|
exc_phones_quantity:
|
|
type:
|
|
- number
|
|
- "null"
|
|
id:
|
|
type: number
|
|
inactive_email_qty:
|
|
type:
|
|
- number
|
|
- "null"
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
new_phones_quantity:
|
|
type:
|
|
- number
|
|
- "null"
|
|
status:
|
|
type:
|
|
- number
|
|
- "null"
|
|
status_explain:
|
|
type:
|
|
- string
|
|
- "null"
|
|
required:
|
|
- id
|
|
campaigns:
|
|
type: object
|
|
$schema: http://json-schema.org/schema#
|
|
additionalProperties: true
|
|
properties:
|
|
all_email_qty:
|
|
type:
|
|
- number
|
|
- "null"
|
|
company_price:
|
|
type:
|
|
- string
|
|
- "null"
|
|
id:
|
|
type: number
|
|
is_sms:
|
|
type:
|
|
- boolean
|
|
- "null"
|
|
is_viber:
|
|
type:
|
|
- boolean
|
|
- "null"
|
|
message:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
attachments:
|
|
type:
|
|
- string
|
|
- "null"
|
|
list_id:
|
|
type:
|
|
- number
|
|
- "null"
|
|
sender_email:
|
|
type:
|
|
- string
|
|
- "null"
|
|
sender_name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
subject:
|
|
type:
|
|
- string
|
|
- "null"
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
overdraft_currency:
|
|
type:
|
|
- string
|
|
- "null"
|
|
overdraft_price:
|
|
type:
|
|
- number
|
|
- "null"
|
|
paid_email_qty:
|
|
type:
|
|
- number
|
|
- "null"
|
|
send_date:
|
|
type:
|
|
- string
|
|
- "null"
|
|
statistics:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
delivered:
|
|
type:
|
|
- number
|
|
- "null"
|
|
error:
|
|
type:
|
|
- number
|
|
- "null"
|
|
link_redirected:
|
|
type:
|
|
- number
|
|
- "null"
|
|
opening:
|
|
type:
|
|
- number
|
|
- "null"
|
|
sent:
|
|
type:
|
|
- number
|
|
- "null"
|
|
unsubscribe:
|
|
type:
|
|
- number
|
|
- "null"
|
|
status:
|
|
type:
|
|
- number
|
|
- "null"
|
|
tariff_email_qty:
|
|
type:
|
|
- number
|
|
- "null"
|
|
required:
|
|
- id
|
|
templates:
|
|
type: object
|
|
$schema: http://json-schema.org/schema#
|
|
additionalProperties: true
|
|
properties:
|
|
category:
|
|
type:
|
|
- string
|
|
- "null"
|
|
category_info:
|
|
anyOf:
|
|
- type: array
|
|
- type: object
|
|
properties:
|
|
code:
|
|
type: string
|
|
full_description:
|
|
type: string
|
|
id:
|
|
type: number
|
|
meta_description:
|
|
type: string
|
|
name:
|
|
type: string
|
|
sort:
|
|
type: number
|
|
created:
|
|
type:
|
|
- string
|
|
- "null"
|
|
full_description:
|
|
type:
|
|
- string
|
|
- "null"
|
|
id:
|
|
type: string
|
|
is_structure:
|
|
type:
|
|
- boolean
|
|
- "null"
|
|
lang:
|
|
type:
|
|
- string
|
|
- "null"
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
name_slug:
|
|
type:
|
|
- string
|
|
- "null"
|
|
owner:
|
|
type:
|
|
- string
|
|
- "null"
|
|
preview:
|
|
type:
|
|
- string
|
|
- "null"
|
|
real_id:
|
|
type:
|
|
- number
|
|
- "null"
|
|
tags:
|
|
anyOf:
|
|
- type: array
|
|
- type: object
|
|
properties:
|
|
abandonedcart:
|
|
type: string
|
|
blackfriday:
|
|
type: string
|
|
blog:
|
|
type: string
|
|
businessman:
|
|
type: string
|
|
christmas:
|
|
type: string
|
|
courses:
|
|
type: string
|
|
digest:
|
|
type: string
|
|
discount:
|
|
type: string
|
|
ecommerce:
|
|
type: string
|
|
education:
|
|
type: string
|
|
exhibition:
|
|
type: string
|
|
feedback:
|
|
type: string
|
|
food:
|
|
type: string
|
|
halloween:
|
|
type: string
|
|
hotel:
|
|
type: string
|
|
invite:
|
|
type: string
|
|
leadmagnet:
|
|
type: string
|
|
marketing:
|
|
type: string
|
|
meat:
|
|
type: string
|
|
mothersday:
|
|
type: string
|
|
museum:
|
|
type: string
|
|
newyear:
|
|
type: string
|
|
offline-event:
|
|
type: string
|
|
offlineevent:
|
|
type: string
|
|
online-event:
|
|
type: string
|
|
onlineshop:
|
|
type: string
|
|
photo:
|
|
type: string
|
|
photographer:
|
|
type: string
|
|
pizzeria:
|
|
type: string
|
|
product:
|
|
type: string
|
|
promo:
|
|
type: string
|
|
realestate:
|
|
type: string
|
|
registrationfortheprocedure:
|
|
type: string
|
|
sale:
|
|
type: string
|
|
shoes:
|
|
type: string
|
|
smm:
|
|
type: string
|
|
study:
|
|
type: string
|
|
subscribing:
|
|
type: string
|
|
tourist:
|
|
type: string
|
|
travel:
|
|
type: string
|
|
triggeremail:
|
|
type: string
|
|
valentine:
|
|
type: string
|
|
valentinesday:
|
|
type: string
|
|
video:
|
|
type: string
|
|
webinar:
|
|
type: string
|
|
womensday:
|
|
type: string
|
|
required:
|
|
- id
|
|
senders:
|
|
type: object
|
|
$schema: http://json-schema.org/schema#
|
|
additionalProperties: true
|
|
properties:
|
|
email:
|
|
type: string
|
|
is_allowed_for_smtp:
|
|
type:
|
|
- boolean
|
|
- "null"
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
status:
|
|
type:
|
|
- string
|
|
- "null"
|
|
required:
|
|
- email
|
|
webhooks:
|
|
type: object
|
|
$schema: http://json-schema.org/schema#
|
|
additionalProperties: true
|
|
properties:
|
|
action:
|
|
type:
|
|
- string
|
|
- "null"
|
|
id:
|
|
type: number
|
|
url:
|
|
type:
|
|
- string
|
|
- "null"
|
|
user_id:
|
|
type:
|
|
- number
|
|
- "null"
|
|
required:
|
|
- id
|
|
balance_details:
|
|
type: object
|
|
$schema: http://json-schema.org/schema#
|
|
additionalProperties: true
|
|
properties:
|
|
balance:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
bonus:
|
|
type:
|
|
- string
|
|
- "null"
|
|
currency:
|
|
type:
|
|
- string
|
|
- "null"
|
|
main:
|
|
type:
|
|
- string
|
|
- "null"
|
|
email:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
current_subscribers:
|
|
type:
|
|
- number
|
|
- "null"
|
|
finished_time:
|
|
type:
|
|
- string
|
|
- "null"
|
|
is_unique_type:
|
|
type:
|
|
- boolean
|
|
- "null"
|
|
maximum_subscribers:
|
|
type:
|
|
- number
|
|
- "null"
|
|
tariff_name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
push:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
auto_renew:
|
|
type:
|
|
- number
|
|
- "null"
|
|
end_date:
|
|
type:
|
|
- string
|
|
- "null"
|
|
tariff_name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
balance:
|
|
type: object
|
|
$schema: http://json-schema.org/schema#
|
|
additionalProperties: true
|
|
properties:
|
|
balance_currency:
|
|
type:
|
|
- number
|
|
- "null"
|
|
currency:
|
|
type: string
|
|
datetime:
|
|
type:
|
|
- string
|
|
- "null"
|
|
required:
|
|
- currency
|