826 lines
19 KiB
YAML
826 lines
19 KiB
YAML
version: 6.36.2
|
|
|
|
type: DeclarativeSource
|
|
|
|
check:
|
|
type: CheckStream
|
|
stream_names:
|
|
- groups
|
|
|
|
definitions:
|
|
streams:
|
|
customers:
|
|
type: DeclarativeStream
|
|
name: customers
|
|
primary_key:
|
|
- key
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /customers
|
|
http_method: GET
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path:
|
|
- data
|
|
- items
|
|
paginator:
|
|
type: DefaultPaginator
|
|
page_token_option:
|
|
type: RequestOption
|
|
inject_into: request_parameter
|
|
field_name: starting_after
|
|
page_size_option:
|
|
type: RequestOption
|
|
field_name: limit
|
|
inject_into: request_parameter
|
|
pagination_strategy:
|
|
type: CursorPagination
|
|
page_size: 250
|
|
cursor_value: "{{ last_record['key'] }}"
|
|
stop_condition: "{{ response.data.has_more is false }}"
|
|
incremental_sync:
|
|
type: DatetimeBasedCursor
|
|
cursor_field: updated_at
|
|
cursor_datetime_formats:
|
|
- "%ms"
|
|
datetime_format: "%ms"
|
|
start_datetime:
|
|
type: MinMaxDatetime
|
|
datetime: "{{ config['start_date'] }}"
|
|
datetime_format: "%Y-%m-%dT%H:%M:%SZ"
|
|
start_time_option:
|
|
type: RequestOption
|
|
field_name: min_updated
|
|
inject_into: request_parameter
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/customers"
|
|
deals:
|
|
type: DeclarativeStream
|
|
name: deals
|
|
primary_key:
|
|
- key
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /deals
|
|
http_method: GET
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path:
|
|
- data
|
|
- items
|
|
paginator:
|
|
type: DefaultPaginator
|
|
page_token_option:
|
|
type: RequestOption
|
|
inject_into: request_parameter
|
|
field_name: starting_after
|
|
page_size_option:
|
|
type: RequestOption
|
|
field_name: limit
|
|
inject_into: request_parameter
|
|
pagination_strategy:
|
|
type: CursorPagination
|
|
page_size: 250
|
|
cursor_value: "{{ last_record['key'] }}"
|
|
stop_condition: "{{ response.data.has_more is false }}"
|
|
incremental_sync:
|
|
type: DatetimeBasedCursor
|
|
cursor_field: updated_at
|
|
cursor_datetime_formats:
|
|
- "%ms"
|
|
datetime_format: "%ms"
|
|
start_datetime:
|
|
type: MinMaxDatetime
|
|
datetime: "{{ config['start_date'] }}"
|
|
datetime_format: "%Y-%m-%dT%H:%M:%SZ"
|
|
start_time_option:
|
|
type: RequestOption
|
|
field_name: min_updated
|
|
inject_into: request_parameter
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/deals"
|
|
groups:
|
|
type: DeclarativeStream
|
|
name: groups
|
|
primary_key:
|
|
- key
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /groups
|
|
http_method: GET
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path:
|
|
- data
|
|
- items
|
|
paginator:
|
|
type: DefaultPaginator
|
|
page_token_option:
|
|
type: RequestOption
|
|
inject_into: request_parameter
|
|
field_name: starting_after
|
|
page_size_option:
|
|
type: RequestOption
|
|
field_name: limit
|
|
inject_into: request_parameter
|
|
pagination_strategy:
|
|
type: CursorPagination
|
|
page_size: 250
|
|
cursor_value: "{{ last_record['key'] }}"
|
|
stop_condition: "{{ response.data.has_more is false }}"
|
|
incremental_sync:
|
|
type: DatetimeBasedCursor
|
|
cursor_field: updated_at
|
|
cursor_datetime_formats:
|
|
- "%ms"
|
|
datetime_format: "%ms"
|
|
start_datetime:
|
|
type: MinMaxDatetime
|
|
datetime: "{{ config['start_date'] }}"
|
|
datetime_format: "%Y-%m-%dT%H:%M:%SZ"
|
|
start_time_option:
|
|
type: RequestOption
|
|
field_name: min_updated
|
|
inject_into: request_parameter
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/groups"
|
|
leads:
|
|
type: DeclarativeStream
|
|
name: leads
|
|
primary_key:
|
|
- key
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /leads
|
|
http_method: GET
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path:
|
|
- data
|
|
- items
|
|
paginator:
|
|
type: DefaultPaginator
|
|
page_token_option:
|
|
type: RequestOption
|
|
inject_into: request_parameter
|
|
field_name: starting_after
|
|
page_size_option:
|
|
type: RequestOption
|
|
field_name: limit
|
|
inject_into: request_parameter
|
|
pagination_strategy:
|
|
type: CursorPagination
|
|
page_size: 250
|
|
cursor_value: "{{ last_record['key'] }}"
|
|
stop_condition: "{{ response.data.has_more is false }}"
|
|
incremental_sync:
|
|
type: DatetimeBasedCursor
|
|
cursor_field: updated_at
|
|
cursor_datetime_formats:
|
|
- "%ms"
|
|
datetime_format: "%ms"
|
|
start_datetime:
|
|
type: MinMaxDatetime
|
|
datetime: "{{ config['start_date'] }}"
|
|
datetime_format: "%Y-%m-%dT%H:%M:%SZ"
|
|
start_time_option:
|
|
type: RequestOption
|
|
field_name: min_updated
|
|
inject_into: request_parameter
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/leads"
|
|
partnerships:
|
|
type: DeclarativeStream
|
|
name: partnerships
|
|
primary_key:
|
|
- key
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /partnerships
|
|
http_method: GET
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path:
|
|
- data
|
|
- items
|
|
paginator:
|
|
type: DefaultPaginator
|
|
page_token_option:
|
|
type: RequestOption
|
|
inject_into: request_parameter
|
|
field_name: starting_after
|
|
page_size_option:
|
|
type: RequestOption
|
|
field_name: limit
|
|
inject_into: request_parameter
|
|
pagination_strategy:
|
|
type: CursorPagination
|
|
page_size: 250
|
|
cursor_value: "{{ last_record['key'] }}"
|
|
stop_condition: "{{ response.data.has_more is false }}"
|
|
incremental_sync:
|
|
type: DatetimeBasedCursor
|
|
cursor_field: updated_at
|
|
cursor_datetime_formats:
|
|
- "%ms"
|
|
datetime_format: "%ms"
|
|
start_datetime:
|
|
type: MinMaxDatetime
|
|
datetime: "{{ config['start_date'] }}"
|
|
datetime_format: "%Y-%m-%dT%H:%M:%SZ"
|
|
start_time_option:
|
|
type: RequestOption
|
|
field_name: min_updated
|
|
inject_into: request_parameter
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/partnerships"
|
|
rewards:
|
|
type: DeclarativeStream
|
|
name: rewards
|
|
primary_key:
|
|
- key
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /rewards
|
|
http_method: GET
|
|
request_parameters:
|
|
min_created: "{{ (timestamp(config['start_date']) * 1000) | int }}"
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path:
|
|
- data
|
|
- items
|
|
paginator:
|
|
type: DefaultPaginator
|
|
page_token_option:
|
|
type: RequestOption
|
|
inject_into: request_parameter
|
|
field_name: starting_after
|
|
page_size_option:
|
|
type: RequestOption
|
|
field_name: limit
|
|
inject_into: request_parameter
|
|
pagination_strategy:
|
|
type: CursorPagination
|
|
page_size: 250
|
|
cursor_value: "{{ last_record['key'] }}"
|
|
stop_condition: "{{ response.data.has_more is false }}"
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/rewards"
|
|
transactions:
|
|
type: DeclarativeStream
|
|
name: transactions
|
|
primary_key:
|
|
- key
|
|
retriever:
|
|
type: SimpleRetriever
|
|
requester:
|
|
$ref: "#/definitions/base_requester"
|
|
path: /transactions
|
|
http_method: GET
|
|
request_parameters:
|
|
min_created: "{{ (timestamp(config['start_date']) * 1000) | int }}"
|
|
record_selector:
|
|
type: RecordSelector
|
|
extractor:
|
|
type: DpathExtractor
|
|
field_path:
|
|
- data
|
|
- items
|
|
paginator:
|
|
type: DefaultPaginator
|
|
page_token_option:
|
|
type: RequestOption
|
|
inject_into: request_parameter
|
|
field_name: starting_after
|
|
page_size_option:
|
|
type: RequestOption
|
|
field_name: limit
|
|
inject_into: request_parameter
|
|
pagination_strategy:
|
|
type: CursorPagination
|
|
page_size: 250
|
|
cursor_value: "{{ last_record['key'] }}"
|
|
stop_condition: "{{ response.data.has_more is false }}"
|
|
schema_loader:
|
|
type: InlineSchemaLoader
|
|
schema:
|
|
$ref: "#/schemas/transactions"
|
|
base_requester:
|
|
type: HttpRequester
|
|
url_base: https://api.partnerstack.com/api/v2
|
|
authenticator:
|
|
type: BasicHttpAuthenticator
|
|
password: "{{ config['private_key'] }}"
|
|
username: "{{ config['public_key'] }}"
|
|
|
|
streams:
|
|
- $ref: "#/definitions/streams/customers"
|
|
- $ref: "#/definitions/streams/deals"
|
|
- $ref: "#/definitions/streams/groups"
|
|
- $ref: "#/definitions/streams/leads"
|
|
- $ref: "#/definitions/streams/partnerships"
|
|
- $ref: "#/definitions/streams/rewards"
|
|
- $ref: "#/definitions/streams/transactions"
|
|
|
|
spec:
|
|
type: Spec
|
|
connection_specification:
|
|
type: object
|
|
$schema: http://json-schema.org/draft-07/schema#
|
|
required:
|
|
- public_key
|
|
- private_key
|
|
properties:
|
|
public_key:
|
|
type: string
|
|
description: The Live Public Key for a Partnerstack account.
|
|
title: Partnerstack Public key
|
|
airbyte_secret: true
|
|
order: 0
|
|
start_date:
|
|
type: string
|
|
description: >-
|
|
UTC date and time in the format 2017-01-25T00:00:00Z. Any data before
|
|
this date will not be replicated.
|
|
title: Start date
|
|
pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$
|
|
examples:
|
|
- "2017-01-25T00:00:00Z"
|
|
order: 1
|
|
private_key:
|
|
type: string
|
|
description: The Live Private Key for a Partnerstack account.
|
|
title: Partnerstack Private key
|
|
airbyte_secret: true
|
|
order: 2
|
|
additionalProperties: true
|
|
|
|
metadata:
|
|
autoImportSchema:
|
|
customers: false
|
|
deals: false
|
|
groups: false
|
|
leads: false
|
|
partnerships: false
|
|
rewards: false
|
|
transactions: false
|
|
yamlComponents:
|
|
global:
|
|
- authenticator
|
|
testedStreams: {}
|
|
assist: {}
|
|
|
|
schemas:
|
|
customers:
|
|
type: object
|
|
$schema: http://json-schema.org/draft-07/schema#
|
|
properties:
|
|
created_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
customer_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
email:
|
|
type:
|
|
- "null"
|
|
- string
|
|
field_data:
|
|
type:
|
|
- "null"
|
|
- object
|
|
fields:
|
|
type:
|
|
- "null"
|
|
- array
|
|
key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
meta:
|
|
type:
|
|
- "null"
|
|
- object
|
|
name:
|
|
type:
|
|
- "null"
|
|
- string
|
|
partner_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
partnership_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
provider_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
source_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
source_type:
|
|
type:
|
|
- "null"
|
|
- string
|
|
test:
|
|
type:
|
|
- "null"
|
|
- boolean
|
|
updated_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
additionalProperties: true
|
|
deals:
|
|
type: object
|
|
$schema: http://json-schema.org/draft-07/schema#
|
|
properties:
|
|
account_name:
|
|
type:
|
|
- "null"
|
|
- object
|
|
amount:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
close_date:
|
|
type:
|
|
- "null"
|
|
- string
|
|
contact_first_name:
|
|
type:
|
|
- "null"
|
|
- string
|
|
contact_last_name:
|
|
type:
|
|
- "null"
|
|
- string
|
|
created_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
external_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
field_data:
|
|
type:
|
|
- "null"
|
|
- object
|
|
fields:
|
|
type:
|
|
- "null"
|
|
- array
|
|
group_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
lost_reason:
|
|
type:
|
|
- "null"
|
|
- string
|
|
meta:
|
|
type:
|
|
- "null"
|
|
- object
|
|
mold_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
partner_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
source:
|
|
type:
|
|
- "null"
|
|
- string
|
|
stage:
|
|
type:
|
|
- "null"
|
|
- string
|
|
team:
|
|
type:
|
|
- "null"
|
|
- object
|
|
team_member:
|
|
type:
|
|
- "null"
|
|
- object
|
|
updated_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
additionalProperties: true
|
|
groups:
|
|
type: object
|
|
$schema: http://json-schema.org/draft-07/schema#
|
|
properties:
|
|
archived:
|
|
type:
|
|
- "null"
|
|
- boolean
|
|
created_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
default:
|
|
type:
|
|
- "null"
|
|
- boolean
|
|
features:
|
|
type:
|
|
- "null"
|
|
- object
|
|
key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
name:
|
|
type:
|
|
- "null"
|
|
- string
|
|
slug:
|
|
type:
|
|
- "null"
|
|
- string
|
|
updated_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
additionalProperties: true
|
|
leads:
|
|
type: object
|
|
$schema: http://json-schema.org/draft-07/schema#
|
|
properties:
|
|
amount:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
approved:
|
|
type:
|
|
- "null"
|
|
- boolean
|
|
created_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
external_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
field_data:
|
|
type:
|
|
- "null"
|
|
- object
|
|
fields:
|
|
type:
|
|
- "null"
|
|
- array
|
|
group_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
meta:
|
|
type:
|
|
- "null"
|
|
- object
|
|
mold_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
partner_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
status:
|
|
type:
|
|
- "null"
|
|
- string
|
|
updated_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
additionalProperties: true
|
|
partnerships:
|
|
type: object
|
|
$schema: http://json-schema.org/draft-07/schema#
|
|
properties:
|
|
created_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
email:
|
|
type:
|
|
- "null"
|
|
- string
|
|
first_name:
|
|
type:
|
|
- "null"
|
|
- string
|
|
group:
|
|
type:
|
|
- "null"
|
|
- object
|
|
joined_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
last_name:
|
|
type:
|
|
- "null"
|
|
- string
|
|
m_data:
|
|
type:
|
|
- "null"
|
|
- object
|
|
manager:
|
|
type:
|
|
- "null"
|
|
- object
|
|
partner_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
stats:
|
|
type:
|
|
- "null"
|
|
- object
|
|
tags:
|
|
type:
|
|
- "null"
|
|
- array
|
|
team:
|
|
type:
|
|
- "null"
|
|
- object
|
|
updated_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
additionalProperties: true
|
|
rewards:
|
|
type: object
|
|
$schema: http://json-schema.org/draft-07/schema#
|
|
properties:
|
|
description:
|
|
type:
|
|
- "null"
|
|
- string
|
|
action:
|
|
type:
|
|
- "null"
|
|
- object
|
|
amount:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
created_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
customer:
|
|
type:
|
|
- "null"
|
|
- object
|
|
invoice:
|
|
type:
|
|
- "null"
|
|
- object
|
|
key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
offer:
|
|
type:
|
|
- "null"
|
|
- object
|
|
partnership:
|
|
type:
|
|
- "null"
|
|
- object
|
|
reward_status:
|
|
type:
|
|
- "null"
|
|
- string
|
|
transaction:
|
|
type:
|
|
- "null"
|
|
- object
|
|
trigger:
|
|
type:
|
|
- "null"
|
|
- object
|
|
updated_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
additionalProperties: true
|
|
transactions:
|
|
type: object
|
|
$schema: http://json-schema.org/draft-07/schema#
|
|
properties:
|
|
amount:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
amount_usd:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
approved:
|
|
type:
|
|
- "null"
|
|
- boolean
|
|
category_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
created_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
currency:
|
|
type:
|
|
- "null"
|
|
- string
|
|
customer:
|
|
type:
|
|
- "null"
|
|
- object
|
|
customer_key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
extension:
|
|
type:
|
|
- "null"
|
|
- object
|
|
key:
|
|
type:
|
|
- "null"
|
|
- string
|
|
product_key:
|
|
type:
|
|
- "null"
|
|
- object
|
|
updated_at:
|
|
type:
|
|
- "null"
|
|
- integer
|
|
additionalProperties: true
|