From 1e79e92ae417ed198fc601ee5e0d9bd977d4152d Mon Sep 17 00:00:00 2001 From: Anton Karpets Date: Thu, 9 May 2024 15:08:21 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9BSource=20Amazon=20Seller=20Partner:?= =?UTF-8?q?=20hide=20OSS-only=20streams=20in=20report=20options=20config?= =?UTF-8?q?=20(#38078)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acceptance-test-config.yml | 10 +- .../integration_tests/spec_oss.json | 260 ++++++++++++++++++ .../metadata.yaml | 2 +- .../pyproject.toml | 2 +- .../source_amazon_seller_partner/source.py | 27 +- .../source_amazon_seller_partner/spec.json | 8 - .../unit_tests/test_source.py | 27 +- .../sources/amazon-seller-partner.md | 23 +- 8 files changed, 325 insertions(+), 34 deletions(-) create mode 100644 airbyte-integrations/connectors/source-amazon-seller-partner/integration_tests/spec_oss.json diff --git a/airbyte-integrations/connectors/source-amazon-seller-partner/acceptance-test-config.yml b/airbyte-integrations/connectors/source-amazon-seller-partner/acceptance-test-config.yml index 4aea83c726f6..bf32c89071e2 100644 --- a/airbyte-integrations/connectors/source-amazon-seller-partner/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-amazon-seller-partner/acceptance-test-config.yml @@ -4,8 +4,8 @@ acceptance_tests: spec: tests: - spec_path: "source_amazon_seller_partner/spec.json" - backward_compatibility_tests_config: - disable_for_version: "2.0.1" + deployment_mode: "cloud" + - spec_path: "integration_tests/spec_oss.json" connection: tests: - config_path: "secrets/config.json" @@ -16,11 +16,7 @@ acceptance_tests: timeout_seconds: 60 discovery: tests: - - config_path: - "secrets/config.json" - # refactored `spec`, but `app_id` is required for `1.2.0` - backward_compatibility_tests_config: - disable_for_version: "1.2.0" + - config_path: "secrets/config.json" basic_read: tests: - config_path: "secrets/config.json" diff --git a/airbyte-integrations/connectors/source-amazon-seller-partner/integration_tests/spec_oss.json b/airbyte-integrations/connectors/source-amazon-seller-partner/integration_tests/spec_oss.json new file mode 100644 index 000000000000..7881ec5c2b2f --- /dev/null +++ b/airbyte-integrations/connectors/source-amazon-seller-partner/integration_tests/spec_oss.json @@ -0,0 +1,260 @@ +{ + "documentationUrl": "https://docs.airbyte.com/integrations/sources/amazon-seller-partner", + "changelogUrl": "https://docs.airbyte.com/integrations/sources/amazon-seller-partner", + "connectionSpecification": { + "title": "Amazon Seller Partner Spec", + "type": "object", + "required": [ + "aws_environment", + "region", + "account_type", + "lwa_app_id", + "lwa_client_secret", + "refresh_token" + ], + "additionalProperties": true, + "properties": { + "auth_type": { + "title": "Auth Type", + "const": "oauth2.0", + "order": 0, + "type": "string" + }, + "aws_environment": { + "title": "AWS Environment", + "description": "Select the AWS Environment.", + "enum": ["PRODUCTION", "SANDBOX"], + "default": "PRODUCTION", + "type": "string", + "order": 1 + }, + "region": { + "title": "AWS Region", + "description": "Select the AWS Region.", + "enum": [ + "AE", + "AU", + "BE", + "BR", + "CA", + "DE", + "EG", + "ES", + "FR", + "GB", + "IN", + "IT", + "JP", + "MX", + "NL", + "PL", + "SA", + "SE", + "SG", + "TR", + "UK", + "US" + ], + "default": "US", + "type": "string", + "order": 2 + }, + "account_type": { + "title": "AWS Seller Partner Account Type", + "description": "Type of the Account you're going to authorize the Airbyte application by", + "enum": ["Seller", "Vendor"], + "default": "Seller", + "type": "string", + "order": 3 + }, + "lwa_app_id": { + "title": "LWA Client Id", + "description": "Your Login with Amazon Client ID.", + "order": 4, + "airbyte_secret": true, + "type": "string" + }, + "lwa_client_secret": { + "title": "LWA Client Secret", + "description": "Your Login with Amazon Client Secret.", + "airbyte_secret": true, + "order": 5, + "type": "string" + }, + "refresh_token": { + "title": "Refresh Token", + "description": "The Refresh Token obtained via OAuth flow authorization.", + "airbyte_secret": true, + "order": 6, + "type": "string" + }, + "replication_start_date": { + "title": "Start Date", + "description": "UTC date and time in the format 2017-01-25T00:00:00Z. Any data before this date will not be replicated. If start date is not provided, the date 2 years ago from today will be used.", + "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": 7, + "type": "string", + "format": "date-time" + }, + "replication_end_date": { + "title": "End Date", + "description": "UTC date and time in the format 2017-01-25T00:00:00Z. Any data after this date will not be replicated.", + "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": 8, + "type": "string", + "format": "date-time" + }, + "period_in_days": { + "title": "Period In Days", + "type": "integer", + "description": "For syncs spanning a large date range, this option is used to request data in a smaller fixed window to improve sync reliability. This time window can be configured granularly by day.", + "default": 90, + "minimum": 1, + "order": 9 + }, + "report_options_list": { + "title": "Report Options", + "description": "Additional information passed to reports. This varies by report type.", + "order": 10, + "type": "array", + "items": { + "type": "object", + "title": "Report Options", + "required": ["stream_name", "options_list"], + "properties": { + "stream_name": { + "title": "Stream Name", + "type": "string", + "order": 0, + "enum": [ + "GET_AFN_INVENTORY_DATA", + "GET_AFN_INVENTORY_DATA_BY_COUNTRY", + "GET_AMAZON_FULFILLED_SHIPMENTS_DATA_GENERAL", + "GET_FBA_ESTIMATED_FBA_FEES_TXT_DATA", + "GET_FBA_FULFILLMENT_CUSTOMER_RETURNS_DATA", + "GET_FBA_FULFILLMENT_CUSTOMER_SHIPMENT_PROMOTION_DATA", + "GET_FBA_FULFILLMENT_CUSTOMER_SHIPMENT_REPLACEMENT_DATA", + "GET_FBA_FULFILLMENT_REMOVAL_ORDER_DETAIL_DATA", + "GET_FBA_FULFILLMENT_REMOVAL_SHIPMENT_DETAIL_DATA", + "GET_FBA_INVENTORY_PLANNING_DATA", + "GET_FBA_MYI_UNSUPPRESSED_INVENTORY_DATA", + "GET_FBA_REIMBURSEMENTS_DATA", + "GET_FBA_SNS_FORECAST_DATA", + "GET_FBA_SNS_PERFORMANCE_DATA", + "GET_FBA_STORAGE_FEE_CHARGES_DATA", + "GET_FLAT_FILE_ACTIONABLE_ORDER_DATA_SHIPPING", + "GET_FLAT_FILE_ALL_ORDERS_DATA_BY_LAST_UPDATE_GENERAL", + "GET_FLAT_FILE_ALL_ORDERS_DATA_BY_ORDER_DATE_GENERAL", + "GET_FLAT_FILE_ARCHIVED_ORDERS_DATA_BY_ORDER_DATE", + "GET_FLAT_FILE_OPEN_LISTINGS_DATA", + "GET_FLAT_FILE_RETURNS_DATA_BY_RETURN_DATE", + "GET_LEDGER_DETAIL_VIEW_DATA", + "GET_LEDGER_SUMMARY_VIEW_DATA", + "GET_MERCHANT_CANCELLED_LISTINGS_DATA", + "GET_MERCHANT_LISTINGS_ALL_DATA", + "GET_MERCHANT_LISTINGS_DATA", + "GET_MERCHANT_LISTINGS_DATA_BACK_COMPAT", + "GET_MERCHANT_LISTINGS_INACTIVE_DATA", + "GET_MERCHANTS_LISTINGS_FYP_REPORT", + "GET_ORDER_REPORT_DATA_SHIPPING", + "GET_RESTOCK_INVENTORY_RECOMMENDATIONS_REPORT", + "GET_SELLER_FEEDBACK_DATA", + "GET_STRANDED_INVENTORY_UI_DATA", + "GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILE", + "GET_XML_ALL_ORDERS_DATA_BY_ORDER_DATE_GENERAL", + "GET_XML_BROWSE_TREE_DATA", + "GET_BRAND_ANALYTICS_MARKET_BASKET_REPORT", + "GET_BRAND_ANALYTICS_SEARCH_TERMS_REPORT", + "GET_BRAND_ANALYTICS_REPEAT_PURCHASE_REPORT", + "GET_SALES_AND_TRAFFIC_REPORT", + "GET_VENDOR_SALES_REPORT", + "GET_VENDOR_INVENTORY_REPORT", + "GET_VENDOR_NET_PURE_PRODUCT_MARGIN_REPORT", + "GET_VENDOR_TRAFFIC_REPORT" + ] + }, + "options_list": { + "title": "List of options", + "description": "List of options", + "type": "array", + "items": { + "type": "object", + "required": ["option_name", "option_value"], + "properties": { + "option_name": { + "title": "Name", + "type": "string", + "order": 0 + }, + "option_value": { + "title": "Value", + "type": "string", + "order": 1 + } + } + } + } + } + } + } + } + }, + "advanced_auth": { + "auth_flow_type": "oauth2.0", + "predicate_key": ["auth_type"], + "predicate_value": "oauth2.0", + "oauth_config_specification": { + "oauth_user_input_from_connector_config_specification": { + "type": "object", + "properties": { + "region": { + "type": "string", + "path_in_connector_config": ["region"] + }, + "account_type": { + "type": "string", + "path_in_connector_config": ["account_type"] + } + } + }, + "complete_oauth_output_specification": { + "type": "object", + "additionalProperties": false, + "properties": { + "refresh_token": { + "type": "string", + "path_in_connector_config": ["refresh_token"] + } + } + }, + "complete_oauth_server_input_specification": { + "type": "object", + "additionalProperties": false, + "properties": { + "lwa_app_id": { + "type": "string" + }, + "lwa_client_secret": { + "type": "string" + } + } + }, + "complete_oauth_server_output_specification": { + "type": "object", + "additionalProperties": false, + "properties": { + "lwa_app_id": { + "type": "string", + "path_in_connector_config": ["lwa_app_id"] + }, + "lwa_client_secret": { + "type": "string", + "path_in_connector_config": ["lwa_client_secret"] + } + } + } + } + } +} diff --git a/airbyte-integrations/connectors/source-amazon-seller-partner/metadata.yaml b/airbyte-integrations/connectors/source-amazon-seller-partner/metadata.yaml index e33a7a30334f..34d7a91bafd4 100644 --- a/airbyte-integrations/connectors/source-amazon-seller-partner/metadata.yaml +++ b/airbyte-integrations/connectors/source-amazon-seller-partner/metadata.yaml @@ -15,7 +15,7 @@ data: connectorSubtype: api connectorType: source definitionId: e55879a8-0ef8-4557-abcf-ab34c53ec460 - dockerImageTag: 4.2.2 + dockerImageTag: 4.2.3 dockerRepository: airbyte/source-amazon-seller-partner documentationUrl: https://docs.airbyte.com/integrations/sources/amazon-seller-partner githubIssueLabel: source-amazon-seller-partner diff --git a/airbyte-integrations/connectors/source-amazon-seller-partner/pyproject.toml b/airbyte-integrations/connectors/source-amazon-seller-partner/pyproject.toml index 3432dd0deeed..081213e4e8fd 100644 --- a/airbyte-integrations/connectors/source-amazon-seller-partner/pyproject.toml +++ b/airbyte-integrations/connectors/source-amazon-seller-partner/pyproject.toml @@ -3,7 +3,7 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "4.2.2" +version = "4.2.3" name = "source-amazon-seller-partner" description = "Source implementation for Amazon Seller Partner." authors = ["Airbyte "] diff --git a/airbyte-integrations/connectors/source-amazon-seller-partner/source_amazon_seller_partner/source.py b/airbyte-integrations/connectors/source-amazon-seller-partner/source_amazon_seller_partner/source.py index 71a866be6dc7..7e539b83d9fd 100644 --- a/airbyte-integrations/connectors/source-amazon-seller-partner/source_amazon_seller_partner/source.py +++ b/airbyte-integrations/connectors/source-amazon-seller-partner/source_amazon_seller_partner/source.py @@ -2,8 +2,7 @@ # Copyright (c) 2023 Airbyte, Inc., all rights reserved. # - -from os import getenv +from logging import Logger from typing import Any, List, Mapping, Optional, Tuple import pendulum @@ -11,7 +10,8 @@ from airbyte_cdk.models import SyncMode from airbyte_cdk.sources import AbstractSource from airbyte_cdk.sources.streams import Stream -from airbyte_cdk.utils import AirbyteTracedException +from airbyte_cdk.utils import AirbyteTracedException, is_cloud_environment +from airbyte_protocol.models import ConnectorSpecification from requests import HTTPError from source_amazon_seller_partner.auth import AWSAuthenticator from source_amazon_seller_partner.constants import get_marketplaces @@ -190,7 +190,7 @@ def streams(self, config: Mapping[str, Any]) -> List[Stream]: ] # TODO: Remove after Brand Analytics will be enabled in CLOUD: https://github.com/airbytehq/airbyte/issues/32353 - if getenv("DEPLOYMENT_MODE", "").upper() != "CLOUD": + if not is_cloud_environment(): brand_analytics_reports = [ BrandAnalyticsMarketBasketReports, BrandAnalyticsSearchTermsReports, @@ -208,6 +208,25 @@ def streams(self, config: Mapping[str, Any]) -> List[Stream]: streams.append(stream(**stream_kwargs, report_options=self.get_stream_report_options_list(stream.name, config))) return streams + def spec(self, logger: Logger) -> ConnectorSpecification: + spec = super().spec(logger) + if not is_cloud_environment(): + oss_only_streams = [ + "GET_BRAND_ANALYTICS_MARKET_BASKET_REPORT", + "GET_BRAND_ANALYTICS_SEARCH_TERMS_REPORT", + "GET_BRAND_ANALYTICS_REPEAT_PURCHASE_REPORT", + "GET_SALES_AND_TRAFFIC_REPORT", + "GET_VENDOR_SALES_REPORT", + "GET_VENDOR_INVENTORY_REPORT", + "GET_VENDOR_NET_PURE_PRODUCT_MARGIN_REPORT", + "GET_VENDOR_TRAFFIC_REPORT", + ] + spec.connectionSpecification["properties"]["report_options_list"]["items"]["properties"]["stream_name"]["enum"].extend( + oss_only_streams + ) + + return spec + @staticmethod def validate_replication_dates(config: Mapping[str, Any]) -> None: if ( diff --git a/airbyte-integrations/connectors/source-amazon-seller-partner/source_amazon_seller_partner/spec.json b/airbyte-integrations/connectors/source-amazon-seller-partner/source_amazon_seller_partner/spec.json index 9f84b550d8e7..8fec987e8859 100644 --- a/airbyte-integrations/connectors/source-amazon-seller-partner/source_amazon_seller_partner/spec.json +++ b/airbyte-integrations/connectors/source-amazon-seller-partner/source_amazon_seller_partner/spec.json @@ -132,9 +132,6 @@ "GET_AFN_INVENTORY_DATA", "GET_AFN_INVENTORY_DATA_BY_COUNTRY", "GET_AMAZON_FULFILLED_SHIPMENTS_DATA_GENERAL", - "GET_BRAND_ANALYTICS_MARKET_BASKET_REPORT", - "GET_BRAND_ANALYTICS_REPEAT_PURCHASE_REPORT", - "GET_BRAND_ANALYTICS_SEARCH_TERMS_REPORT", "GET_FBA_ESTIMATED_FBA_FEES_TXT_DATA", "GET_FBA_FULFILLMENT_CUSTOMER_RETURNS_DATA", "GET_FBA_FULFILLMENT_CUSTOMER_SHIPMENT_PROMOTION_DATA", @@ -163,14 +160,9 @@ "GET_MERCHANTS_LISTINGS_FYP_REPORT", "GET_ORDER_REPORT_DATA_SHIPPING", "GET_RESTOCK_INVENTORY_RECOMMENDATIONS_REPORT", - "GET_SALES_AND_TRAFFIC_REPORT", "GET_SELLER_FEEDBACK_DATA", "GET_STRANDED_INVENTORY_UI_DATA", "GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILE", - "GET_VENDOR_INVENTORY_REPORT", - "GET_VENDOR_NET_PURE_PRODUCT_MARGIN_REPORT", - "GET_VENDOR_TRAFFIC_REPORT", - "GET_VENDOR_SALES_REPORT", "GET_XML_ALL_ORDERS_DATA_BY_ORDER_DATE_GENERAL", "GET_XML_BROWSE_TREE_DATA" ] diff --git a/airbyte-integrations/connectors/source-amazon-seller-partner/unit_tests/test_source.py b/airbyte-integrations/connectors/source-amazon-seller-partner/unit_tests/test_source.py index c9f86dc90d29..8ecc45612155 100644 --- a/airbyte-integrations/connectors/source-amazon-seller-partner/unit_tests/test_source.py +++ b/airbyte-integrations/connectors/source-amazon-seller-partner/unit_tests/test_source.py @@ -155,9 +155,11 @@ def test_streams(connector_config_without_start_date): assert isinstance(stream, Stream) -def test_streams_connector_config_without_start_date(connector_config_without_start_date): - for stream in SourceAmazonSellerPartner().streams(connector_config_without_start_date): - assert isinstance(stream, Stream) +@pytest.mark.parametrize(("deployment_mode", "expected_streams_count"), (("cloud", 44), ("oss", 53))) +def test_streams_count(deployment_mode, expected_streams_count, connector_config_without_start_date, monkeypatch): + monkeypatch.setenv("DEPLOYMENT_MODE", deployment_mode) + streams = SourceAmazonSellerPartner().streams(connector_config_without_start_date) + assert len(streams) == expected_streams_count @pytest.mark.parametrize( @@ -177,3 +179,22 @@ def test_replication_dates_validation(config, should_raise): assert e.value.message == "End Date should be greater than or equal to Start Date" else: assert SourceAmazonSellerPartner().validate_replication_dates(config) is None + + +@pytest.mark.parametrize(("deployment_mode", "common_streams_count"), (("cloud", 0), ("oss", 8))) +def test_spec(deployment_mode, common_streams_count, monkeypatch): + monkeypatch.setenv("DEPLOYMENT_MODE", deployment_mode) + oss_only_streams = { + "GET_BRAND_ANALYTICS_MARKET_BASKET_REPORT", + "GET_BRAND_ANALYTICS_SEARCH_TERMS_REPORT", + "GET_BRAND_ANALYTICS_REPEAT_PURCHASE_REPORT", + "GET_SALES_AND_TRAFFIC_REPORT", + "GET_VENDOR_SALES_REPORT", + "GET_VENDOR_INVENTORY_REPORT", + "GET_VENDOR_NET_PURE_PRODUCT_MARGIN_REPORT", + "GET_VENDOR_TRAFFIC_REPORT", + } + streams_with_report_options = SourceAmazonSellerPartner().spec( + logger + ).connectionSpecification["properties"]["report_options_list"]["items"]["properties"]["stream_name"]["enum"] + assert len(set(streams_with_report_options).intersection(oss_only_streams)) == common_streams_count diff --git a/docs/integrations/sources/amazon-seller-partner.md b/docs/integrations/sources/amazon-seller-partner.md index c91578530c06..41c7c4f17721 100644 --- a/docs/integrations/sources/amazon-seller-partner.md +++ b/docs/integrations/sources/amazon-seller-partner.md @@ -91,7 +91,6 @@ The Amazon Seller Partner source connector supports the following [sync modes](h - [Active Listings Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-inventory) \(incremental\) - [All Listings Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-inventory) \(incremental\) -- [Amazon Search Terms Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#brand-analytics-reports) \(only available in OSS, incremental\) - [Browse Tree Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-browse-tree) \(incremental\) - [Canceled Listings Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-inventory) \(incremental\) - [FBA Amazon Fulfilled Inventory Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-fba#fba-inventory-reports) \(incremental\) @@ -120,27 +119,30 @@ The Amazon Seller Partner source connector supports the following [sync modes](h - [Inventory Ledger Report - Detailed View](https://developer-docs.amazon.com/sp-api/docs/report-type-values-fba#fba-inventory-reports) \(incremental\) - [Inventory Ledger Report - Summary View](https://developer-docs.amazon.com/sp-api/docs/report-type-values-fba#fba-inventory-reports) \(incremental\) - [Inventory Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-inventory) \(incremental\) -- [Market Basket Analysis Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#brand-analytics-reports) \(only available in OSS, incremental\) -- [Net Pure Product Margin Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#vendor-retail-analytics-reports) \(incremental\) - [Open Listings Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-inventory) \(incremental\) - [Orders](https://developer-docs.amazon.com/sp-api/docs/orders-api-v0-reference) \(incremental\) - [Order Items](https://developer-docs.amazon.com/sp-api/docs/orders-api-v0-reference#getorderitems) \(incremental\) -- [Rapid Retail Analytics Inventory Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#vendor-retail-analytics-reports) \(incremental\) -- [Repeat Purchase](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#brand-analytics-reports) \(only available in OSS, incremental\) - [Restock Inventory Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-fba#fba-inventory-reports) \(incremental\) -- [Sales and Traffic Business Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#seller-retail-analytics-reports) \(incremental\) - [Scheduled XML Order Report (Shipping)](https://developer-docs.amazon.com/sp-api/docs/report-type-values-order#order-reports) \(incremental\) - [Subscribe and Save Forecast Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-fba#fba-subscribe-and-save-reports) \(incremental\) - [Subscribe and Save Performance Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-fba#fba-subscribe-and-save-reports) \(incremental\) - [Suppressed Listings Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-inventory) \(incremental\) - [Unshipped Orders Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-order#order-reports) \(incremental\) - [Vendor Direct Fulfillment Shipping](https://developer-docs.amazon.com/sp-api/docs/vendor-direct-fulfillment-shipping-api-v1-reference) \(incremental\) -- [Vendor Inventory Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#vendor-retail-analytics-reports) \(incremental\) - [Vendor Forecasting Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#vendor-retail-analytics-reports) \(full-refresh\) - [Vendor Orders](https://developer-docs.amazon.com/sp-api/docs/vendor-orders-api-v1-reference#get-vendorordersv1purchaseorders) \(incremental\) -- [Vendor Sales Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#vendor-retail-analytics-reports) \(incremental\) -- [Vendor Traffic Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#vendor-retail-analytics-reports) \(incremental\) - [XML Orders By Order Date Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-order#order-tracking-reports) \(incremental\) + +- [Amazon Search Terms Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#brand-analytics-reports) \(only available in OSS, incremental\) +- [Market Basket Analysis Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#brand-analytics-reports) \(only available in OSS, incremental\) +- [Net Pure Product Margin Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#vendor-retail-analytics-reports) \(only available in OSS, incremental\) +- [Rapid Retail Analytics Inventory Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#vendor-retail-analytics-reports) \(only available in OSS, incremental\) +- [Repeat Purchase](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#brand-analytics-reports) \(only available in OSS, incremental\) +- [Sales and Traffic Business Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#seller-retail-analytics-reports) \(only available in OSS, incremental\) +- [Vendor Inventory Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#vendor-retail-analytics-reports) \(only available in OSS, incremental\) +- [Vendor Sales Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#vendor-retail-analytics-reports) \(only available in OSS, incremental\) +- [Vendor Traffic Report](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics#vendor-retail-analytics-reports) \(only available in OSS, incremental\) + ## Report options @@ -172,7 +174,8 @@ Information about rate limits you may find [here](https://developer-docs.amazon. ## Changelog | Version | Date | Pull Request | Subject | -| :------ | :--------- | :-------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +|:--------|:-----------|:----------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 4.2.3 | 2024-05-09 | [#38078](https://github.com/airbytehq/airbyte/pull/38078) | Hide OSS-only streams in report options config for cloud users | | 4.2.2 | 2024-04-24 | [#36630](https://github.com/airbytehq/airbyte/pull/36630) | Schema descriptions and CDK 0.80.0 | | 4.2.1 | 2024-04-08 | [#36895](https://github.com/airbytehq/airbyte/pull/36895) | Fix `reportPeriod` day query params | | 4.2.0 | 2024-03-19 | [#36267](https://github.com/airbytehq/airbyte/pull/36267) | Pin airbyte-cdk version to `^0` |