Microsoft Advertising destination connector package for RETL State contracts.
Project description
RETL Microsoft Advertising Destination
condor-retl-bing-ads is the first-party Microsoft Advertising destination
connector package for RETL State contracts. It exposes retl/bing-ads through the
retl.destinations entry point group.
Surface
customer_listsaccepts targeted State Operations and sends Microsoft Advertising Campaign Management API v13ApplyCustomerListUserDatarequests to add or remove Customer Match users from Customer List audiences. It acceptsemail,phone_e164, andmobile_advertising_idIdentifiers and requires at least one of those accepted types.
The surface supports managed targets. When a State row emits a logical target
that is not mapped or already present in the runtime Target Registry, the
connector calls GetAudiencesByIds with Type=CustomerList and empty
AudienceIds to inspect account and customer scoped Customer List audiences.
For REST JSON the connector sends AudienceIds as null, because the live REST
endpoint accepts null or an omitted field but rejects an empty JSON array,
then creates a missing target through AddAudiences with Type=CustomerList.
Dry runs may perform the read-only lookup, but do not create audiences or write
Target Registry rows.
The surface uses custom microsoft_advertising auth with access_token and
developer_token credential fields. Request planning remains auth-free and
secret-free; runtime submission adds Authorization, DeveloperToken,
CustomerAccountId, and CustomerId headers after secret resolution.
Identifier Rendering
email and phone_e164 values are lowercased and SHA-256 hashed unless the
input is already a 64-character hexadecimal SHA-256 value, in which case it is
trimmed, preserved, and lowercased. mobile_advertising_id is trimmed and sent
unhashed. Microsoft accepts one CustomerListItemSubType per request, so RETL
partitions batches by target, operation, and identifier subtype.
Binding Config
Required config:
customer_account_id: the ad account id used in Microsoft Advertising request headers and as the default parent for account-scoped managed targets.customer_id: the manager customer id used in request headers and as the parent for customer-scoped managed targets.
Optional config:
api_versiondefaults tov13and is pinned to that value.target_scopedefaults toAccountand may be set toCustomerfor managed Customer List creation.membership_durationdefaults to-1; Microsoft allows1through390or-1for no expiration. Namespace-loaded public config may provide this as-1or"-1".accept_customer_match_termsdefaults toTrueand is sent asAcceptCustomerMatchTermon each membership upload. Namespace-loaded public config may provide this astrue,false,"true", or"false".transportmay be injected for offline tests. When omitted, non-dry-run submissions use the connector'srequeststransport.
The connector owns the production API origin
https://campaign.api.bingads.microsoft.com in package code. Tests use injected
transports to capture requests without changing that origin.
The namespace-loadable public config fields are customer_account_id,
customer_id, api_version, target_scope, membership_duration,
and accept_customer_match_terms.
destination = retl.destinations.load(
"retl/bing-ads",
binding_name="bing_ads_primary",
credential_namespace="destinations.bing_ads",
config_namespace="destinations.bing_ads",
)
The credential namespace creates
retl.secrets["destinations.bing_ads.access_token"] and
retl.secrets["destinations.bing_ads.developer_token"] without resolving those
secrets during binding construction.
Microsoft API References
Implementation decisions were checked against Microsoft Learn on 2026-05-13:
- Campaign Management API v13
ApplyCustomerListUserDataREST JSON: https://learn.microsoft.com/en-us/advertising/campaign-management-service/applycustomerlistuserdata?view=bingads-13 - Campaign Management API v13
CustomerListobject: https://learn.microsoft.com/en-us/advertising/campaign-management-service/customerlist?view=bingads-13 - Campaign Management API v13
AddAudiencesREST JSON: https://learn.microsoft.com/en-us/advertising/campaign-management-service/addaudiences?view=bingads-13 - Campaign Management API v13
GetAudiencesByIdsREST JSON: https://learn.microsoft.com/en-us/advertising/campaign-management-service/getaudiencesbyids?view=bingads-13
Proof Level
Default tests provide contract proof for connector metadata, namespace loading, config validation, Customer List request rendering, hashed identifier handling, managed target lookup/create, runtime Target Registry reuse, response classification, selected request-plan submission, and transport failure handling.
Sandbox
Live sandbox tests are opt-in and read credentials from
local/env/.env.bing_ads-sandbox when present:
make test-sandbox-bing-ads
The sandbox test creates a disposable managed Customer List audience through
AddAudiences, submits one synthetic email add and remove through
ApplyCustomerListUserData, and then deletes the disposable list through
DeleteAudiences. It does not require a pre-existing Customer List. The test
requires:
DESTINATIONS__BING_ADS__ACCESS_TOKEN, or bothDESTINATIONS__BING_ADS__CLIENT_IDandDESTINATIONS__BING_ADS__REFRESH_TOKENDESTINATIONS__BING_ADS__DEVELOPER_TOKENDESTINATIONS__BING_ADS__CUSTOMER_ACCOUNT_IDDESTINATIONS__BING_ADS__CUSTOMER_ID
Optional sandbox config:
DESTINATIONS__BING_ADS__API_VERSIONDESTINATIONS__BING_ADS__ACCEPT_CUSTOMER_MATCH_TERMS
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file condor_retl_bing_ads-0.1.0.tar.gz.
File metadata
- Download URL: condor_retl_bing_ads-0.1.0.tar.gz
- Upload date:
- Size: 21.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef0f03aa41c8739ca189e3b41ddfd7d5b2b04f825feadad375ea428a25169133
|
|
| MD5 |
a696bcd6674c9c92b9d2536cca0d751a
|
|
| BLAKE2b-256 |
dd8136eaba0751ec1ca10fa8719cc7cb6fdcf540fafb10549567c2291575a2e6
|
Provenance
The following attestation bundles were made for condor_retl_bing_ads-0.1.0.tar.gz:
Publisher:
publish.yml on condorgraph/condor-retl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
condor_retl_bing_ads-0.1.0.tar.gz -
Subject digest:
ef0f03aa41c8739ca189e3b41ddfd7d5b2b04f825feadad375ea428a25169133 - Sigstore transparency entry: 1565159859
- Sigstore integration time:
-
Permalink:
condorgraph/condor-retl@18e0a038f797cb3529b6a1d8662794d89958eddb -
Branch / Tag:
refs/heads/main - Owner: https://github.com/condorgraph
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@18e0a038f797cb3529b6a1d8662794d89958eddb -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file condor_retl_bing_ads-0.1.0-py3-none-any.whl.
File metadata
- Download URL: condor_retl_bing_ads-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52e905ffbf3960e2fb2d647e60cb103592a57818acc0c95c0225c1e8f2b44f3e
|
|
| MD5 |
039eb637c6c3493ebd36f8abb265969b
|
|
| BLAKE2b-256 |
c5c224f0c16edcd9e81ae097c1e3070e277308f8a8916b3d1454848018d6e726
|
Provenance
The following attestation bundles were made for condor_retl_bing_ads-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on condorgraph/condor-retl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
condor_retl_bing_ads-0.1.0-py3-none-any.whl -
Subject digest:
52e905ffbf3960e2fb2d647e60cb103592a57818acc0c95c0225c1e8f2b44f3e - Sigstore transparency entry: 1565159921
- Sigstore integration time:
-
Permalink:
condorgraph/condor-retl@18e0a038f797cb3529b6a1d8662794d89958eddb -
Branch / Tag:
refs/heads/main - Owner: https://github.com/condorgraph
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@18e0a038f797cb3529b6a1d8662794d89958eddb -
Trigger Event:
workflow_dispatch
-
Statement type: