airbyte-source-iterable 0.5.0__tar.gz → 0.5.1.dev202405100053__tar.gz
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.
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/PKG-INFO +26 -12
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/README.md +24 -11
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/pyproject.toml +2 -2
- airbyte_source_iterable-0.5.1.dev202405100053/source_iterable/schemas/campaigns.json +80 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/schemas/campaigns_metrics.json +1 -0
- airbyte_source_iterable-0.5.1.dev202405100053/source_iterable/schemas/channels.json +21 -0
- airbyte_source_iterable-0.5.1.dev202405100053/source_iterable/schemas/email_bounce.json +50 -0
- airbyte_source_iterable-0.5.1.dev202405100053/source_iterable/schemas/email_click.json +82 -0
- airbyte_source_iterable-0.5.1.dev202405100053/source_iterable/schemas/email_complaint.json +50 -0
- airbyte_source_iterable-0.5.1.dev202405100053/source_iterable/schemas/email_open.json +70 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/schemas/email_send.json +38 -0
- airbyte_source_iterable-0.5.1.dev202405100053/source_iterable/schemas/email_send_skip.json +171 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/schemas/email_subscribe.json +11 -0
- airbyte_source_iterable-0.5.1.dev202405100053/source_iterable/schemas/email_unsubscribe.json +72 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/schemas/events.json +8 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/schemas/list_users.json +2 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/schemas/lists.json +4 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/schemas/message_types.json +3 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/schemas/metadata.json +1 -0
- airbyte_source_iterable-0.5.1.dev202405100053/source_iterable/schemas/templates.json +38 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/schemas/users.json +132 -11
- airbyte_source_iterable-0.5.0/source_iterable/schemas/campaigns.json +0 -62
- airbyte_source_iterable-0.5.0/source_iterable/schemas/channels.json +0 -17
- airbyte_source_iterable-0.5.0/source_iterable/schemas/email_bounce.json +0 -40
- airbyte_source_iterable-0.5.0/source_iterable/schemas/email_click.json +0 -64
- airbyte_source_iterable-0.5.0/source_iterable/schemas/email_complaint.json +0 -40
- airbyte_source_iterable-0.5.0/source_iterable/schemas/email_open.json +0 -55
- airbyte_source_iterable-0.5.0/source_iterable/schemas/email_send_skip.json +0 -133
- airbyte_source_iterable-0.5.0/source_iterable/schemas/email_unsubscribe.json +0 -57
- airbyte_source_iterable-0.5.0/source_iterable/schemas/templates.json +0 -30
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/__init__.py +0 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/components.py +0 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/manifest.yaml +0 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/run.py +0 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/slice_generators.py +0 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/source.py +0 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/spec.json +0 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/streams.py +0 -0
- {airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/source_iterable/utils.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: airbyte-source-iterable
|
3
|
-
Version: 0.5.
|
3
|
+
Version: 0.5.1.dev202405100053
|
4
4
|
Summary: Source implementation for Iterable.
|
5
5
|
Home-page: https://airbyte.com
|
6
6
|
License: MIT
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.9
|
13
13
|
Classifier: Programming Language :: Python :: 3.10
|
14
14
|
Classifier: Programming Language :: Python :: 3.11
|
15
|
-
Requires-Dist: airbyte-cdk (
|
15
|
+
Requires-Dist: airbyte-cdk (==0.88.1)
|
16
16
|
Requires-Dist: pendulum (==2.1.2)
|
17
17
|
Requires-Dist: python-dateutil (==2.8.2)
|
18
18
|
Requires-Dist: requests (==2.31.0)
|
@@ -22,32 +22,33 @@ Description-Content-Type: text/markdown
|
|
22
22
|
|
23
23
|
# Iterable source connector
|
24
24
|
|
25
|
-
|
26
25
|
This is the repository for the Iterable source connector, written in Python.
|
27
26
|
For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/iterable).
|
28
27
|
|
29
28
|
## Local development
|
30
29
|
|
31
30
|
### Prerequisites
|
32
|
-
* Python (~=3.9)
|
33
|
-
* Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation)
|
34
31
|
|
32
|
+
- Python (~=3.9)
|
33
|
+
- Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation)
|
35
34
|
|
36
35
|
### Installing the connector
|
36
|
+
|
37
37
|
From this connector directory, run:
|
38
|
+
|
38
39
|
```bash
|
39
40
|
poetry install --with dev
|
40
41
|
```
|
41
42
|
|
42
|
-
|
43
43
|
### Create credentials
|
44
|
+
|
44
45
|
**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/iterable)
|
45
46
|
to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_iterable/spec.yaml` file.
|
46
47
|
Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information.
|
47
48
|
See `sample_files/sample_config.json` for a sample config file.
|
48
49
|
|
49
|
-
|
50
50
|
### Locally running the connector
|
51
|
+
|
51
52
|
```
|
52
53
|
poetry run source-iterable spec
|
53
54
|
poetry run source-iterable check --config secrets/config.json
|
@@ -56,23 +57,28 @@ poetry run source-iterable read --config secrets/config.json --catalog sample_fi
|
|
56
57
|
```
|
57
58
|
|
58
59
|
### Running unit tests
|
60
|
+
|
59
61
|
To run unit tests locally, from the connector directory run:
|
62
|
+
|
60
63
|
```
|
61
64
|
poetry run pytest unit_tests
|
62
65
|
```
|
63
66
|
|
64
67
|
### Building the docker image
|
68
|
+
|
65
69
|
1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md)
|
66
70
|
2. Run the following command to build the docker image:
|
71
|
+
|
67
72
|
```bash
|
68
73
|
airbyte-ci connectors --name=source-iterable build
|
69
74
|
```
|
70
75
|
|
71
76
|
An image will be available on your host with the tag `airbyte/source-iterable:dev`.
|
72
77
|
|
73
|
-
|
74
78
|
### Running as a docker container
|
79
|
+
|
75
80
|
Then run any of the connector commands as follows:
|
81
|
+
|
76
82
|
```
|
77
83
|
docker run --rm airbyte/source-iterable:dev spec
|
78
84
|
docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-iterable:dev check --config /secrets/config.json
|
@@ -81,18 +87,23 @@ docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integrat
|
|
81
87
|
```
|
82
88
|
|
83
89
|
### Running our CI test suite
|
90
|
+
|
84
91
|
You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md):
|
92
|
+
|
85
93
|
```bash
|
86
94
|
airbyte-ci connectors --name=source-iterable test
|
87
95
|
```
|
88
96
|
|
89
97
|
### Customizing acceptance Tests
|
98
|
+
|
90
99
|
Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information.
|
91
100
|
If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py.
|
92
101
|
|
93
102
|
### Dependency Management
|
94
|
-
|
103
|
+
|
104
|
+
All of your dependencies should be managed via Poetry.
|
95
105
|
To add a new dependency, run:
|
106
|
+
|
96
107
|
```bash
|
97
108
|
poetry add <package-name>
|
98
109
|
```
|
@@ -100,14 +111,17 @@ poetry add <package-name>
|
|
100
111
|
Please commit the changes to `pyproject.toml` and `poetry.lock` files.
|
101
112
|
|
102
113
|
## Publishing a new version of the connector
|
114
|
+
|
103
115
|
You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what?
|
116
|
+
|
104
117
|
1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-iterable test`
|
105
|
-
2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)):
|
106
|
-
|
107
|
-
|
118
|
+
2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)):
|
119
|
+
- bump the `dockerImageTag` value in in `metadata.yaml`
|
120
|
+
- bump the `version` value in `pyproject.toml`
|
108
121
|
3. Make sure the `metadata.yaml` content is up to date.
|
109
122
|
4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/iterable.md`).
|
110
123
|
5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention).
|
111
124
|
6. Pat yourself on the back for being an awesome contributor.
|
112
125
|
7. Someone from Airbyte will take a look at your PR and iterate with you to merge it into master.
|
113
126
|
8. Once your PR is merged, the new version of the connector will be automatically published to Docker Hub and our connector registry.
|
127
|
+
|
@@ -1,31 +1,32 @@
|
|
1
1
|
# Iterable source connector
|
2
2
|
|
3
|
-
|
4
3
|
This is the repository for the Iterable source connector, written in Python.
|
5
4
|
For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/iterable).
|
6
5
|
|
7
6
|
## Local development
|
8
7
|
|
9
8
|
### Prerequisites
|
10
|
-
* Python (~=3.9)
|
11
|
-
* Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation)
|
12
9
|
|
10
|
+
- Python (~=3.9)
|
11
|
+
- Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation)
|
13
12
|
|
14
13
|
### Installing the connector
|
14
|
+
|
15
15
|
From this connector directory, run:
|
16
|
+
|
16
17
|
```bash
|
17
18
|
poetry install --with dev
|
18
19
|
```
|
19
20
|
|
20
|
-
|
21
21
|
### Create credentials
|
22
|
+
|
22
23
|
**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/iterable)
|
23
24
|
to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_iterable/spec.yaml` file.
|
24
25
|
Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information.
|
25
26
|
See `sample_files/sample_config.json` for a sample config file.
|
26
27
|
|
27
|
-
|
28
28
|
### Locally running the connector
|
29
|
+
|
29
30
|
```
|
30
31
|
poetry run source-iterable spec
|
31
32
|
poetry run source-iterable check --config secrets/config.json
|
@@ -34,23 +35,28 @@ poetry run source-iterable read --config secrets/config.json --catalog sample_fi
|
|
34
35
|
```
|
35
36
|
|
36
37
|
### Running unit tests
|
38
|
+
|
37
39
|
To run unit tests locally, from the connector directory run:
|
40
|
+
|
38
41
|
```
|
39
42
|
poetry run pytest unit_tests
|
40
43
|
```
|
41
44
|
|
42
45
|
### Building the docker image
|
46
|
+
|
43
47
|
1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md)
|
44
48
|
2. Run the following command to build the docker image:
|
49
|
+
|
45
50
|
```bash
|
46
51
|
airbyte-ci connectors --name=source-iterable build
|
47
52
|
```
|
48
53
|
|
49
54
|
An image will be available on your host with the tag `airbyte/source-iterable:dev`.
|
50
55
|
|
51
|
-
|
52
56
|
### Running as a docker container
|
57
|
+
|
53
58
|
Then run any of the connector commands as follows:
|
59
|
+
|
54
60
|
```
|
55
61
|
docker run --rm airbyte/source-iterable:dev spec
|
56
62
|
docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-iterable:dev check --config /secrets/config.json
|
@@ -59,18 +65,23 @@ docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integrat
|
|
59
65
|
```
|
60
66
|
|
61
67
|
### Running our CI test suite
|
68
|
+
|
62
69
|
You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md):
|
70
|
+
|
63
71
|
```bash
|
64
72
|
airbyte-ci connectors --name=source-iterable test
|
65
73
|
```
|
66
74
|
|
67
75
|
### Customizing acceptance Tests
|
76
|
+
|
68
77
|
Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information.
|
69
78
|
If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py.
|
70
79
|
|
71
80
|
### Dependency Management
|
72
|
-
|
81
|
+
|
82
|
+
All of your dependencies should be managed via Poetry.
|
73
83
|
To add a new dependency, run:
|
84
|
+
|
74
85
|
```bash
|
75
86
|
poetry add <package-name>
|
76
87
|
```
|
@@ -78,14 +89,16 @@ poetry add <package-name>
|
|
78
89
|
Please commit the changes to `pyproject.toml` and `poetry.lock` files.
|
79
90
|
|
80
91
|
## Publishing a new version of the connector
|
92
|
+
|
81
93
|
You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what?
|
94
|
+
|
82
95
|
1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-iterable test`
|
83
|
-
2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)):
|
84
|
-
|
85
|
-
|
96
|
+
2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)):
|
97
|
+
- bump the `dockerImageTag` value in in `metadata.yaml`
|
98
|
+
- bump the `version` value in `pyproject.toml`
|
86
99
|
3. Make sure the `metadata.yaml` content is up to date.
|
87
100
|
4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/iterable.md`).
|
88
101
|
5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention).
|
89
102
|
6. Pat yourself on the back for being an awesome contributor.
|
90
103
|
7. Someone from Airbyte will take a look at your PR and iterate with you to merge it into master.
|
91
|
-
8. Once your PR is merged, the new version of the connector will be automatically published to Docker Hub and our connector registry.
|
104
|
+
8. Once your PR is merged, the new version of the connector will be automatically published to Docker Hub and our connector registry.
|
{airbyte_source_iterable-0.5.0 → airbyte_source_iterable-0.5.1.dev202405100053}/pyproject.toml
RENAMED
@@ -5,7 +5,7 @@ requires = [
|
|
5
5
|
build-backend = "poetry.core.masonry.api"
|
6
6
|
|
7
7
|
[tool.poetry]
|
8
|
-
version = "0.5.
|
8
|
+
version = "0.5.1.dev202405100053"
|
9
9
|
name = "airbyte-source-iterable"
|
10
10
|
description = "Source implementation for Iterable."
|
11
11
|
authors = [
|
@@ -23,7 +23,7 @@ packages = [
|
|
23
23
|
[tool.poetry.dependencies]
|
24
24
|
python = "^3.9,<3.12"
|
25
25
|
pendulum = "==2.1.2"
|
26
|
-
airbyte-cdk = "
|
26
|
+
airbyte-cdk = "0.88.1"
|
27
27
|
requests = "==2.31.0"
|
28
28
|
python-dateutil = "==2.8.2"
|
29
29
|
|
@@ -0,0 +1,80 @@
|
|
1
|
+
{
|
2
|
+
"properties": {
|
3
|
+
"id": {
|
4
|
+
"description": "The unique identifier of the campaign",
|
5
|
+
"type": ["null", "integer"]
|
6
|
+
},
|
7
|
+
"createdAt": {
|
8
|
+
"description": "The timestamp when the campaign was created",
|
9
|
+
"type": ["null", "integer"]
|
10
|
+
},
|
11
|
+
"updatedAt": {
|
12
|
+
"description": "The timestamp when the campaign was last updated",
|
13
|
+
"type": ["null", "integer"]
|
14
|
+
},
|
15
|
+
"startAt": {
|
16
|
+
"description": "The timestamp when the campaign will start",
|
17
|
+
"type": ["null", "integer"]
|
18
|
+
},
|
19
|
+
"endedAt": {
|
20
|
+
"description": "The timestamp when the campaign ended",
|
21
|
+
"type": ["null", "integer"]
|
22
|
+
},
|
23
|
+
"name": {
|
24
|
+
"description": "The name of the campaign",
|
25
|
+
"type": ["null", "string"]
|
26
|
+
},
|
27
|
+
"templateId": {
|
28
|
+
"description": "The ID of the template used for the campaign",
|
29
|
+
"type": ["null", "integer"]
|
30
|
+
},
|
31
|
+
"messageMedium": {
|
32
|
+
"description": "The medium used to deliver the campaign message (e.g., email, SMS)",
|
33
|
+
"type": ["null", "string"]
|
34
|
+
},
|
35
|
+
"createdByUserId": {
|
36
|
+
"description": "The ID of the user who created the campaign",
|
37
|
+
"type": ["null", "string"]
|
38
|
+
},
|
39
|
+
"updatedByUserId": {
|
40
|
+
"description": "The ID of the user who last updated the campaign",
|
41
|
+
"type": ["null", "string"]
|
42
|
+
},
|
43
|
+
"campaignState": {
|
44
|
+
"description": "The current state of the campaign (e.g., draft, active, paused)",
|
45
|
+
"type": ["null", "string"]
|
46
|
+
},
|
47
|
+
"listIds": {
|
48
|
+
"description": "List of IDs of the lists targeted by the campaign",
|
49
|
+
"type": ["null", "array"],
|
50
|
+
"items": {}
|
51
|
+
},
|
52
|
+
"suppressionListIds": {
|
53
|
+
"description": "List of IDs of suppression lists for the campaign",
|
54
|
+
"type": ["null", "array"],
|
55
|
+
"items": {}
|
56
|
+
},
|
57
|
+
"sendSize": {
|
58
|
+
"description": "The size of the audience targeted by the campaign",
|
59
|
+
"type": ["null", "number"]
|
60
|
+
},
|
61
|
+
"recurringCampaignId": {
|
62
|
+
"description": "If the campaign is recurring, the ID of the parent recurring campaign",
|
63
|
+
"type": ["null", "number"]
|
64
|
+
},
|
65
|
+
"workflowId": {
|
66
|
+
"description": "The ID of the workflow associated with the campaign",
|
67
|
+
"type": ["null", "number"]
|
68
|
+
},
|
69
|
+
"labels": {
|
70
|
+
"description": "List of labels associated with the campaign",
|
71
|
+
"type": ["null", "array"],
|
72
|
+
"items": {}
|
73
|
+
},
|
74
|
+
"type": {
|
75
|
+
"description": "The type of campaign (e.g., one-time, recurring)",
|
76
|
+
"type": ["null", "string"]
|
77
|
+
}
|
78
|
+
},
|
79
|
+
"type": ["null", "object"]
|
80
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
{
|
2
|
+
"properties": {
|
3
|
+
"id": {
|
4
|
+
"description": "The unique identifier of the channel.",
|
5
|
+
"type": ["null", "number"]
|
6
|
+
},
|
7
|
+
"name": {
|
8
|
+
"description": "The name or title of the channel.",
|
9
|
+
"type": ["null", "string"]
|
10
|
+
},
|
11
|
+
"channelType": {
|
12
|
+
"description": "The type of channel, such as email, SMS, or push notification.",
|
13
|
+
"type": ["null", "string"]
|
14
|
+
},
|
15
|
+
"messageMedium": {
|
16
|
+
"description": "The medium used to deliver messages through this channel, such as text, image, or video.",
|
17
|
+
"type": ["null", "string"]
|
18
|
+
}
|
19
|
+
},
|
20
|
+
"type": ["null", "object"]
|
21
|
+
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
{
|
2
|
+
"properties": {
|
3
|
+
"createdAt": {
|
4
|
+
"description": "The date and time when the email bounce data was created.",
|
5
|
+
"type": ["null", "string"],
|
6
|
+
"format": "date-time"
|
7
|
+
},
|
8
|
+
"campaignId": {
|
9
|
+
"description": "The unique identifier of the campaign associated with the email bounce data.",
|
10
|
+
"type": ["null", "integer"]
|
11
|
+
},
|
12
|
+
"itblInternal": {
|
13
|
+
"description": "Internal information related to Iterable.",
|
14
|
+
"type": ["null", "object"],
|
15
|
+
"properties": {
|
16
|
+
"documentCreatedAt": {
|
17
|
+
"description": "The date and time when the internal document for Iterable was created.",
|
18
|
+
"type": ["null", "string"],
|
19
|
+
"format": "date-time"
|
20
|
+
},
|
21
|
+
"documentUpdatedAt": {
|
22
|
+
"description": "The date and time when the internal document for Iterable was last updated.",
|
23
|
+
"type": ["null", "string"],
|
24
|
+
"format": "date-time"
|
25
|
+
}
|
26
|
+
}
|
27
|
+
},
|
28
|
+
"messageId": {
|
29
|
+
"description": "The unique identifier of the message associated with the email bounce data.",
|
30
|
+
"type": ["null", "string"]
|
31
|
+
},
|
32
|
+
"templateId": {
|
33
|
+
"description": "The unique identifier of the email template associated with the bounce data.",
|
34
|
+
"type": ["null", "integer"]
|
35
|
+
},
|
36
|
+
"email": {
|
37
|
+
"description": "The email address that encountered a bounce.",
|
38
|
+
"type": ["null", "string"]
|
39
|
+
},
|
40
|
+
"userId": {
|
41
|
+
"description": "The unique identifier of the user associated with the bounced email address.",
|
42
|
+
"type": ["null", "string"]
|
43
|
+
},
|
44
|
+
"recipientState": {
|
45
|
+
"description": "The state of the recipient email address at the time of the bounce (e.g., active, inactive).",
|
46
|
+
"type": ["null", "string"]
|
47
|
+
}
|
48
|
+
},
|
49
|
+
"type": ["null", "object"]
|
50
|
+
}
|
@@ -0,0 +1,82 @@
|
|
1
|
+
{
|
2
|
+
"properties": {
|
3
|
+
"country": {
|
4
|
+
"description": "The country from where the email click was recorded.",
|
5
|
+
"type": ["null", "string"]
|
6
|
+
},
|
7
|
+
"city": {
|
8
|
+
"description": "The city from where the email click was recorded.",
|
9
|
+
"type": ["null", "string"]
|
10
|
+
},
|
11
|
+
"campaignId": {
|
12
|
+
"description": "The unique identifier of the campaign associated with the email click data.",
|
13
|
+
"type": ["null", "integer"]
|
14
|
+
},
|
15
|
+
"itblInternal": {
|
16
|
+
"description": "Internal data related to the iterable service.",
|
17
|
+
"type": ["null", "object"],
|
18
|
+
"properties": {
|
19
|
+
"documentCreatedAt": {
|
20
|
+
"description": "The date and time when the internal document was created.",
|
21
|
+
"type": ["null", "string"],
|
22
|
+
"format": "date-time"
|
23
|
+
},
|
24
|
+
"documentUpdatedAt": {
|
25
|
+
"description": "The date and time when the internal document was last updated.",
|
26
|
+
"type": ["null", "string"],
|
27
|
+
"format": "date-time"
|
28
|
+
}
|
29
|
+
}
|
30
|
+
},
|
31
|
+
"ip": {
|
32
|
+
"description": "The IP address from where the email click was recorded.",
|
33
|
+
"type": ["null", "string"]
|
34
|
+
},
|
35
|
+
"contentId": {
|
36
|
+
"description": "The identifier of the content clicked within the email.",
|
37
|
+
"type": ["null", "integer"]
|
38
|
+
},
|
39
|
+
"userAgentDevice": {
|
40
|
+
"description": "The device information of the user agent used for the email click.",
|
41
|
+
"type": ["null", "string"]
|
42
|
+
},
|
43
|
+
"messageId": {
|
44
|
+
"description": "The unique identifier of the message that contained the email.",
|
45
|
+
"type": ["null", "string"]
|
46
|
+
},
|
47
|
+
"hrefIndex": {
|
48
|
+
"description": "The index of the href link within the email content.",
|
49
|
+
"type": ["null", "integer"]
|
50
|
+
},
|
51
|
+
"userAgent": {
|
52
|
+
"description": "The user agent of the browser or application used for the email click.",
|
53
|
+
"type": ["null", "string"]
|
54
|
+
},
|
55
|
+
"templateId": {
|
56
|
+
"description": "The identifier of the email template used in the campaign.",
|
57
|
+
"type": ["null", "integer"]
|
58
|
+
},
|
59
|
+
"url": {
|
60
|
+
"description": "The URL that was clicked within the email.",
|
61
|
+
"type": ["null", "string"]
|
62
|
+
},
|
63
|
+
"createdAt": {
|
64
|
+
"description": "The date and time when the email click event occurred.",
|
65
|
+
"type": ["null", "string"],
|
66
|
+
"format": "date-time"
|
67
|
+
},
|
68
|
+
"region": {
|
69
|
+
"description": "The region from where the email click was recorded.",
|
70
|
+
"type": ["null", "string"]
|
71
|
+
},
|
72
|
+
"email": {
|
73
|
+
"description": "The email address of the user who clicked the email link.",
|
74
|
+
"type": ["null", "string"]
|
75
|
+
},
|
76
|
+
"userId": {
|
77
|
+
"description": "The unique identifier of the user who clicked the email link.",
|
78
|
+
"type": ["null", "string"]
|
79
|
+
}
|
80
|
+
},
|
81
|
+
"type": ["null", "object"]
|
82
|
+
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
{
|
2
|
+
"properties": {
|
3
|
+
"createdAt": {
|
4
|
+
"description": "Timestamp indicating when the email complaint was created",
|
5
|
+
"type": ["null", "string"],
|
6
|
+
"format": "date-time"
|
7
|
+
},
|
8
|
+
"campaignId": {
|
9
|
+
"description": "Unique identifier for the campaign associated with the email complaint data",
|
10
|
+
"type": ["null", "integer"]
|
11
|
+
},
|
12
|
+
"itblInternal": {
|
13
|
+
"description": "Holds internal metadata related to the iterable data being accessed.",
|
14
|
+
"type": ["null", "object"],
|
15
|
+
"properties": {
|
16
|
+
"documentCreatedAt": {
|
17
|
+
"description": "Timestamp indicating when the internal document was created",
|
18
|
+
"type": ["null", "string"],
|
19
|
+
"format": "date-time"
|
20
|
+
},
|
21
|
+
"documentUpdatedAt": {
|
22
|
+
"description": "Timestamp indicating when the internal document was last updated",
|
23
|
+
"type": ["null", "string"],
|
24
|
+
"format": "date-time"
|
25
|
+
}
|
26
|
+
}
|
27
|
+
},
|
28
|
+
"messageId": {
|
29
|
+
"description": "Unique identifier for the email message associated with the complaint",
|
30
|
+
"type": ["null", "string"]
|
31
|
+
},
|
32
|
+
"templateId": {
|
33
|
+
"description": "Unique identifier for the email template used in the campaign",
|
34
|
+
"type": ["null", "integer"]
|
35
|
+
},
|
36
|
+
"email": {
|
37
|
+
"description": "Email address of the recipient who lodged the complaint",
|
38
|
+
"type": ["null", "string"]
|
39
|
+
},
|
40
|
+
"userId": {
|
41
|
+
"description": "Unique identifier for the user who lodged the email complaint",
|
42
|
+
"type": ["null", "string"]
|
43
|
+
},
|
44
|
+
"recipientState": {
|
45
|
+
"description": "State or status of the recipient associated with the complaint",
|
46
|
+
"type": ["null", "string"]
|
47
|
+
}
|
48
|
+
},
|
49
|
+
"type": ["null", "object"]
|
50
|
+
}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
{
|
2
|
+
"properties": {
|
3
|
+
"country": {
|
4
|
+
"description": "The country from which the email was opened.",
|
5
|
+
"type": ["null", "string"]
|
6
|
+
},
|
7
|
+
"createdAt": {
|
8
|
+
"description": "The timestamp when the email_open event occurred.",
|
9
|
+
"type": ["null", "string"],
|
10
|
+
"format": "date-time"
|
11
|
+
},
|
12
|
+
"city": {
|
13
|
+
"description": "The city from which the email was opened.",
|
14
|
+
"type": ["null", "string"]
|
15
|
+
},
|
16
|
+
"campaignId": {
|
17
|
+
"description": "The unique identifier of the campaign to which the email_open event belongs.",
|
18
|
+
"type": ["null", "integer"]
|
19
|
+
},
|
20
|
+
"itblInternal": {
|
21
|
+
"description": "Internal data related to the email open event.",
|
22
|
+
"type": ["null", "object"],
|
23
|
+
"properties": {
|
24
|
+
"documentCreatedAt": {
|
25
|
+
"description": "The timestamp when the ITBL internal document was created.",
|
26
|
+
"type": ["null", "string"],
|
27
|
+
"format": "date-time"
|
28
|
+
},
|
29
|
+
"documentUpdatedAt": {
|
30
|
+
"description": "The timestamp when the ITBL internal document was last updated.",
|
31
|
+
"type": ["null", "string"],
|
32
|
+
"format": "date-time"
|
33
|
+
}
|
34
|
+
}
|
35
|
+
},
|
36
|
+
"ip": {
|
37
|
+
"description": "The IP address from which the email was opened.",
|
38
|
+
"type": ["null", "string"]
|
39
|
+
},
|
40
|
+
"userAgentDevice": {
|
41
|
+
"description": "The device information from which the email was opened.",
|
42
|
+
"type": ["null", "string"]
|
43
|
+
},
|
44
|
+
"messageId": {
|
45
|
+
"description": "The unique identifier of the email message.",
|
46
|
+
"type": ["null", "string"]
|
47
|
+
},
|
48
|
+
"userAgent": {
|
49
|
+
"description": "The user agent string of the browser used to open the email.",
|
50
|
+
"type": ["null", "string"]
|
51
|
+
},
|
52
|
+
"templateId": {
|
53
|
+
"description": "The unique identifier of the email template used.",
|
54
|
+
"type": ["null", "integer"]
|
55
|
+
},
|
56
|
+
"region": {
|
57
|
+
"description": "The region from which the email was opened.",
|
58
|
+
"type": ["null", "string"]
|
59
|
+
},
|
60
|
+
"email": {
|
61
|
+
"description": "The email address of the user who opened the email.",
|
62
|
+
"type": ["null", "string"]
|
63
|
+
},
|
64
|
+
"userId": {
|
65
|
+
"description": "The unique identifier of the user who opened the email.",
|
66
|
+
"type": ["null", "string"]
|
67
|
+
}
|
68
|
+
},
|
69
|
+
"type": ["null", "object"]
|
70
|
+
}
|