zernio-sdk 1.4.332__tar.gz → 1.4.334__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/PKG-INFO +1 -1
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/openapi.yaml +158 -40
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/pyproject.toml +1 -1
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/__init__.py +1 -1
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/generated_tools.py +34 -21
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/models/_generated/models.py +1 -1
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/lead_gen.py +24 -4
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/uv.lock +1 -1
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.dockerignore +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.env.example +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.github/CODEOWNERS +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.github/workflows/generate.yml +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.github/workflows/release-preview.yml +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.github/workflows/release.yml +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.github/workflows/test.yml +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.gitignore +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/CHANGELOG.md +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/Dockerfile +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/Dockerfile.docker +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/LICENSE +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/README.md +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/claude-desktop-config.json +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/docs/HTTP_DEPLOYMENT.md +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/docs/MCP.md +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/01_basic_usage.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/02_schedule_from_csv.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/03_cross_posting.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/04_ai_content_generation.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/05_download_tools.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/data/sample_posts.csv +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/publish_post.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/railway.toml +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/generate_examples.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/generate_mcp_docs.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/generate_mcp_tools.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/generate_models.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/generate_readme_reference.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/generate_resources.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/smoketest_streamable_http.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/server.json +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/ai/__init__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/ai/content_generator.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/ai/protocols.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/ai/providers/__init__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/ai/providers/openai.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/client/__init__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/client/base.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/client/exceptions.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/client/late_client.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/client/rate_limiter.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/enums.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/__init__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/__main__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/auth.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/config.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/constants.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/http_server.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/server.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/tool_definitions.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/models/__init__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/models/_generated/__init__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/models/responses.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/pipelines/__init__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/pipelines/cross_poster.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/pipelines/csv_scheduler.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/__init__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/__init__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/account_groups.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/account_settings.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/accounts.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ad_accounts.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ad_audiences.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ad_campaigns.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ad_creatives.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ad_insights.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ad_targeting.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ads.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/analytics.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/api_keys.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/broadcasts.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/calls.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/comment_automations.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/comments.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/connect.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/contacts.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/conversions.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/custom_fields.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/discord.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_attributes.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_food_menus.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_location_details.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_media.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_place_actions.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_services.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_verifications.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/inbox.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/inbox_analytics.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/instagram.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/invites.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/logs.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/media.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/mentions.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/messages.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/messaging_ads.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/phone_numbers.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/posts.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/profiles.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/queue.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/reach_and_frequency.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/reddit.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/reviews.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/sequences.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/sms.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/tools.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/tracking_tags.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/twitter_engagement.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/usage.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/users.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/validate.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/verify.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/voice.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/webhooks.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp_calling.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp_flows.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp_phone_numbers.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp_sandbox.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp_templates.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/workflows.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/accounts.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/ads.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/analytics.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/base.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/media.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/posts.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/profiles.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/queue.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/tools.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/users.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/__init__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/config.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/direct.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/protocols.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/smart.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/utils.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/vercel/__init__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/vercel/client.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/vercel/uploader.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/zernio/__init__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/__init__.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/conftest.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/test_client.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/test_exhaustive.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/test_integration.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/test_patch_methods.py +0 -0
- {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/test_resolve_account.py +0 -0
|
@@ -28166,16 +28166,20 @@ paths:
|
|
|
28166
28166
|
type: array
|
|
28167
28167
|
description: >
|
|
28168
28168
|
Live inventory grouped by area code, largest stock
|
|
28169
|
-
first.
|
|
28170
|
-
|
|
28169
|
+
first. For US and CA this is the full country inventory
|
|
28170
|
+
(every area code with stock, named by state/province);
|
|
28171
|
+
other countries list the areas in the latest inventory
|
|
28172
|
+
page (up to 500 numbers, which for most countries is the
|
|
28173
|
+
entire pool). Empty when out of stock (or the area
|
|
28174
|
+
lookup failed). Pass a chosen `ndc` as `areaCode` on POST
|
|
28171
28175
|
/v1/phone-numbers/purchase (or on the KYC submit for
|
|
28172
28176
|
regulated countries) to require that area.
|
|
28173
28177
|
items:
|
|
28174
28178
|
type: object
|
|
28175
28179
|
properties:
|
|
28176
28180
|
ndc: { type: string, description: 'Area code (national destination code), e.g. "11".' }
|
|
28177
|
-
name: { type: string, description: '
|
|
28178
|
-
count: { type: integer, description:
|
|
28181
|
+
name: { type: string, description: 'Area name: state/province for US/CA (e.g. "Minnesota"), city otherwise (e.g. "Sao Paulo").' }
|
|
28182
|
+
count: { type: integer, description: 'Numbers available in this area: country-wide count for US/CA, numbers seen on the latest inventory page otherwise.' }
|
|
28179
28183
|
'400': { description: Country not offerable }
|
|
28180
28184
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
28181
28185
|
|
|
@@ -28532,16 +28536,20 @@ paths:
|
|
|
28532
28536
|
type: array
|
|
28533
28537
|
description: >
|
|
28534
28538
|
Live inventory grouped by area code, largest stock
|
|
28535
|
-
first.
|
|
28536
|
-
|
|
28539
|
+
first. For US and CA this is the full country inventory
|
|
28540
|
+
(every area code with stock, named by state/province);
|
|
28541
|
+
other countries list the areas in the latest inventory
|
|
28542
|
+
page (up to 500 numbers, which for most countries is the
|
|
28543
|
+
entire pool). Empty when out of stock (or the area
|
|
28544
|
+
lookup failed). Pass a chosen `ndc` as `areaCode` on POST
|
|
28537
28545
|
/v1/phone-numbers/purchase (or on the KYC submit for
|
|
28538
28546
|
regulated countries) to require that area.
|
|
28539
28547
|
items:
|
|
28540
28548
|
type: object
|
|
28541
28549
|
properties:
|
|
28542
28550
|
ndc: { type: string, description: 'Area code (national destination code), e.g. "11".' }
|
|
28543
|
-
name: { type: string, description: '
|
|
28544
|
-
count: { type: integer, description:
|
|
28551
|
+
name: { type: string, description: 'Area name: state/province for US/CA (e.g. "Minnesota"), city otherwise (e.g. "Sao Paulo").' }
|
|
28552
|
+
count: { type: integer, description: 'Numbers available in this area: country-wide count for US/CA, numbers seen on the latest inventory page otherwise.' }
|
|
28545
28553
|
'400': { description: Country not offerable }
|
|
28546
28554
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
28547
28555
|
|
|
@@ -37146,18 +37154,25 @@ paths:
|
|
|
37146
37154
|
get:
|
|
37147
37155
|
operationId: listLeads
|
|
37148
37156
|
tags: ["Lead Gen"]
|
|
37149
|
-
x-platforms: ["meta"]
|
|
37157
|
+
x-platforms: ["meta", "linkedin"]
|
|
37150
37158
|
summary: List submitted leads
|
|
37151
37159
|
description: >
|
|
37152
|
-
Returns
|
|
37153
|
-
keyset pagination on `cursor`.
|
|
37154
|
-
|
|
37160
|
+
Returns submitted Lead Gen leads for your team, newest-first, with
|
|
37161
|
+
keyset pagination on `cursor`. For Meta (default) leads are served from
|
|
37162
|
+
the persisted cache, ingested in real time from the `leadgen` webhook.
|
|
37163
|
+
When `accountId` is a LinkedIn ads account, leads are fetched live from
|
|
37164
|
+
LinkedIn's `leadFormResponses` (LinkedIn has no webhook and enforces
|
|
37165
|
+
90-day retention, so nothing is persisted) and `adAccountId` is required.
|
|
37166
|
+
Reading LinkedIn responses needs the `r_marketing_leadgen_automation`
|
|
37167
|
+
permission; accounts connected before it was added must reconnect.
|
|
37168
|
+
Requires the Ads add-on.
|
|
37155
37169
|
parameters:
|
|
37156
37170
|
- { name: formId, in: query, schema: { type: string }, description: Filter to a single lead form. }
|
|
37157
|
-
- { name: accountId, in: query, schema: { type: string }, description: Filter to a single connected account. }
|
|
37171
|
+
- { name: accountId, in: query, schema: { type: string }, description: Filter to a single connected account. LinkedIn ads accounts switch to the live fetch. }
|
|
37172
|
+
- { name: adAccountId, in: query, schema: { type: string }, description: "LinkedIn only: the LinkedIn ad account id whose responses to read (owner-scoped finder)." }
|
|
37158
37173
|
- { name: limit, in: query, schema: { type: integer, minimum: 1, maximum: 100, default: 25 } }
|
|
37159
|
-
- { name: since, in: query, schema: { type: integer }, description: Unix seconds; only leads created at/after this
|
|
37160
|
-
- { name: cursor, in: query, schema: { type: string }, description: Keyset cursor from a previous response's pagination.cursor. }
|
|
37174
|
+
- { name: since, in: query, schema: { type: integer }, description: Unix seconds; only leads created at/after this timestamp. }
|
|
37175
|
+
- { name: cursor, in: query, schema: { type: string }, description: "Keyset cursor from a previous response's pagination.cursor (Meta: AdLead id; LinkedIn: numeric start offset)." }
|
|
37161
37176
|
responses:
|
|
37162
37177
|
'200':
|
|
37163
37178
|
description: Lead list.
|
|
@@ -37196,11 +37211,16 @@ paths:
|
|
|
37196
37211
|
get:
|
|
37197
37212
|
operationId: listLeadForms
|
|
37198
37213
|
tags: ["Lead Gen"]
|
|
37199
|
-
x-platforms: ["meta"]
|
|
37214
|
+
x-platforms: ["meta", "linkedin"]
|
|
37200
37215
|
summary: List lead forms
|
|
37201
|
-
description:
|
|
37216
|
+
description: >
|
|
37217
|
+
Lists the Lead Gen forms owned by the account. Meta: forms on the
|
|
37218
|
+
connected Facebook Page. LinkedIn: forms owned by the ad account's
|
|
37219
|
+
Company Page — pass `adAccountId` (LinkedIn forms are org-owned).
|
|
37220
|
+
Requires the Ads add-on.
|
|
37202
37221
|
parameters:
|
|
37203
|
-
- { name: accountId, in: query, required: true, schema: { type: string }, description: Connected facebook account id. }
|
|
37222
|
+
- { name: accountId, in: query, required: true, schema: { type: string }, description: Connected facebook or linkedin ads account id. }
|
|
37223
|
+
- { name: adAccountId, in: query, schema: { type: string }, description: "LinkedIn only: the LinkedIn ad account id (used to resolve the owning organization). Required for LinkedIn." }
|
|
37204
37224
|
- { name: limit, in: query, schema: { type: integer, minimum: 1, maximum: 100, default: 25 } }
|
|
37205
37225
|
- { name: cursor, in: query, schema: { type: string } }
|
|
37206
37226
|
responses:
|
|
@@ -37219,26 +37239,36 @@ paths:
|
|
|
37219
37239
|
post:
|
|
37220
37240
|
operationId: createLeadForm
|
|
37221
37241
|
tags: ["Lead Gen"]
|
|
37222
|
-
x-platforms: ["meta"]
|
|
37242
|
+
x-platforms: ["meta", "linkedin"]
|
|
37223
37243
|
summary: Create a lead form
|
|
37224
37244
|
description: >
|
|
37225
|
-
Creates a Lead Gen form
|
|
37226
|
-
|
|
37227
|
-
|
|
37228
|
-
|
|
37245
|
+
Creates a Lead Gen form. The form content goes inside
|
|
37246
|
+
`platformSpecificData` for both platforms (the shape is selected by the
|
|
37247
|
+
accountId's platform). Meta: created on the connected Facebook Page
|
|
37248
|
+
(POST /{page-id}/leadgen_forms); the old top-level Meta fields
|
|
37249
|
+
(questions, thankYou*, contextCard, …) are DEPRECATED but still
|
|
37250
|
+
accepted while platformSpecificData is absent — mixing both shapes is
|
|
37251
|
+
a 400. LinkedIn: created on the ad account's Company Page. NOT
|
|
37252
|
+
idempotent — a retry creates a second form. Meta prefilled question
|
|
37253
|
+
types (EMAIL, PHONE, FULL_NAME, …) must omit label/key; CUSTOM
|
|
37254
|
+
questions require both. LinkedIn exposes only free-text and
|
|
37255
|
+
multiple-choice questions via API (prefilled-from-profile fields are
|
|
37256
|
+
Campaign Manager UI-only). Requires the Ads add-on.
|
|
37229
37257
|
requestBody:
|
|
37230
37258
|
required: true
|
|
37231
37259
|
content:
|
|
37232
37260
|
application/json:
|
|
37233
37261
|
schema:
|
|
37234
37262
|
type: object
|
|
37235
|
-
required: [accountId, name,
|
|
37263
|
+
required: [accountId, name, privacyPolicyUrl]
|
|
37236
37264
|
properties:
|
|
37237
37265
|
accountId: { type: string }
|
|
37238
37266
|
name: { type: string, maxLength: 200 }
|
|
37239
37267
|
questions:
|
|
37240
37268
|
type: array
|
|
37241
37269
|
minItems: 1
|
|
37270
|
+
deprecated: true
|
|
37271
|
+
description: "Deprecated (Meta legacy shape): use platformSpecificData.questions."
|
|
37242
37272
|
items:
|
|
37243
37273
|
type: object
|
|
37244
37274
|
required: [type]
|
|
@@ -37249,15 +37279,103 @@ paths:
|
|
|
37249
37279
|
options: { type: array, items: { type: object, properties: { key: { type: string }, value: { type: string } } } }
|
|
37250
37280
|
inline_context: { type: string }
|
|
37251
37281
|
privacyPolicyUrl: { type: string, format: uri }
|
|
37252
|
-
privacyPolicyLinkText: { type: string, maxLength: 70 }
|
|
37253
|
-
followUpActionUrl: { type: string, format: uri }
|
|
37254
|
-
locale: { type: string, example: EN_US }
|
|
37255
|
-
thankYouTitle: { type: string }
|
|
37256
|
-
thankYouBody: { type: string }
|
|
37257
|
-
thankYouButtonText: { type: string }
|
|
37258
|
-
thankYouButtonType: { type: string, example: VIEW_WEBSITE }
|
|
37259
|
-
thankYouWebsiteUrl: { type: string, format: uri }
|
|
37260
|
-
isOptimizedForQuality: { type: boolean }
|
|
37282
|
+
privacyPolicyLinkText: { type: string, maxLength: 70, deprecated: true, description: "Deprecated: use platformSpecificData.privacyPolicyLinkText." }
|
|
37283
|
+
followUpActionUrl: { type: string, format: uri, deprecated: true, description: "Deprecated: use platformSpecificData.followUpActionUrl." }
|
|
37284
|
+
locale: { type: string, example: EN_US, deprecated: true, description: "Deprecated: use platformSpecificData.locale." }
|
|
37285
|
+
thankYouTitle: { type: string, deprecated: true, description: "Deprecated: use platformSpecificData.thankYouTitle." }
|
|
37286
|
+
thankYouBody: { type: string, deprecated: true, description: "Deprecated: use platformSpecificData.thankYouBody." }
|
|
37287
|
+
thankYouButtonText: { type: string, deprecated: true, description: "Deprecated: use platformSpecificData.thankYouButtonText." }
|
|
37288
|
+
thankYouButtonType: { type: string, example: VIEW_WEBSITE, deprecated: true, description: "Deprecated: use platformSpecificData.thankYouButtonType." }
|
|
37289
|
+
thankYouWebsiteUrl: { type: string, format: uri, deprecated: true, description: "Deprecated: use platformSpecificData.thankYouWebsiteUrl." }
|
|
37290
|
+
isOptimizedForQuality: { type: boolean, deprecated: true, description: "Deprecated: use platformSpecificData.isOptimizedForQuality." }
|
|
37291
|
+
platformSpecificData:
|
|
37292
|
+
description: "Form content; the shape is selected by the accountId's platform. Unknown fields are a 400 (strict-parsed)."
|
|
37293
|
+
oneOf:
|
|
37294
|
+
- type: object
|
|
37295
|
+
title: MetaLeadFormPlatformData
|
|
37296
|
+
required: [questions]
|
|
37297
|
+
properties:
|
|
37298
|
+
questions:
|
|
37299
|
+
type: array
|
|
37300
|
+
minItems: 1
|
|
37301
|
+
items:
|
|
37302
|
+
type: object
|
|
37303
|
+
required: [type]
|
|
37304
|
+
properties:
|
|
37305
|
+
type: { type: string, description: "EMAIL, PHONE, FULL_NAME, FIRST_NAME, LAST_NAME, CUSTOM, …" }
|
|
37306
|
+
key: { type: string, description: "CUSTOM questions only." }
|
|
37307
|
+
label: { type: string, description: "CUSTOM questions only." }
|
|
37308
|
+
options: { type: array, items: { type: object, properties: { key: { type: string }, value: { type: string } } } }
|
|
37309
|
+
inline_context: { type: string }
|
|
37310
|
+
privacyPolicyLinkText: { type: string, maxLength: 70 }
|
|
37311
|
+
followUpActionUrl: { type: string, format: uri }
|
|
37312
|
+
locale: { type: string, example: EN_US }
|
|
37313
|
+
thankYouTitle: { type: string }
|
|
37314
|
+
thankYouBody: { type: string }
|
|
37315
|
+
thankYouButtonText: { type: string }
|
|
37316
|
+
thankYouButtonType: { type: string, example: VIEW_WEBSITE }
|
|
37317
|
+
thankYouWebsiteUrl: { type: string, format: uri }
|
|
37318
|
+
isOptimizedForQuality: { type: boolean }
|
|
37319
|
+
formType: { type: string, enum: [MORE_VOLUME, HIGHER_INTENT, RICH_CREATIVE] }
|
|
37320
|
+
blockDisplayForNonTargetedViewer: { type: boolean }
|
|
37321
|
+
allowOrganicLeadGen: { type: boolean }
|
|
37322
|
+
questionPageCustomHeadline: { type: string }
|
|
37323
|
+
contextCard:
|
|
37324
|
+
type: object
|
|
37325
|
+
properties:
|
|
37326
|
+
title: { type: string }
|
|
37327
|
+
content: { type: array, items: { type: string } }
|
|
37328
|
+
style: { type: string, enum: [LIST_STYLE, PARAGRAPH_STYLE] }
|
|
37329
|
+
buttonText: { type: string }
|
|
37330
|
+
coverPhoto: { type: string }
|
|
37331
|
+
- type: object
|
|
37332
|
+
title: LinkedInLeadFormPlatformData
|
|
37333
|
+
required: [adAccountId, headline, description, questions]
|
|
37334
|
+
properties:
|
|
37335
|
+
adAccountId: { type: string, description: "LinkedIn ad account id (resolves the owning organization)." }
|
|
37336
|
+
headline: { type: string, maxLength: 255 }
|
|
37337
|
+
description: { type: string, maxLength: 1500 }
|
|
37338
|
+
state: { type: string, enum: [DRAFT, PUBLISHED], description: "Defaults to DRAFT." }
|
|
37339
|
+
locale: { type: object, properties: { country: { type: string }, language: { type: string } } }
|
|
37340
|
+
consents:
|
|
37341
|
+
type: array
|
|
37342
|
+
items:
|
|
37343
|
+
type: object
|
|
37344
|
+
required: [description]
|
|
37345
|
+
properties:
|
|
37346
|
+
description: { type: string }
|
|
37347
|
+
required: { type: boolean, description: "Whether the viewer must tick this consent to submit. Defaults to false.", default: false }
|
|
37348
|
+
questions:
|
|
37349
|
+
type: array
|
|
37350
|
+
minItems: 1
|
|
37351
|
+
items:
|
|
37352
|
+
oneOf:
|
|
37353
|
+
- type: object
|
|
37354
|
+
required: [kind, name, question]
|
|
37355
|
+
properties:
|
|
37356
|
+
kind: { type: string, enum: [text] }
|
|
37357
|
+
name: { type: string }
|
|
37358
|
+
question: { type: string }
|
|
37359
|
+
required: { type: boolean }
|
|
37360
|
+
responseEditable: { type: boolean }
|
|
37361
|
+
maxResponseLength: { type: integer, description: "Defaults to 300 on LinkedIn's side." }
|
|
37362
|
+
- type: object
|
|
37363
|
+
required: [kind, name, question, choices]
|
|
37364
|
+
properties:
|
|
37365
|
+
kind: { type: string, enum: [multipleChoice] }
|
|
37366
|
+
name: { type: string }
|
|
37367
|
+
question: { type: string }
|
|
37368
|
+
required: { type: boolean }
|
|
37369
|
+
responseEditable: { type: boolean }
|
|
37370
|
+
choices:
|
|
37371
|
+
type: array
|
|
37372
|
+
minItems: 1
|
|
37373
|
+
items:
|
|
37374
|
+
type: object
|
|
37375
|
+
required: [id, text]
|
|
37376
|
+
properties:
|
|
37377
|
+
id: { type: integer }
|
|
37378
|
+
text: { type: string }
|
|
37261
37379
|
responses:
|
|
37262
37380
|
'200':
|
|
37263
37381
|
description: Created form.
|
|
@@ -37275,11 +37393,11 @@ paths:
|
|
|
37275
37393
|
get:
|
|
37276
37394
|
operationId: getLeadForm
|
|
37277
37395
|
tags: ["Lead Gen"]
|
|
37278
|
-
x-platforms: ["meta"]
|
|
37396
|
+
x-platforms: ["meta", "linkedin"]
|
|
37279
37397
|
summary: Get a lead form
|
|
37280
37398
|
parameters:
|
|
37281
|
-
- { name: formId, in: path, required: true, schema: { type: string } }
|
|
37282
|
-
- { name: accountId, in: query, required: true, schema: { type: string } }
|
|
37399
|
+
- { name: formId, in: path, required: true, schema: { type: string }, description: "Numeric form id (Meta leadgen_form id or LinkedIn leadForm id)." }
|
|
37400
|
+
- { name: accountId, in: query, required: true, schema: { type: string }, description: "Connected facebook or linkedin ads account id (selects the platform)." }
|
|
37283
37401
|
responses:
|
|
37284
37402
|
'200':
|
|
37285
37403
|
description: Form metadata.
|
|
@@ -37290,12 +37408,12 @@ paths:
|
|
|
37290
37408
|
delete:
|
|
37291
37409
|
operationId: archiveLeadForm
|
|
37292
37410
|
tags: ["Lead Gen"]
|
|
37293
|
-
x-platforms: ["meta"]
|
|
37411
|
+
x-platforms: ["meta", "linkedin"]
|
|
37294
37412
|
summary: Archive a lead form
|
|
37295
|
-
description:
|
|
37413
|
+
description: "Neither platform hard-deletes a form; this archives it (Meta status=ARCHIVED; LinkedIn state=ARCHIVED via PARTIAL_UPDATE)."
|
|
37296
37414
|
parameters:
|
|
37297
|
-
- { name: formId, in: path, required: true, schema: { type: string } }
|
|
37298
|
-
- { name: accountId, in: query, required: true, schema: { type: string } }
|
|
37415
|
+
- { name: formId, in: path, required: true, schema: { type: string }, description: "Numeric form id (Meta leadgen_form id or LinkedIn leadForm id)." }
|
|
37416
|
+
- { name: accountId, in: query, required: true, schema: { type: string }, description: "Connected facebook or linkedin ads account id (selects the platform)." }
|
|
37299
37417
|
responses:
|
|
37300
37418
|
'200':
|
|
37301
37419
|
description: Archived.
|
|
@@ -9157,6 +9157,7 @@ def register_generated_tools(mcp, _get_client):
|
|
|
9157
9157
|
def lead_gen_list_leads(
|
|
9158
9158
|
form_id: str | None = None,
|
|
9159
9159
|
account_id: str | None = None,
|
|
9160
|
+
ad_account_id: str | None = None,
|
|
9160
9161
|
limit: int = 25,
|
|
9161
9162
|
since: int | None = None,
|
|
9162
9163
|
cursor: str | None = None,
|
|
@@ -9165,15 +9166,17 @@ def register_generated_tools(mcp, _get_client):
|
|
|
9165
9166
|
|
|
9166
9167
|
Args:
|
|
9167
9168
|
form_id: Filter to a single lead form.
|
|
9168
|
-
account_id: Filter to a single connected account.
|
|
9169
|
+
account_id: Filter to a single connected account. LinkedIn ads accounts switch to the live fetch.
|
|
9170
|
+
ad_account_id: LinkedIn only: the LinkedIn ad account id whose responses to read (owner-scoped finder).
|
|
9169
9171
|
limit
|
|
9170
|
-
since: Unix seconds; only leads created at/after this
|
|
9171
|
-
cursor: Keyset cursor from a previous response's pagination.cursor."""
|
|
9172
|
+
since: Unix seconds; only leads created at/after this timestamp.
|
|
9173
|
+
cursor: Keyset cursor from a previous response's pagination.cursor (Meta: AdLead id; LinkedIn: numeric start offset)."""
|
|
9172
9174
|
client = _get_client()
|
|
9173
9175
|
try:
|
|
9174
9176
|
response = client.lead_gen.list_leads(
|
|
9175
9177
|
form_id=form_id,
|
|
9176
9178
|
account_id=account_id,
|
|
9179
|
+
ad_account_id=ad_account_id,
|
|
9177
9180
|
limit=limit,
|
|
9178
9181
|
since=since,
|
|
9179
9182
|
cursor=cursor,
|
|
@@ -9191,18 +9194,25 @@ def register_generated_tools(mcp, _get_client):
|
|
|
9191
9194
|
)
|
|
9192
9195
|
)
|
|
9193
9196
|
def lead_gen_list_lead_forms(
|
|
9194
|
-
account_id: str,
|
|
9197
|
+
account_id: str,
|
|
9198
|
+
ad_account_id: str | None = None,
|
|
9199
|
+
limit: int = 25,
|
|
9200
|
+
cursor: str | None = None,
|
|
9195
9201
|
) -> str:
|
|
9196
9202
|
"""List lead forms
|
|
9197
9203
|
|
|
9198
9204
|
Args:
|
|
9199
|
-
account_id: Connected facebook account id. (required)
|
|
9205
|
+
account_id: Connected facebook or linkedin ads account id. (required)
|
|
9206
|
+
ad_account_id: LinkedIn only: the LinkedIn ad account id (used to resolve the owning organization). Required for LinkedIn.
|
|
9200
9207
|
limit
|
|
9201
9208
|
cursor"""
|
|
9202
9209
|
client = _get_client()
|
|
9203
9210
|
try:
|
|
9204
9211
|
response = client.lead_gen.list_lead_forms(
|
|
9205
|
-
account_id=account_id,
|
|
9212
|
+
account_id=account_id,
|
|
9213
|
+
ad_account_id=ad_account_id,
|
|
9214
|
+
limit=limit,
|
|
9215
|
+
cursor=cursor,
|
|
9206
9216
|
)
|
|
9207
9217
|
return _format_response(response)
|
|
9208
9218
|
except Exception as e:
|
|
@@ -9219,8 +9229,8 @@ def register_generated_tools(mcp, _get_client):
|
|
|
9219
9229
|
def lead_gen_create_lead_form(
|
|
9220
9230
|
account_id: str,
|
|
9221
9231
|
name: str,
|
|
9222
|
-
questions: list[dict[str, Any]] | None,
|
|
9223
9232
|
privacy_policy_url: str,
|
|
9233
|
+
questions: list[dict[str, Any]] | None = None,
|
|
9224
9234
|
privacy_policy_link_text: str | None = None,
|
|
9225
9235
|
follow_up_action_url: str | None = None,
|
|
9226
9236
|
locale: str | None = None,
|
|
@@ -9230,23 +9240,25 @@ def register_generated_tools(mcp, _get_client):
|
|
|
9230
9240
|
thank_you_button_type: str | None = None,
|
|
9231
9241
|
thank_you_website_url: str | None = None,
|
|
9232
9242
|
is_optimized_for_quality: bool | None = None,
|
|
9243
|
+
platform_specific_data: dict[str, Any] | None = None,
|
|
9233
9244
|
) -> str:
|
|
9234
9245
|
"""Create a lead form
|
|
9235
9246
|
|
|
9236
9247
|
Args:
|
|
9237
9248
|
account_id: (required)
|
|
9238
9249
|
name: (required)
|
|
9239
|
-
questions: (
|
|
9250
|
+
questions: Deprecated (Meta legacy shape): use platformSpecificData.questions.
|
|
9240
9251
|
privacy_policy_url: (required)
|
|
9241
|
-
privacy_policy_link_text
|
|
9242
|
-
follow_up_action_url
|
|
9243
|
-
locale
|
|
9244
|
-
thank_you_title
|
|
9245
|
-
thank_you_body
|
|
9246
|
-
thank_you_button_text
|
|
9247
|
-
thank_you_button_type
|
|
9248
|
-
thank_you_website_url
|
|
9249
|
-
is_optimized_for_quality
|
|
9252
|
+
privacy_policy_link_text: Deprecated: use platformSpecificData.privacyPolicyLinkText.
|
|
9253
|
+
follow_up_action_url: Deprecated: use platformSpecificData.followUpActionUrl.
|
|
9254
|
+
locale: Deprecated: use platformSpecificData.locale.
|
|
9255
|
+
thank_you_title: Deprecated: use platformSpecificData.thankYouTitle.
|
|
9256
|
+
thank_you_body: Deprecated: use platformSpecificData.thankYouBody.
|
|
9257
|
+
thank_you_button_text: Deprecated: use platformSpecificData.thankYouButtonText.
|
|
9258
|
+
thank_you_button_type: Deprecated: use platformSpecificData.thankYouButtonType.
|
|
9259
|
+
thank_you_website_url: Deprecated: use platformSpecificData.thankYouWebsiteUrl.
|
|
9260
|
+
is_optimized_for_quality: Deprecated: use platformSpecificData.isOptimizedForQuality.
|
|
9261
|
+
platform_specific_data: Form content; the shape is selected by the accountId's platform. Unknown fields are a 400 (strict-parsed)."""
|
|
9250
9262
|
client = _get_client()
|
|
9251
9263
|
try:
|
|
9252
9264
|
response = client.lead_gen.create_lead_form(
|
|
@@ -9263,6 +9275,7 @@ def register_generated_tools(mcp, _get_client):
|
|
|
9263
9275
|
thank_you_button_type=thank_you_button_type,
|
|
9264
9276
|
thank_you_website_url=thank_you_website_url,
|
|
9265
9277
|
is_optimized_for_quality=is_optimized_for_quality,
|
|
9278
|
+
platform_specific_data=platform_specific_data,
|
|
9266
9279
|
)
|
|
9267
9280
|
return _format_response(response)
|
|
9268
9281
|
except Exception as e:
|
|
@@ -9280,8 +9293,8 @@ def register_generated_tools(mcp, _get_client):
|
|
|
9280
9293
|
"""Get a lead form
|
|
9281
9294
|
|
|
9282
9295
|
Args:
|
|
9283
|
-
form_id: (required)
|
|
9284
|
-
account_id: (required)"""
|
|
9296
|
+
form_id: Numeric form id (Meta leadgen_form id or LinkedIn leadForm id). (required)
|
|
9297
|
+
account_id: Connected facebook or linkedin ads account id (selects the platform). (required)"""
|
|
9285
9298
|
client = _get_client()
|
|
9286
9299
|
try:
|
|
9287
9300
|
response = client.lead_gen.get_lead_form(
|
|
@@ -9303,8 +9316,8 @@ def register_generated_tools(mcp, _get_client):
|
|
|
9303
9316
|
"""Archive a lead form
|
|
9304
9317
|
|
|
9305
9318
|
Args:
|
|
9306
|
-
form_id: (required)
|
|
9307
|
-
account_id: (required)"""
|
|
9319
|
+
form_id: Numeric form id (Meta leadgen_form id or LinkedIn leadForm id). (required)
|
|
9320
|
+
account_id: Connected facebook or linkedin ads account id (selects the platform). (required)"""
|
|
9308
9321
|
client = _get_client()
|
|
9309
9322
|
try:
|
|
9310
9323
|
response = client.lead_gen.archive_lead_form(
|
|
@@ -59,6 +59,7 @@ class LeadGenResource:
|
|
|
59
59
|
*,
|
|
60
60
|
form_id: str | None = None,
|
|
61
61
|
account_id: str | None = None,
|
|
62
|
+
ad_account_id: str | None = None,
|
|
62
63
|
limit: int | None = 25,
|
|
63
64
|
since: int | None = None,
|
|
64
65
|
cursor: str | None = None,
|
|
@@ -67,6 +68,7 @@ class LeadGenResource:
|
|
|
67
68
|
params = self._build_params(
|
|
68
69
|
form_id=form_id,
|
|
69
70
|
account_id=account_id,
|
|
71
|
+
ad_account_id=ad_account_id,
|
|
70
72
|
limit=limit,
|
|
71
73
|
since=since,
|
|
72
74
|
cursor=cursor,
|
|
@@ -74,11 +76,17 @@ class LeadGenResource:
|
|
|
74
76
|
return self._client._get("/v1/ads/leads", params=params)
|
|
75
77
|
|
|
76
78
|
def list_lead_forms(
|
|
77
|
-
self,
|
|
79
|
+
self,
|
|
80
|
+
account_id: str,
|
|
81
|
+
*,
|
|
82
|
+
ad_account_id: str | None = None,
|
|
83
|
+
limit: int | None = 25,
|
|
84
|
+
cursor: str | None = None,
|
|
78
85
|
) -> dict[str, Any]:
|
|
79
86
|
"""List lead forms"""
|
|
80
87
|
params = self._build_params(
|
|
81
88
|
account_id=account_id,
|
|
89
|
+
ad_account_id=ad_account_id,
|
|
82
90
|
limit=limit,
|
|
83
91
|
cursor=cursor,
|
|
84
92
|
)
|
|
@@ -88,9 +96,9 @@ class LeadGenResource:
|
|
|
88
96
|
self,
|
|
89
97
|
account_id: str,
|
|
90
98
|
name: str,
|
|
91
|
-
questions: list[dict[str, Any]],
|
|
92
99
|
privacy_policy_url: str,
|
|
93
100
|
*,
|
|
101
|
+
questions: list[dict[str, Any]] | None = None,
|
|
94
102
|
privacy_policy_link_text: str | None = None,
|
|
95
103
|
follow_up_action_url: str | None = None,
|
|
96
104
|
locale: str | None = None,
|
|
@@ -100,6 +108,7 @@ class LeadGenResource:
|
|
|
100
108
|
thank_you_button_type: str | None = None,
|
|
101
109
|
thank_you_website_url: str | None = None,
|
|
102
110
|
is_optimized_for_quality: bool | None = None,
|
|
111
|
+
platform_specific_data: Any | None = None,
|
|
103
112
|
) -> dict[str, Any]:
|
|
104
113
|
"""Create a lead form"""
|
|
105
114
|
payload = self._build_payload(
|
|
@@ -116,6 +125,7 @@ class LeadGenResource:
|
|
|
116
125
|
thank_you_button_type=thank_you_button_type,
|
|
117
126
|
thank_you_website_url=thank_you_website_url,
|
|
118
127
|
is_optimized_for_quality=is_optimized_for_quality,
|
|
128
|
+
platform_specific_data=platform_specific_data,
|
|
119
129
|
)
|
|
120
130
|
return self._client._post("/v1/ads/lead-forms", data=payload)
|
|
121
131
|
|
|
@@ -168,6 +178,7 @@ class LeadGenResource:
|
|
|
168
178
|
*,
|
|
169
179
|
form_id: str | None = None,
|
|
170
180
|
account_id: str | None = None,
|
|
181
|
+
ad_account_id: str | None = None,
|
|
171
182
|
limit: int | None = 25,
|
|
172
183
|
since: int | None = None,
|
|
173
184
|
cursor: str | None = None,
|
|
@@ -176,6 +187,7 @@ class LeadGenResource:
|
|
|
176
187
|
params = self._build_params(
|
|
177
188
|
form_id=form_id,
|
|
178
189
|
account_id=account_id,
|
|
190
|
+
ad_account_id=ad_account_id,
|
|
179
191
|
limit=limit,
|
|
180
192
|
since=since,
|
|
181
193
|
cursor=cursor,
|
|
@@ -183,11 +195,17 @@ class LeadGenResource:
|
|
|
183
195
|
return await self._client._aget("/v1/ads/leads", params=params)
|
|
184
196
|
|
|
185
197
|
async def alist_lead_forms(
|
|
186
|
-
self,
|
|
198
|
+
self,
|
|
199
|
+
account_id: str,
|
|
200
|
+
*,
|
|
201
|
+
ad_account_id: str | None = None,
|
|
202
|
+
limit: int | None = 25,
|
|
203
|
+
cursor: str | None = None,
|
|
187
204
|
) -> dict[str, Any]:
|
|
188
205
|
"""List lead forms (async)"""
|
|
189
206
|
params = self._build_params(
|
|
190
207
|
account_id=account_id,
|
|
208
|
+
ad_account_id=ad_account_id,
|
|
191
209
|
limit=limit,
|
|
192
210
|
cursor=cursor,
|
|
193
211
|
)
|
|
@@ -197,9 +215,9 @@ class LeadGenResource:
|
|
|
197
215
|
self,
|
|
198
216
|
account_id: str,
|
|
199
217
|
name: str,
|
|
200
|
-
questions: list[dict[str, Any]],
|
|
201
218
|
privacy_policy_url: str,
|
|
202
219
|
*,
|
|
220
|
+
questions: list[dict[str, Any]] | None = None,
|
|
203
221
|
privacy_policy_link_text: str | None = None,
|
|
204
222
|
follow_up_action_url: str | None = None,
|
|
205
223
|
locale: str | None = None,
|
|
@@ -209,6 +227,7 @@ class LeadGenResource:
|
|
|
209
227
|
thank_you_button_type: str | None = None,
|
|
210
228
|
thank_you_website_url: str | None = None,
|
|
211
229
|
is_optimized_for_quality: bool | None = None,
|
|
230
|
+
platform_specific_data: Any | None = None,
|
|
212
231
|
) -> dict[str, Any]:
|
|
213
232
|
"""Create a lead form (async)"""
|
|
214
233
|
payload = self._build_payload(
|
|
@@ -225,6 +244,7 @@ class LeadGenResource:
|
|
|
225
244
|
thank_you_button_type=thank_you_button_type,
|
|
226
245
|
thank_you_website_url=thank_you_website_url,
|
|
227
246
|
is_optimized_for_quality=is_optimized_for_quality,
|
|
247
|
+
platform_specific_data=platform_specific_data,
|
|
228
248
|
)
|
|
229
249
|
return await self._client._apost("/v1/ads/lead-forms", data=payload)
|
|
230
250
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/comment_automations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_location_details.py
RENAMED
|
File without changes
|
|
File without changes
|
{zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_place_actions.py
RENAMED
|
File without changes
|
|
File without changes
|
{zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_verifications.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/reach_and_frequency.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/twitter_engagement.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp_phone_numbers.py
RENAMED
|
File without changes
|
|
File without changes
|
{zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp_templates.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|