Paypal Transaction
This page contains the setup guide and reference information for the Paypal Transaction source connector.
Prerequisites
The Paypal Transaction API is used to get the history of transactions for a PayPal account.
Setup guide
Step 1: Set up Paypal Transaction
In order to get an Client ID
and Secret
please go to this page and follow the instructions. After registration you may find your Client ID
and Secret
here.
Our Paypal Transactions Source Connector does not support OAuth at this time due to limitations outside of our control. If OAuth for Paypal Transactions is critical to your business, please reach out to us to discuss how we may be able to partner on this effort.
Step 2: Set up the Paypal Transaction connector in Airbyte
For Airbyte Cloud:
- Log into your Airbyte Cloud account.
- In the left navigation bar, click Sources. In the top-right corner, click +new source.
- On the Set up the source page, enter the name for the Paypal Transaction connector and select Paypal Transaction from the Source type dropdown.
- Enter your client id
- Enter your secret
- Choose if your account is sandbox
- Enter the date you want your sync to start from
- Click Set up source.
For Airbyte Open Source:
- Navigate to the Airbyte Open Source dashboard
- Set the name for your source
- Enter your client id
- Enter your secret
- Choose if your account is sandbox
- Enter the date you want your sync to start from
- Click Set up source
Supported sync modes
The PayPal Transaction source connector supports the following sync modes:
Feature | Supported? |
---|---|
Full Refresh Sync | Yes |
Incremental - Append Sync | Yes |
Namespaces | No |
Supported Streams
This Source is capable of syncing the following core Streams:
Performance considerations
Paypal transaction API has some limits
start_date_min
= 3 years, API call lists transaction for the previous three years.start_date_max
= 1.5 days, it takes a maximum of three hours for executed transactions to appear in the list transactions call. It is set to 1.5 days by default based on experience, otherwise API throw an error.stream_slice_period
= 1 day, the maximum supported date range is 31 days.records_per_request
= 10000, the maximum number of records in a single request.page_size
= 500, the maximum page size is 500.requests_per_minute
= 30, maximum limit is 50 requests per minute from IP address to all endpoint
Transactions sync is performed with default stream_slice_period
= 1 day, it means that there will be 1 request for each day between start_date and now or end_date. if start_date
is greater then start_date_max
. Balances sync is similarly performed with default stream_slice_period
= 1 day, but it will do additional request for the end_date of the sync now.
Data type map
Integration Type | Airbyte Type |
---|---|
string | string |
number | number |
array | array |
object | object |
Build instructions
Build your own connector image
This connector is built using our dynamic built process.
The base image used to build it is defined within the metadata.yaml file under the connectorBuildOptions
.
The build logic is defined using Dagger here.
It does not rely on a Dockerfile.
If you would like to patch our connector and build your own a simple approach would be:
- Create your own Dockerfile based on the latest version of the connector image.
FROM airbyte/source-paypal-transaction:latest
COPY . ./airbyte/integration_code
RUN pip install ./airbyte/integration_code
# The entrypoint and default env vars are already set in the base image
# ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py"
# ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]
Please use this as an example. This is not optimized.
- Build your image:
docker build -t airbyte/source-paypal-transaction:dev .
# Running the spec command against your patched connector
docker run airbyte/source-paypal-transaction:dev spec
Customizing our build process
When contributing on our connector you might need to customize the build process to add a system dependency or set an env var.
You can customize our build process by adding a build_customization.py
module to your connector.
This module should contain a pre_connector_install
and post_connector_install
async function that will mutate the base image and the connector container respectively.
It will be imported at runtime by our build process and the functions will be called if they exist.
Here is an example of a build_customization.py
module:
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
# Feel free to check the dagger documentation for more information on the Container object and its methods.
# https://dagger-io.readthedocs.io/en/sdk-python-v0.6.4/
from dagger import Container
async def pre_connector_install(base_image_container: Container) -> Container:
return await base_image_container.with_env_variable("MY_PRE_BUILD_ENV_VAR", "my_pre_build_env_var_value")
async def post_connector_install(connector_container: Container) -> Container:
return await connector_container.with_env_variable("MY_POST_BUILD_ENV_VAR", "my_post_build_env_var_value")
Changelog
Version | Date | Pull Request | Subject |
---|---|---|---|
2.1.1 | 2023-10-13 | 31377 | Use our base image and remove Dockerfile |
2.1.0 | 2023-08-14 | 29223 | Migrate Python CDK to Low Code schema |
2.0.0 | 2023-07-05 | 27916 | Update Balances schema |
1.0.0 | 2023-07-03 | 27968 | mark Client ID and Client Secret as required fields |
0.1.13 | 2023-02-20 | 22916 | Specified date formatting in specification |
0.1.12 | 2023-02-18 | 23211 | Fix error handler |
0.1.11 | 2023-01-27 | 22019 | Set AvailabilityStrategy for streams explicitly to None |
0.1.10 | 2022-09-04 | 17554 | Made the spec and source config to be consistent |
0.1.9 | 2022-08-18 | 15741 | Removed OAuth2.0 option |
0.1.8 | 2022-07-25 | 15000 | Added support of OAuth2.0 authentication, fixed bug when normalization couldn't handle nested cursor field and primary key |
0.1.7 | 2022-07-18 | 14804 | Added RESULTSET_TOO_LARGE error validation |
0.1.6 | 2022-06-10 | 13682 | Updated paypal transaction schema |
0.1.5 | 2022-04-27 | 12335 | Added fixtures to mock time.sleep for connectors that explicitly sleep |
0.1.4 | 2021-12-22 | 9034 | Updated connector fields title/description |
0.1.3 | 2021-12-16 | 8580 | Added more logs during check connection stage |
0.1.2 | 2021-11-08 | 7499 | Removed base-python dependencies |
0.1.1 | 2021-08-03 | 5155 | Fixed start_date_min limit |
0.1.0 | 2021-06-10 | 4240 | PayPal Transaction Search API |