-
Notifications
You must be signed in to change notification settings - Fork 3.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migrate sendgrid to config-based #15257
Changes from 65 commits
897ecc5
6099e22
aa31326
a05e5b0
b193739
0cb7db5
778e3c3
2675e7d
1d23578
d9ec5b3
a1b2e08
9c8d83f
018d165
6f1fbbd
7342626
b5e5ba6
842f515
c6adde7
2885ab2
53ebb79
8e32764
01a300e
5f0a51e
992f3a8
936ccc6
9ad8824
4b73912
028bdfb
3c76c5a
b9277d0
a584b84
9957303
5f8e7d5
72880ce
4cd75ea
28f0588
99caa58
8d55afa
9b70a3b
4a9876d
016cb69
b984d20
42af817
5f0bcf2
f9c12a0
b36596c
03ed92e
1fcd68f
965b2cb
53f3e68
30920d2
52d28fe
e10d6b9
7975a89
b582e87
1b34c19
3dadc32
ac92374
f94a4a4
6708c46
b0a2d2b
ec94936
ffefa97
8d10fa9
3256a2f
421f72e
b70e518
a5c2734
971ab82
28fec5e
2e103f3
5ef1817
04be9c4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,342 @@ | ||
definitions: | ||
page_size: 50 | ||
|
||
schema_loader: | ||
type: JsonSchema | ||
file_path: "./source_sendgrid/schemas/{{ options.name }}.json" | ||
result_selector: | ||
type: RecordSelector | ||
extractor: | ||
type: DpathExtractor | ||
field_pointer: | ||
- "result" | ||
results_selector: | ||
type: RecordSelector | ||
extractor: | ||
type: DpathExtractor | ||
field_pointer: | ||
- "results" | ||
selector: | ||
type: RecordSelector | ||
extractor: | ||
type: DpathExtractor | ||
field_pointer: [] | ||
requester: | ||
type: HttpRequester | ||
name: "{{ options['name'] }}" | ||
url_base: "https://api.sendgrid.com" | ||
http_method: "GET" | ||
authenticator: | ||
type: "BearerAuthenticator" | ||
api_token: "{{ config.apikey }}" | ||
cursor_paginator: | ||
type: LimitPaginator | ||
url_base: "*ref(definitions.requester.url_base)" | ||
page_size: "*ref(definitions.page_size)" | ||
limit_option: | ||
inject_into: "request_parameter" | ||
field_name: "page_size" | ||
page_token_option: | ||
inject_into: "path" | ||
pagination_strategy: | ||
type: "CursorPagination" | ||
cursor_value: "{{ response._metadata.next }}" | ||
offset_paginator: | ||
type: LimitPaginator | ||
$options: | ||
url_base: "*ref(definitions.requester.url_base)" | ||
page_size: "*ref(definitions.page_size)" | ||
limit_option: | ||
inject_into: "request_parameter" | ||
field_name: "limit" | ||
page_token_option: | ||
inject_into: "request_parameter" | ||
field_name: "offset" | ||
pagination_strategy: | ||
type: "OffsetIncrement" | ||
retriever: | ||
type: SimpleRetriever | ||
name: "{{ options['name'] }}" | ||
primary_key: "{{ options['primary_key'] }}" | ||
stream_slicer: | ||
type: "DatetimeStreamSlicer" | ||
start_datetime: | ||
datetime: "2017-01-01T00:00:00.0Z" | ||
datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" | ||
end_datetime: | ||
datetime: "2022-08-01T00:00:00.0Z" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we shouldn't hardcode this right? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. updated |
||
datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" | ||
step: "10000d" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. seems like a pretty huge step size no? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. changed to 30d |
||
cursor_field: "{{ options.stream_cursor_field }}" | ||
start_time_option: | ||
field_name: "start_time" | ||
inject_into: "request_parameter" | ||
end_time_option: | ||
field_name: "end_time" | ||
inject_into: "request_parameter" | ||
datetime_format: "%s" | ||
messages_stream_slicer: | ||
type: "DatetimeStreamSlicer" | ||
start_datetime: | ||
datetime: "2017-01-01T00:00:00.0Z" | ||
datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" | ||
end_datetime: | ||
datetime: "2022-08-01T00:00:00.0Z" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why not now? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. updated |
||
datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" | ||
step: "10000d" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same comment There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. updated |
||
cursor_field: "{{ options.stream_cursor_field }}" | ||
datetime_format: "%Y-%m-%dT%H:%M:%S.%f%z" | ||
|
||
streams: | ||
- type: DeclarativeStream | ||
$options: | ||
name: "lists" | ||
primary_key: "id" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.result_selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/marketing/lists" | ||
paginator: | ||
$ref: "*ref(definitions.cursor_paginator)" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "campaigns" | ||
primary_key: "id" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.result_selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/marketing/campaigns" | ||
paginator: | ||
$ref: "*ref(definitions.cursor_paginator)" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "contacts" | ||
primary_key: "id" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.result_selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/marketing/contacts" | ||
paginator: | ||
type: "NoPagination" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "stats_automations" | ||
primary_key: "id" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.results_selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/marketing/stats/automations" | ||
paginator: | ||
$ref: "*ref(definitions.cursor_paginator)" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "segments" | ||
primary_key: "id" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.results_selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/marketing/segments" | ||
paginator: | ||
type: "NoPagination" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "single_sends" | ||
primary_key: "id" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.results_selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/marketing/stats/singlesends" | ||
paginator: | ||
$ref: "*ref(definitions.cursor_paginator)" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "templates" | ||
primary_key: "id" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.result_selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/templates" | ||
request_options_provider: | ||
request_parameters: | ||
generations: "legacy,dynamic" | ||
paginator: | ||
$ref: "*ref(definitions.cursor_paginator)" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "bounces" | ||
primary_key: "email" | ||
stream_cursor_field: "created" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/suppression/bounces" | ||
paginator: | ||
$ref: "*ref(definitions.offset_paginator)" | ||
stream_slicer: | ||
$ref: "*ref(definitions.stream_slicer)" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "global_suppressions" | ||
primary_key: "email" | ||
stream_cursor_field: "created" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/suppression/unsubscribes" | ||
paginator: | ||
$ref: "*ref(definitions.offset_paginator)" | ||
stream_slicer: | ||
$ref: "*ref(definitions.stream_slicer)" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "blocks" | ||
primary_key: "email" | ||
stream_cursor_field: "created" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/suppression/blocks" | ||
paginator: | ||
$ref: "*ref(definitions.offset_paginator)" | ||
stream_slicer: | ||
$ref: "*ref(definitions.stream_slicer)" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "suppression_groups" | ||
primary_key: "id" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/asm/groups" | ||
paginator: | ||
type: "NoPagination" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "suppression_group_members" | ||
primary_key: "group_id" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/asm/suppressions" | ||
paginator: | ||
$ref: "*ref(definitions.offset_paginator)" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "invalid_emails" | ||
primary_key: "email" | ||
stream_cursor_field: "created" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/suppression/invalid_emails" | ||
paginator: | ||
$ref: "*ref(definitions.offset_paginator)" | ||
stream_slicer: | ||
$ref: "*ref(definitions.stream_slicer)" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "spam_reports" | ||
primary_key: "email" | ||
stream_cursor_field: "created" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/suppression/spam_reports" | ||
|
||
paginator: | ||
$ref: "*ref(definitions.offset_paginator)" | ||
stream_slicer: | ||
$ref: "*ref(definitions.stream_slicer)" | ||
- type: DeclarativeStream | ||
$options: | ||
name: "messages" | ||
primary_key: "msg_id" | ||
stream_cursor_field: "last_event_time" | ||
schema_loader: | ||
$ref: "*ref(definitions.schema_loader)" | ||
retriever: | ||
$ref: "*ref(definitions.retriever)" | ||
record_selector: | ||
$ref: "*ref(definitions.selector)" | ||
requester: | ||
$ref: "*ref(definitions.requester)" | ||
path: "/v3/messages" | ||
request_options_provider: | ||
request_parameters: | ||
limit: 1000 | ||
query: 'last_event_time BETWEEN TIMESTAMP "{{stream_slice.start_time}}" AND TIMESTAMP "{{stream_slice.end_time}}"' | ||
stream_slicer: | ||
$ref: "*ref(definitions.messages_stream_slicer)" | ||
check: | ||
type: CheckStream | ||
stream_names: ["lists"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no stop condition?