Skip to content

Conversation

@mvfc
Copy link

@mvfc mvfc commented Feb 4, 2026

What

This PR adds a new connector for source Criteo Marketing (source-criteo-marketing).

Contributor-provided connector description:

API documentation:

https://developers.criteo.com/marketing-solutions/reference/getadsetreport

The contributor provided the following description of the change:

Create Criteo Marketing connector, with ad_spend_daily stream supporting incremental and dedup.

Details

Expand for list of spec properties and streams

Configuration

Input Type Description Default Value
currency string Currency. Currency to be used on the report
end_date string EndDate. End date of the report
client_id string OAuth Client ID.
start_date string StartDate. Start date of the report
client_secret string OAuth Client Secret.

Streams

Stream Name Primary Key Pagination Supports Full Sync Supports Incremental
ad_spend_daily AdvertiserId.CampaignId.Day No pagination
adsets id No pagination

Reviewer checklist

  • Consider how the connector handles pagination (docs).
  • Help the contributor upload an icon that follows our icon design guidelines
  • Click into the CI workflows that wait for a maintainer to run them, which should trigger CI runs

@octavia-bot octavia-bot bot marked this pull request as draft February 4, 2026 07:43
@octavia-bot
Copy link
Contributor

octavia-bot bot commented Feb 4, 2026

Note

📝 PR Converted to Draft

More info...

Thank you for creating this PR. As a policy to protect our engineers' time, Airbyte requires all PRs to be created first in draft status. Your PR has been automatically converted to draft status in respect for this policy.

As soon as your PR is ready for formal review, you can proceed to convert the PR to "ready for review" status by clicking the "Ready for review" button at the bottom of the PR page.

To skip draft status in future PRs, please include [ready] in your PR title or add the skip-draft-status label when creating your PR.

@github-actions
Copy link
Contributor

github-actions bot commented Feb 4, 2026

👋 Welcome to Airbyte!

Thank you for your contribution from mvfc/airbyte! We're excited to have you in the Airbyte community.

If you have any questions, feel free to ask in the PR comments or join our Slack community.

💡 Show Tips and Tricks

PR Slash Commands

As needed or by request, Airbyte Maintainers can execute the following slash commands on your PR:

  • /format-fix - Fixes most formatting issues.
  • /bump-version - Bumps connector versions.
  • /run-connector-tests - Runs connector tests.
  • /run-cat-tests - Runs CAT tests.
  • /run-regression-tests - Runs regression tests for the modified connector(s).
  • /build-connector-images - Builds and publishes a pre-release docker image for the modified connector(s).
  • /publish-connectors-prerelease - Publishes pre-release connector builds (tagged as {version}-preview.{git-sha}) for all modified connectors in the PR.
  • /ai-review - AI-powered PR review for connector safety and quality gates.
  • /force-merge reason="<A_GOOD_REASON>" - Force merges the PR using admin privileges, bypassing CI checks. Requires a reason.

Tips for Working with CI

  1. Pre-Release Checks. Please pay attention to these, as they contain standard checks on the metadata.yaml file, docs requirements, etc. If you need help resolving a pre-release check, please ask a maintainer.
    • Note: If you are creating a new connector, please be sure to replace the default logo.svg file with a suitable icon.
  2. Connector CI Tests. Some failures here may be expected if your tests require credentials. Please review these results to ensure (1) unit tests are passing, if applicable, and (2) integration tests pass to the degree possible and expected.
  3. (Optional.) BYO Connector Credentials for tests in your fork. You can optionally set up your fork with BYO credentials for your connector. This can significantly speed up your review, ensuring your changes are fully tested before the maintainers begin their review.
📚 Show Repo Guidance

Helpful Resources

📝 Edit this welcome message.

@mvfc mvfc marked this pull request as ready for review February 4, 2026 08:01
@mvfc mvfc marked this pull request as draft February 4, 2026 08:28
@mvfc mvfc marked this pull request as ready for review February 4, 2026 11:12
@mvfc
Copy link
Author

mvfc commented Feb 4, 2026

image

Tested in our company's cloud instance. First refresh is a full refresh with overwrite, second and third are incremental + dedup.

Data matches what we see in Criteo's dashboard 1:1

@DanyloGL
Copy link
Collaborator

DanyloGL commented Feb 5, 2026

/ai-review

PR AI Review Started

Evaluating connector PR for safety and quality.
View workflow run
AI PR Review starting...

Reviewing PR for connector safety and quality.
View playbook

Devin AI session created successfully!

@DanyloGL DanyloGL moved this from New PRs to Waiting Eng Team in 🧑‍🏭 Community Pull Requests Feb 5, 2026
@devin-ai-integration
Copy link
Contributor

👋 AI PR Review in progress. I'm evaluating this connector PR against the quality gates. Will post a detailed report shortly.

Session: https://app.devin.ai/sessions/3f49d1dbcc894ca491d03b4ea5640b36

@devin-ai-integration
Copy link
Contributor

AI PR Review Report

Review Action: NO ACTION (NOT ELIGIBLE)

Gate Status
1. CI/Tests PASS
2. Security PASS
3. Safety PASS
4. Ops Risk PASS
5. Validation PASS
6. PR Quality PASS

📋 PR Details & Eligibility

Connector & PR Info

Connector(s): source-criteo-marketing
PR: #72827
HEAD SHA: 571df6eae7e423105f0ccbe1974f03c5bbdc0d07
Session: https://app.devin.ai/sessions/3f49d1dbcc894ca491d03b4ea5640b36

Auto-Approve Eligibility

Eligible: No
Category: not-eligible
Reason: This PR adds a new connector with functional code changes (manifest.yaml, metadata.yaml, acceptance-test-config.yml). New connectors require human review even when all gates pass.

Review Action Details

NO ACTION (NOT ELIGIBLE) - All gates pass but PR is not eligible for auto-approval. No PR review submitted. Human review required.

Note: This bot can approve PRs when all gates pass AND the PR is eligible for auto-approval (docs-only, additive spec changes, patch/minor dependency bumps, or comment/whitespace-only changes). PRs with other types of changes require human review even if all gates pass.

🔍 Gate Evaluation Details

Gate-by-Gate Analysis

Gate Status Enforced? Details
1. CI/Tests PASS Yes All core CI checks passed (Lint, Test [No Creds], Pre-Release Checks)
2. Security PASS Yes OAuth credentials properly marked as airbyte_secret: true; no hardcoded secrets
3. Safety/Reversibility PASS Yes New connector (v0.0.1) - no breaking changes possible
4. Operational Risk PASS Yes Rate limiting configured (250 calls/min), exponential backoff with max 5 retries
5. Pre-Release Validation PASS Yes New connector exempt; contributor provided testing evidence in PR comments
6. PR Quality PASS Yes Description present, documentation included, changelog present, custom icon provided

Detailed Analysis

Gate 1 - CI/Tests:

  • Lint source-criteo-marketing Connector: ✅ Passed
  • Test source-criteo-marketing Connector [No Creds]: ✅ Passed (expected for community contribution)
  • source-criteo-marketing Pre-Release Checks: ✅ Passed
  • Format Check: ✅ Passed
  • Check Changelog Updated: ✅ Passed
  • Coverage: Manifest-only connector - no Python source code requiring unit tests

Gate 2 - Security:

  • OAuth authentication uses standard OAuthAuthenticator pattern
  • client_id and client_secret marked with airbyte_secret: true
  • No hardcoded credentials, eval(), exec(), or dynamic code execution
  • No file system access or shell commands

Gate 3 - Safety/Reversibility:

  • New connector (version 0.0.1) - no existing users impacted
  • No breaking changes to existing functionality

Gate 4 - Operational Risk:

  • Rate limiting: FixedWindowCallRatePolicy with 250 calls/minute limit
  • Error handling: DefaultErrorHandler with max_retries: 5
  • Backoff: ExponentialBackoffStrategy with factor 5
  • Lookback window: P3D (3 days) for incremental sync

Gate 5 - Pre-Release Validation:

  • New connector exempt from pre-release validation requirement
  • Contributor provided testing evidence: "Tested in our company's cloud instance. First refresh is a full refresh with overwrite, second and third are incremental + dedup. Data matches what we see in Criteo's dashboard 1:1"

Gate 6 - PR Quality:

  • PR description: ✅ Present with detailed spec and stream information
  • Documentation: ✅ docs/integrations/sources/criteo-marketing.md included
  • Changelog: ✅ Present in documentation
  • Icon: ✅ Custom Criteo logo provided
📚 Evidence Consulted

Evidence

  • Changed files: 6 files (+317 lines, all new)
    • airbyte-integrations/connectors/source-criteo-marketing/README.md
    • airbyte-integrations/connectors/source-criteo-marketing/acceptance-test-config.yml
    • airbyte-integrations/connectors/source-criteo-marketing/icon.svg
    • airbyte-integrations/connectors/source-criteo-marketing/manifest.yaml
    • airbyte-integrations/connectors/source-criteo-marketing/metadata.yaml
    • docs/integrations/sources/criteo-marketing.md
  • CI checks: 24 passed, 6 skipped, 0 failed
  • PR labels: None
  • PR description: Present
  • Existing bot reviews: None

@DanyloGL
Copy link
Collaborator

DanyloGL commented Feb 5, 2026

/ai-prove-fix

AI Prove Fix Started

Running readiness checks and testing against customer connections.
View workflow run
🔍 AI Prove Fix session starting... Running readiness checks and testing against customer connections. View playbook

Devin AI session created successfully!

@devin-ai-integration
Copy link
Contributor

Fix Validation In Progress

👋 AI Prove Fix starting validation for source-criteo-marketing.

Session: https://app.devin.ai/sessions/7078d410f1a24b3497f1d2b703dcee13

Status

🔄 Analyzing PR and creating evidence plan...

I'm reviewing this new connector contribution to determine the appropriate validation approach. Since this is a new connector (not a fix to an existing one), I'll adapt the validation process accordingly.


This comment will be updated with the evidence plan and results.

@devin-ai-integration
Copy link
Contributor

Fix Validation Evidence

Outcome: Could not Run Tests (New Connector - Not Applicable)

Evidence Summary

This is a new connector contribution (source-criteo-marketing v0.0.1), not a fix to an existing connector. The /ai-prove-fix workflow is designed to validate fixes against real production connections, but since this connector doesn't exist in production yet, there are no connections to test against.

Validation Status:

  • AI Review: All 6 gates PASSED
  • Contributor Testing: Provided evidence of testing in their company's cloud instance with successful incremental syncs
  • Pre-flight Checks: All passed (see details below)
Next Steps

Since this is a new connector contribution (not a fix), the standard validation path is:

  1. AI Review - Completed, all gates passed
  2. Contributor Testing Evidence - Provided in PR comments
  3. Maintainer Review - Required for final approval

Recommended actions:

  • A maintainer should review the connector implementation
  • Consider running /run-connector-tests with Airbyte credentials to validate integration tests
  • Once approved, the connector can be merged and will be available in the registry

Connector & PR Details

Connector: source-criteo-marketing
PR: #72827
Version: 0.0.1 (new connector)
Type: Manifest-only (low-code declarative)
Session: https://app.devin.ai/sessions/7078d410f1a24b3497f1d2b703dcee13

Pre-flight Checks
  • Viability: Connector follows standard declarative manifest patterns

    • OAuth authentication with proper secret handling
    • Single stream (ad_spend_daily) with incremental sync support
    • DatetimeBasedCursor with 3-day lookback window
    • Proper primary key definition (AdvertiserId, CampaignId, Day)
  • Safety: No malicious code or dangerous patterns

    • OAuth credentials marked as airbyte_secret: true
    • No hardcoded secrets
    • No eval(), exec(), or dynamic code execution
    • No file system access or shell commands
    • Standard declarative manifest structure
  • Reversibility: N/A (new connector)

    • Version 0.0.1 - no existing users
    • Can be safely removed if needed
  • Operational Risk: Properly configured

    • Rate limiting: 250 calls/minute (FixedWindowCallRatePolicy)
    • Error handling: DefaultErrorHandler with max 5 retries
    • Backoff: ExponentialBackoffStrategy with factor 5
Why Live Testing Not Applicable

The /ai-prove-fix command is designed to:

  1. Find existing production connections using a connector
  2. Pin them to a pre-release version
  3. Run syncs to validate the fix works

For a new connector (v0.0.1):

  • No connections exist in production (connector not yet published)
  • No "fix" to validate - this is new functionality
  • The contributor has already provided testing evidence from their own environment

Alternative validation for new connectors:

  • AI Review gates (completed - all passed)
  • Contributor testing evidence (provided)
  • Maintainer code review (pending)
  • Integration tests with Airbyte credentials (can be triggered by maintainer)

mvfc added 3 commits February 6, 2026 14:50
Adding adsets stream
Adset stream now takes in batches instead of one at a time for more efficiency (set at 50 per batch)
@mvfc
Copy link
Author

mvfc commented Feb 6, 2026

added adsets stream

also tested on our own infra 100% matching what we see in criteo dashboard, time didn't increase at all

it uses batching with the adset ids we get from the original stream

refreshes all adsets without incremental as criteo doesn't offer a way of doing incremental with adsets

decoupling both streams to be more assertive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Waiting Eng Team

Development

Successfully merging this pull request may close these issues.

3 participants