1
0
mirror of synced 2025-12-25 02:09:19 -05:00

source-outreach: add additional stream sequenceSteps (#26211)

* add sequenceSteps stream

* update stream docstrings

* updated tests and docker version

* updated image version in docs

* additional instructions for oauth in docs

* added PR in docs

* delete last file

* fix formatting of json files

---------

Co-authored-by: sajarin <sajarindider@gmail.com>
This commit is contained in:
Joel Olazagasti
2023-05-22 15:45:08 -04:00
committed by GitHub
parent 3689ff3abb
commit afe88c41da
9 changed files with 252 additions and 56 deletions

View File

@@ -34,5 +34,5 @@ COPY source_outreach ./source_outreach
ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py"
ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]
LABEL io.airbyte.version=0.2.0
LABEL io.airbyte.version=0.3.0
LABEL io.airbyte.name=airbyte/source-outreach

View File

@@ -1,12 +1,35 @@
{
"prospects": { "updatedAt": "2040-11-16T00:00:00Z" },
"sequences": { "updatedAt": "2040-11-16T00:00:00Z" },
"sequence_states": { "updatedAt": "2040-11-16T00:00:00Z" },
"accounts": { "updatedAt": "2040-11-16T00:00:00Z" },
"opportunities": { "updatedAt": "2040-11-16T00:00:00Z" },
"personas": { "updatedAt": "2040-11-16T00:00:00Z" },
"mailings": { "updatedAt": "2040-11-16T00:00:00Z" },
"mailboxes": { "updatedAt": "2040-11-16T00:00:00Z" },
"stages": { "updatedAt": "2040-11-16T00:00:00Z" },
"calls": { "updatedAt": "2040-11-16T00:00:00Z" }
"prospects": {
"updatedAt": "2040-11-16T00:00:00Z"
},
"sequences": {
"updatedAt": "2040-11-16T00:00:00Z"
},
"sequence_states": {
"updatedAt": "2040-11-16T00:00:00Z"
},
"sequence_steps": {
"updatedAt": "2040-11-16T00:00:00Z"
},
"accounts": {
"updatedAt": "2040-11-16T00:00:00Z"
},
"opportunities": {
"updatedAt": "2040-11-16T00:00:00Z"
},
"personas": {
"updatedAt": "2040-11-16T00:00:00Z"
},
"mailings": {
"updatedAt": "2040-11-16T00:00:00Z"
},
"mailboxes": {
"updatedAt": "2040-11-16T00:00:00Z"
},
"stages": {
"updatedAt": "2040-11-16T00:00:00Z"
},
"calls": {
"updatedAt": "2040-11-16T00:00:00Z"
}
}

View File

@@ -39,6 +39,19 @@
"destination_sync_mode": "overwrite",
"cursor_field": ["updatedAt"]
},
{
"stream": {
"name": "sequence_steps",
"json_schema": {},
"supported_sync_modes": ["full_refresh", "incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["updatedAt"],
"source_defined_primary_key": [["id"]]
},
"sync_mode": "incremental",
"destination_sync_mode": "overwrite",
"cursor_field": ["updatedAt"]
},
{
"stream": {
"name": "accounts",

View File

@@ -1,12 +1,35 @@
{
"prospects": { "updatedAt": "2020-11-16T00:00:00Z" },
"sequences": { "updatedAt": "2021-02-16T00:00:00Z" },
"sequenceStates": { "updatedAt": "2021-04-16T00:00:00Z" },
"accounts": { "updatedAt": "2021-11-16T00:00:00Z" },
"opportunities": { "updatedAt": "2022-01-16T00:00:00Z" },
"personas": { "updatedAt": "2022-01-03T10:00:00Z" },
"mailings": { "updatedAt": "2021-11-01T11:22:00Z" },
"mailboxes": { "updatedAt": "2019-01-01T00:00:30Z" },
"stages": { "updatedAt": "2021-06-28T10:10:20Z" },
"calls": { "updatedAt": "2021-06-28T10:10:20Z" }
"prospects": {
"updatedAt": "2020-11-16T00:00:00Z"
},
"sequences": {
"updatedAt": "2021-02-16T00:00:00Z"
},
"sequenceStates": {
"updatedAt": "2021-04-16T00:00:00Z"
},
"sequenceSteps": {
"updatedAt": "2021-04-16T00:00:00Z"
},
"accounts": {
"updatedAt": "2021-11-16T00:00:00Z"
},
"opportunities": {
"updatedAt": "2022-01-16T00:00:00Z"
},
"personas": {
"updatedAt": "2022-01-03T10:00:00Z"
},
"mailings": {
"updatedAt": "2021-11-01T11:22:00Z"
},
"mailboxes": {
"updatedAt": "2019-01-01T00:00:30Z"
},
"stages": {
"updatedAt": "2021-06-28T10:10:20Z"
},
"calls": {
"updatedAt": "2021-06-28T10:10:20Z"
}
}

View File

@@ -2,7 +2,7 @@ data:
connectorSubtype: api
connectorType: source
definitionId: 3490c201-5d95-4783-b600-eaf07a4c7787
dockerImageTag: 0.2.0
dockerImageTag: 0.3.0
dockerRepository: airbyte/source-outreach
githubIssueLabel: source-outreach
icon: outreach.svg

View File

@@ -0,0 +1,124 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"additionalProperties": true,
"properties": {
"id": {
"type": "integer"
},
"bounceCount": {
"type": ["null", "integer"]
},
"clickCount": {
"type": ["null", "integer"]
},
"createdAt": {
"type": ["null", "string"],
"format": "date-time"
},
"date": {
"type": ["null", "string"],
"format": "date"
},
"deliverCount": {
"type": ["null", "integer"]
},
"displayName": {
"type": ["null", "string"]
},
"failureCount": {
"type": ["null", "integer"]
},
"interval": {
"type": ["null", "integer"]
},
"negativeReplyCount": {
"type": ["null", "integer"]
},
"neutralReplyCount": {
"type": ["null", "integer"]
},
"openCount": {
"type": ["null", "integer"]
},
"optOutCount": {
"type": ["null", "integer"]
},
"order": {
"type": ["null", "integer"]
},
"positiveReplyCount": {
"type": ["null", "integer"]
},
"replyCount": {
"type": ["null", "integer"]
},
"scheduleCount": {
"type": ["null", "integer"]
},
"stepType": {
"type": ["null", "string"]
},
"taskAutoDisplay": {
"type": ["null", "string"]
},
"updatedAt": {
"type": ["null", "string"],
"format": "date-time"
},
"callPurpose": {
"type": ["null", "array"],
"items": {
"type": "integer"
}
},
"calls": {
"type": ["null", "array"],
"items": {
"type": "integer"
}
},
"creator": {
"type": ["null", "array"],
"items": {
"type": "string"
}
},
"mailings": {
"type": ["null", "array"],
"items": {
"type": "integer"
}
},
"sequence": {
"type": ["null", "array"],
"items": {
"type": "integer"
}
},
"sequenceTemplates": {
"type": ["null", "array"],
"items": {
"type": "integer"
}
},
"taskPriority": {
"type": ["null", "array"],
"items": {
"type": "integer"
}
},
"tasks": {
"type": ["null", "array"],
"items": {
"type": "integer"
}
},
"updater": {
"type": ["null", "array"],
"items": {
"type": "integer"
}
}
}
}

View File

@@ -20,7 +20,6 @@ _URL_BASE = "https://api.outreach.io/api/v2/"
# Basic full refresh stream
class OutreachStream(HttpStream, ABC):
url_base = _URL_BASE
primary_key = "id"
page_size = 1000
@@ -121,7 +120,7 @@ class Sequences(IncrementalOutreachStream):
class SequenceStates(IncrementalOutreachStream):
"""
Sequence stream. Yields data from the GET /sequences endpoint.
Sequence stream. Yields data from the GET /sequenceStates endpoint.
See https://api.outreach.io/api/v2/docs#sequenceState
"""
@@ -129,9 +128,19 @@ class SequenceStates(IncrementalOutreachStream):
return "sequenceStates"
class SequenceSteps(IncrementalOutreachStream):
"""
Sequence stream. Yields data from the GET /sequenceSteps endpoint.
See https://api.outreach.io/api/v2/docs#sequenceStep
"""
def path(self, **kwargs) -> str:
return "sequenceStates"
class Accounts(IncrementalOutreachStream):
"""
Sequence stream. Yields data from the GET /sequences endpoint.
Sequence stream. Yields data from the GET /accounts endpoint.
See https://api.outreach.io/api/v2/docs#account
"""
@@ -141,7 +150,7 @@ class Accounts(IncrementalOutreachStream):
class Opportunities(IncrementalOutreachStream):
"""
Sequence stream. Yields data from the GET /sequences endpoint.
Sequence stream. Yields data from the GET /opportunities endpoint.
See https://api.outreach.io/api/v2/docs#opportunity
"""
@@ -151,7 +160,7 @@ class Opportunities(IncrementalOutreachStream):
class Personas(IncrementalOutreachStream):
"""
Sequence stream. Yields data from the GET /sequences endpoint.
Sequence stream. Yields data from the GET /personas endpoint.
See https://api.outreach.io/api/v2/docs#persona
"""
@@ -161,7 +170,7 @@ class Personas(IncrementalOutreachStream):
class Mailings(IncrementalOutreachStream):
"""
Sequence stream. Yields data from the GET /sequences endpoint.
Sequence stream. Yields data from the GET /mailings endpoint.
See https://api.outreach.io/api/v2/docs#mailing
"""
@@ -171,7 +180,7 @@ class Mailings(IncrementalOutreachStream):
class Mailboxes(IncrementalOutreachStream):
"""
Sequence stream. Yields data from the GET /sequences endpoint.
Sequence stream. Yields data from the GET /mailboxes endpoint.
See https://api.outreach.io/api/v2/docs#mailbox
"""
@@ -181,7 +190,7 @@ class Mailboxes(IncrementalOutreachStream):
class Stages(IncrementalOutreachStream):
"""
Sequence stream. Yields data from the GET /sequences endpoint.
Sequence stream. Yields data from the GET /stages endpoint.
See https://api.outreach.io/api/v2/docs#stage
"""
@@ -191,7 +200,7 @@ class Stages(IncrementalOutreachStream):
class Calls(IncrementalOutreachStream):
"""
Sequence stream. Yields data from the GET /sequences endpoint.
Sequence stream. Yields data from the GET /calls endpoint.
See https://api.outreach.io/api/v2/docs#call
"""
@@ -239,6 +248,7 @@ class SourceOutreach(AbstractSource):
Prospects(authenticator=auth, **config),
Sequences(authenticator=auth, **config),
SequenceStates(authenticator=auth, **config),
SequenceSteps(authenticator=auth, **config),
Accounts(authenticator=auth, **config),
Opportunities(authenticator=auth, **config),
Personas(authenticator=auth, **config),

View File

@@ -11,5 +11,5 @@ def test_streams(mocker):
source = SourceOutreach()
config_mock = MagicMock()
streams = source.streams(config_mock)
expected_streams_number = 10
expected_streams_number = 11
assert len(streams) == expected_streams_number

View File

@@ -10,45 +10,48 @@ Some output streams are available from this source. A list of these streams can
### Features
| Feature | Supported? |
| :--- | :--- |
| Full Refresh Sync | Yes |
| Incremental Sync | Yes |
| SSL connection | Yes |
| Namespaces | No |
| Feature | Supported? |
| :---------------- | :--------- |
| Full Refresh Sync | Yes |
| Incremental Sync | Yes |
| SSL connection | Yes |
| Namespaces | No |
## Getting started
### Requirements
* Outreach Account
* Outreach OAuth credentials
- Outreach Account
- Outreach OAuth credentials
### Setup guide
Getting oauth credentials require contacting Outreach to request an account. Check out [here](https://www.outreach.io/lp/watch-demo#request-demo).
Once you have an API application, you can follow the steps [here](https://api.outreach.io/api/v2/docs#authentication) to obtain a refresh token.
## Streams
List of available streams:
* Prospects
* Sequences
* SequenceStates
* Calls
* Mailings
* Accounts
* Opportunities
* Personas
* Mailboxes
* Stages
- Prospects
- Sequences
- SequenceStates
- SequenceSteps
- Calls
- Mailings
- Accounts
- Opportunities
- Personas
- Mailboxes
- Stages
## Changelog
| Version | Date | Pull Request | Subject |
| Version | Date | Pull Request | Subject |
| :------ | :-------- | :----- | :------ |
| 0.2.0 | 2022-10-27 | [17385](https://github.com/airbytehq/airbyte/pull/17385) | Add new streams + page size variable + relationship data |
| 0.1.2 | 2022-07-04 | [14386](https://github.com/airbytehq/airbyte/pull/14386) | Fix stream schema and cursor field |
| 0.1.1 | 2021-12-07 | [8582](https://github.com/airbytehq/airbyte/pull/8582) | Update connector fields title/description |
| 0.1.0 | 2021-11-03 | [7507](https://github.com/airbytehq/airbyte/pull/7507) | Outreach Connector |
| :------ | :-------- | :----- | :------ |
| 0.3.0 | 2023-05-17 | [26211](https://github.com/airbytehq/airbyte/pull/26211) | Add SequenceStates Stream
| 0.2.0 | 2022-10-27 | [17385](https://github.com/airbytehq/airbyte/pull/17385) | Add new streams + page size variable + relationship data |
| 0.1.2 | 2022-07-04 | [14386](https://github.com/airbytehq/airbyte/pull/14386) | Fix stream schema and cursor field |
| 0.1.1 | 2021-12-07 | [8582](https://github.com/airbytehq/airbyte/pull/8582) | Update connector fields title/description |
| 0.1.0 | 2021-11-03 | [7507](https://github.com/airbytehq/airbyte/pull/7507) | Outreach Connector |