late-sdk 1.4.413__tar.gz → 1.4.415__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.
- {late_sdk-1.4.413 → late_sdk-1.4.415}/PKG-INFO +1 -1
- {late_sdk-1.4.413 → late_sdk-1.4.415}/openapi.yaml +26 -1
- {late_sdk-1.4.413 → late_sdk-1.4.415}/pyproject.toml +1 -1
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/__init__.py +1 -1
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/mcp/generated_tools.py +3 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/models/_generated/models.py +85 -66
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/whatsapp.py +4 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/uv.lock +1 -1
- {late_sdk-1.4.413 → late_sdk-1.4.415}/.dockerignore +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/.env.example +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/.github/.tmp/.generated-actions/run-pypi-publish-in-docker-container/action.yml +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/.github/CODEOWNERS +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/.github/workflows/generate.yml +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/.github/workflows/release-preview.yml +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/.github/workflows/release.yml +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/.github/workflows/test.yml +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/.gitignore +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/CHANGELOG.md +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/Dockerfile +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/Dockerfile.docker +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/LICENSE +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/README.md +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/claude-desktop-config.json +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/docs/HTTP_DEPLOYMENT.md +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/docs/MCP.md +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/examples/01_basic_usage.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/examples/02_schedule_from_csv.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/examples/03_cross_posting.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/examples/04_ai_content_generation.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/examples/05_download_tools.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/examples/data/sample_posts.csv +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/examples/publish_post.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/railway.toml +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/scripts/generate_examples.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/scripts/generate_mcp_docs.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/scripts/generate_mcp_tools.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/scripts/generate_models.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/scripts/generate_readme_reference.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/scripts/generate_resources.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/scripts/smoketest_streamable_http.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/server.json +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/ai/__init__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/ai/content_generator.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/ai/protocols.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/ai/providers/__init__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/ai/providers/openai.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/client/__init__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/client/base.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/client/exceptions.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/client/late_client.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/client/rate_limiter.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/enums.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/mcp/__init__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/mcp/__main__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/mcp/auth.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/mcp/config.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/mcp/constants.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/mcp/http_server.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/mcp/server.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/mcp/tool_definitions.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/models/__init__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/models/_generated/__init__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/models/responses.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/pipelines/__init__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/pipelines/cross_poster.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/pipelines/csv_scheduler.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/__init__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/__init__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/account_groups.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/account_settings.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/accounts.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/ad_accounts.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/ad_audiences.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/ad_campaigns.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/ad_creatives.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/ad_insights.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/ad_targeting.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/ads.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/analytics.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/api_keys.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/broadcasts.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/calls.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/comment_automations.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/comments.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/connect.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/connected_apps.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/contacts.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/conversions.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/custom_fields.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/discord.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/gmb_attributes.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/gmb_food_menus.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/gmb_location_details.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/gmb_media.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/gmb_place_actions.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/gmb_services.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/gmb_verifications.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/inbox.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/inbox_analytics.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/instagram.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/invites.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/lead_gen.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/logs.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/media.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/mentions.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/messages.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/messaging_ads.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/phone_numbers.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/posts.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/profiles.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/queue.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/reach_and_frequency.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/reddit.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/reviews.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/sequences.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/sms.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/tools.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/tracking_tags.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/twitter_engagement.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/usage.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/users.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/validate.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/verify.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/voice.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/webhooks.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/whatsapp_calling.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/whatsapp_flows.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/whatsapp_phone_numbers.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/whatsapp_sandbox.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/whatsapp_templates.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/workflows.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/accounts.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/ads.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/analytics.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/base.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/media.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/posts.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/profiles.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/queue.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/tools.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/users.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/upload/__init__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/upload/config.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/upload/direct.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/upload/protocols.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/upload/smart.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/upload/utils.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/upload/vercel/__init__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/upload/vercel/client.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/upload/vercel/uploader.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/src/zernio/__init__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/tests/__init__.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/tests/conftest.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/tests/test_client.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/tests/test_exhaustive.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/tests/test_integration.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/tests/test_mcp_retry_regression.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/tests/test_patch_methods.py +0 -0
- {late_sdk-1.4.413 → late_sdk-1.4.415}/tests/test_resolve_account.py +0 -0
|
@@ -1457,6 +1457,11 @@ components:
|
|
|
1457
1457
|
type: array
|
|
1458
1458
|
items: { type: string }
|
|
1459
1459
|
description: Sample values for header text variables
|
|
1460
|
+
header_text_named_params:
|
|
1461
|
+
type: array
|
|
1462
|
+
items:
|
|
1463
|
+
$ref: '#/components/schemas/WhatsAppNamedParamExample'
|
|
1464
|
+
description: 'Sample values for NAMED header variables (templates using {{customer_name}}-style tokens with parameter_format: NAMED).'
|
|
1460
1465
|
header_handle:
|
|
1461
1466
|
type: array
|
|
1462
1467
|
minItems: 1
|
|
@@ -1487,6 +1492,22 @@ components:
|
|
|
1487
1492
|
type: array
|
|
1488
1493
|
items: { type: string }
|
|
1489
1494
|
description: Sample values for body variables (array of arrays)
|
|
1495
|
+
body_text_named_params:
|
|
1496
|
+
type: array
|
|
1497
|
+
items:
|
|
1498
|
+
$ref: '#/components/schemas/WhatsAppNamedParamExample'
|
|
1499
|
+
description: 'Sample values for NAMED body variables (templates using {{customer_name}}-style tokens with parameter_format: NAMED).'
|
|
1500
|
+
WhatsAppNamedParamExample:
|
|
1501
|
+
type: object
|
|
1502
|
+
required: [param_name, example]
|
|
1503
|
+
properties:
|
|
1504
|
+
param_name:
|
|
1505
|
+
type: string
|
|
1506
|
+
pattern: '^[a-z0-9_]+$'
|
|
1507
|
+
description: 'Variable name as it appears in the text, without braces (e.g. customer_name for {{customer_name}}).'
|
|
1508
|
+
example:
|
|
1509
|
+
type: string
|
|
1510
|
+
description: Sample value for this variable.
|
|
1490
1511
|
WhatsAppFooterComponent:
|
|
1491
1512
|
type: object
|
|
1492
1513
|
required: [type]
|
|
@@ -6995,7 +7016,7 @@ components:
|
|
|
6995
7016
|
type: [object, "null"]
|
|
6996
7017
|
description: Platform-specific creative data. Fields vary by platform.
|
|
6997
7018
|
properties:
|
|
6998
|
-
thumbnailUrl: { type: string, description: Primary thumbnail/image URL }
|
|
7019
|
+
thumbnailUrl: { type: [string, "null"], description: Primary thumbnail/image URL }
|
|
6999
7020
|
imageUrl: { type: string, description: Alternative image URL }
|
|
7000
7021
|
videoId: { type: [string, "null"], description: "Meta video ID for VIDEO-type ads. Null for non-video ads. Callers that need an embeddable MP4 can call GET /{videoId}?fields=source with the page access token." }
|
|
7001
7022
|
videoUrl: { type: [string, "null"], description: "Public Facebook watch URL for VIDEO-type ads (https://www.facebook.com/watch/?v={videoId}). Null for non-video ads." }
|
|
@@ -26161,6 +26182,10 @@ paths:
|
|
|
26161
26182
|
language:
|
|
26162
26183
|
type: string
|
|
26163
26184
|
description: Template language code (e.g., en_US)
|
|
26185
|
+
parameter_format:
|
|
26186
|
+
type: string
|
|
26187
|
+
enum: [POSITIONAL, NAMED, positional, named]
|
|
26188
|
+
description: 'Variable style: POSITIONAL ({{1}}, the default) or NAMED ({{customer_name}}). Named templates provide examples via body_text_named_params / header_text_named_params. Inferred as NAMED when omitted but a named-params example is present.'
|
|
26164
26189
|
components:
|
|
26165
26190
|
type: array
|
|
26166
26191
|
description: "Template components (header, body, footer, buttons, carousel, limited_time_offer). Required for custom templates, omit when using library_template_name."
|
|
@@ -14545,6 +14545,7 @@ def register_generated_tools(mcp, _get_client):
|
|
|
14545
14545
|
name: str,
|
|
14546
14546
|
category: str,
|
|
14547
14547
|
language: str,
|
|
14548
|
+
parameter_format: str | None = None,
|
|
14548
14549
|
components: list[dict[str, Any]] | None = None,
|
|
14549
14550
|
library_template_name: str | None = None,
|
|
14550
14551
|
library_template_body_inputs: dict[str, Any] | None = None,
|
|
@@ -14557,6 +14558,7 @@ def register_generated_tools(mcp, _get_client):
|
|
|
14557
14558
|
name: Template name (lowercase, letters/numbers/underscores, must start with a letter) (required)
|
|
14558
14559
|
category: Template category (required)
|
|
14559
14560
|
language: Template language code (e.g., en_US) (required)
|
|
14561
|
+
parameter_format: Variable style: POSITIONAL ({{1}}, the default) or NAMED ({{customer_name}}). Named templates provide examples via body_text_named_params / header_text_named_params. Inferred as NAMED when omitted but a named-params example is present.
|
|
14560
14562
|
components: Template components (header, body, footer, buttons, carousel, limited_time_offer). Required for custom templates, omit when using library_template_name.
|
|
14561
14563
|
library_template_name: Name of a pre-built template from Meta's template library (e.g., "appointment_reminder",
|
|
14562
14564
|
"auto_pay_reminder_1", "address_update"). When provided, the template is pre-approved
|
|
@@ -14573,6 +14575,7 @@ def register_generated_tools(mcp, _get_client):
|
|
|
14573
14575
|
name=name,
|
|
14574
14576
|
category=category,
|
|
14575
14577
|
language=language,
|
|
14578
|
+
parameter_format=parameter_format,
|
|
14576
14579
|
components=components,
|
|
14577
14580
|
library_template_name=library_template_name,
|
|
14578
14581
|
library_template_body_inputs=library_template_body_inputs,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: openapi.yaml
|
|
3
|
-
# timestamp: 2026-08-
|
|
3
|
+
# timestamp: 2026-08-04T14:32:02+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -1076,49 +1076,19 @@ class Format(str, Enum):
|
|
|
1076
1076
|
LOCATION = "location"
|
|
1077
1077
|
|
|
1078
1078
|
|
|
1079
|
-
class Example(BaseModel):
|
|
1080
|
-
header_text: List[str] | None = None
|
|
1081
|
-
"""
|
|
1082
|
-
Sample values for header text variables
|
|
1083
|
-
"""
|
|
1084
|
-
header_handle: List[AnyUrl] | None = None
|
|
1085
|
-
"""
|
|
1086
|
-
When the header format is a media type (image, video, gif, document), provide a public URL here. Zernio will download and upload it to WhatsApp on your behalf, replacing it with the internal file handle before creating the template.
|
|
1087
|
-
"""
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
class WhatsAppHeaderComponent(BaseModel):
|
|
1091
|
-
type: Literal["header"]
|
|
1092
|
-
format: Format
|
|
1093
|
-
text: str | None = None
|
|
1094
|
-
"""
|
|
1095
|
-
Header text (may include {{1}} variable). Used when format is TEXT.
|
|
1096
|
-
"""
|
|
1097
|
-
example: Example | None = None
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
1079
|
class Type5(str, Enum):
|
|
1101
1080
|
BODY = "body"
|
|
1102
1081
|
|
|
1103
1082
|
|
|
1104
|
-
class
|
|
1105
|
-
|
|
1083
|
+
class WhatsAppNamedParamExample(BaseModel):
|
|
1084
|
+
param_name: Annotated[str, Field(pattern="^[a-z0-9_]+$")]
|
|
1106
1085
|
"""
|
|
1107
|
-
|
|
1086
|
+
Variable name as it appears in the text, without braces (e.g. customer_name for {{customer_name}}).
|
|
1108
1087
|
"""
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
class WhatsAppBodyComponent(BaseModel):
|
|
1112
|
-
type: Literal["body"]
|
|
1113
|
-
text: str
|
|
1114
|
-
"""
|
|
1115
|
-
Body text with optional {{n}} variables
|
|
1088
|
+
example: str
|
|
1116
1089
|
"""
|
|
1117
|
-
|
|
1118
|
-
"""
|
|
1119
|
-
Add security recommendation text (authentication templates only)
|
|
1090
|
+
Sample value for this variable.
|
|
1120
1091
|
"""
|
|
1121
|
-
example: Example1 | None = None
|
|
1122
1092
|
|
|
1123
1093
|
|
|
1124
1094
|
class Type6(str, Enum):
|
|
@@ -9229,24 +9199,53 @@ class SharedAdAccount(BaseModel):
|
|
|
9229
9199
|
"""
|
|
9230
9200
|
|
|
9231
9201
|
|
|
9232
|
-
class
|
|
9233
|
-
|
|
9234
|
-
List[
|
|
9235
|
-
WhatsAppHeaderComponent | WhatsAppBodyComponent | WhatsAppButtonsComponent
|
|
9236
|
-
],
|
|
9237
|
-
Field(min_length=1),
|
|
9238
|
-
]
|
|
9202
|
+
class Example(BaseModel):
|
|
9203
|
+
header_text: List[str] | None = None
|
|
9239
9204
|
"""
|
|
9240
|
-
|
|
9205
|
+
Sample values for header text variables
|
|
9206
|
+
"""
|
|
9207
|
+
header_text_named_params: List[WhatsAppNamedParamExample] | None = None
|
|
9208
|
+
"""
|
|
9209
|
+
Sample values for NAMED header variables (templates using {{customer_name}}-style tokens with parameter_format: NAMED).
|
|
9210
|
+
"""
|
|
9211
|
+
header_handle: List[AnyUrl] | None = None
|
|
9212
|
+
"""
|
|
9213
|
+
When the header format is a media type (image, video, gif, document), provide a public URL here. Zernio will download and upload it to WhatsApp on your behalf, replacing it with the internal file handle before creating the template.
|
|
9241
9214
|
"""
|
|
9242
9215
|
|
|
9243
9216
|
|
|
9244
|
-
class
|
|
9245
|
-
type: Literal["
|
|
9246
|
-
|
|
9217
|
+
class WhatsAppHeaderComponent(BaseModel):
|
|
9218
|
+
type: Literal["header"]
|
|
9219
|
+
format: Format
|
|
9220
|
+
text: str | None = None
|
|
9247
9221
|
"""
|
|
9248
|
-
|
|
9222
|
+
Header text (may include {{1}} variable). Used when format is TEXT.
|
|
9223
|
+
"""
|
|
9224
|
+
example: Example | None = None
|
|
9225
|
+
|
|
9226
|
+
|
|
9227
|
+
class Example1(BaseModel):
|
|
9228
|
+
body_text: List[List[str]] | None = None
|
|
9229
|
+
"""
|
|
9230
|
+
Sample values for body variables (array of arrays)
|
|
9231
|
+
"""
|
|
9232
|
+
body_text_named_params: List[WhatsAppNamedParamExample] | None = None
|
|
9249
9233
|
"""
|
|
9234
|
+
Sample values for NAMED body variables (templates using {{customer_name}}-style tokens with parameter_format: NAMED).
|
|
9235
|
+
"""
|
|
9236
|
+
|
|
9237
|
+
|
|
9238
|
+
class WhatsAppBodyComponent(BaseModel):
|
|
9239
|
+
type: Literal["body"]
|
|
9240
|
+
text: str
|
|
9241
|
+
"""
|
|
9242
|
+
Body text with optional {{n}} variables
|
|
9243
|
+
"""
|
|
9244
|
+
add_security_recommendation: bool | None = None
|
|
9245
|
+
"""
|
|
9246
|
+
Add security recommendation text (authentication templates only)
|
|
9247
|
+
"""
|
|
9248
|
+
example: Example1 | None = None
|
|
9250
9249
|
|
|
9251
9250
|
|
|
9252
9251
|
class ExternalPostWebhookPost(BaseModel):
|
|
@@ -9369,25 +9368,24 @@ class XApiPricing(BaseModel):
|
|
|
9369
9368
|
"""
|
|
9370
9369
|
|
|
9371
9370
|
|
|
9372
|
-
class
|
|
9373
|
-
|
|
9374
|
-
|
|
9375
|
-
|
|
9376
|
-
|
|
9377
|
-
|
|
9378
|
-
| WhatsAppCarouselComponent
|
|
9379
|
-
| WhatsAppLimitedTimeOfferComponent
|
|
9380
|
-
]
|
|
9381
|
-
):
|
|
9382
|
-
root: Annotated[
|
|
9383
|
-
WhatsAppHeaderComponent
|
|
9384
|
-
| WhatsAppBodyComponent
|
|
9385
|
-
| WhatsAppFooterComponent
|
|
9386
|
-
| WhatsAppButtonsComponent
|
|
9387
|
-
| WhatsAppCarouselComponent
|
|
9388
|
-
| WhatsAppLimitedTimeOfferComponent,
|
|
9389
|
-
Field(discriminator="type"),
|
|
9371
|
+
class Card(BaseModel):
|
|
9372
|
+
components: Annotated[
|
|
9373
|
+
List[
|
|
9374
|
+
WhatsAppHeaderComponent | WhatsAppBodyComponent | WhatsAppButtonsComponent
|
|
9375
|
+
],
|
|
9376
|
+
Field(min_length=1),
|
|
9390
9377
|
]
|
|
9378
|
+
"""
|
|
9379
|
+
Per-card components. Each card carries its own media header + optional body + up to 2 buttons. Footer and nested carousel are not allowed inside cards.
|
|
9380
|
+
"""
|
|
9381
|
+
|
|
9382
|
+
|
|
9383
|
+
class WhatsAppCarouselComponent(BaseModel):
|
|
9384
|
+
type: Literal["carousel"]
|
|
9385
|
+
cards: Annotated[List[Card], Field(max_length=10, min_length=2)]
|
|
9386
|
+
"""
|
|
9387
|
+
2-10 cards. Meta requires all cards to share the same component structure; a mismatch surfaces as a rejected_reason. MARKETING category only.
|
|
9388
|
+
"""
|
|
9391
9389
|
|
|
9392
9390
|
|
|
9393
9391
|
class PlatformTarget(BaseModel):
|
|
@@ -9533,3 +9531,24 @@ class PostUpdateResponse(BaseModel):
|
|
|
9533
9531
|
class PostRetryResponse(BaseModel):
|
|
9534
9532
|
message: str | None = None
|
|
9535
9533
|
post: Post3 | None = None
|
|
9534
|
+
|
|
9535
|
+
|
|
9536
|
+
class WhatsAppTemplateComponent(
|
|
9537
|
+
RootModel[
|
|
9538
|
+
WhatsAppHeaderComponent
|
|
9539
|
+
| WhatsAppBodyComponent
|
|
9540
|
+
| WhatsAppFooterComponent
|
|
9541
|
+
| WhatsAppButtonsComponent
|
|
9542
|
+
| WhatsAppCarouselComponent
|
|
9543
|
+
| WhatsAppLimitedTimeOfferComponent
|
|
9544
|
+
]
|
|
9545
|
+
):
|
|
9546
|
+
root: Annotated[
|
|
9547
|
+
WhatsAppHeaderComponent
|
|
9548
|
+
| WhatsAppBodyComponent
|
|
9549
|
+
| WhatsAppFooterComponent
|
|
9550
|
+
| WhatsAppButtonsComponent
|
|
9551
|
+
| WhatsAppCarouselComponent
|
|
9552
|
+
| WhatsAppLimitedTimeOfferComponent,
|
|
9553
|
+
Field(discriminator="type"),
|
|
9554
|
+
]
|
|
@@ -105,6 +105,7 @@ class WhatsappResource:
|
|
|
105
105
|
category: str,
|
|
106
106
|
language: str,
|
|
107
107
|
*,
|
|
108
|
+
parameter_format: str | None = None,
|
|
108
109
|
components: list[Any] | None = None,
|
|
109
110
|
library_template_name: str | None = None,
|
|
110
111
|
library_template_body_inputs: dict[str, Any] | None = None,
|
|
@@ -116,6 +117,7 @@ class WhatsappResource:
|
|
|
116
117
|
name=name,
|
|
117
118
|
category=category,
|
|
118
119
|
language=language,
|
|
120
|
+
parameter_format=parameter_format,
|
|
119
121
|
components=components,
|
|
120
122
|
library_template_name=library_template_name,
|
|
121
123
|
library_template_body_inputs=library_template_body_inputs,
|
|
@@ -527,6 +529,7 @@ class WhatsappResource:
|
|
|
527
529
|
category: str,
|
|
528
530
|
language: str,
|
|
529
531
|
*,
|
|
532
|
+
parameter_format: str | None = None,
|
|
530
533
|
components: list[Any] | None = None,
|
|
531
534
|
library_template_name: str | None = None,
|
|
532
535
|
library_template_body_inputs: dict[str, Any] | None = None,
|
|
@@ -538,6 +541,7 @@ class WhatsappResource:
|
|
|
538
541
|
name=name,
|
|
539
542
|
category=category,
|
|
540
543
|
language=language,
|
|
544
|
+
parameter_format=parameter_format,
|
|
541
545
|
components=components,
|
|
542
546
|
library_template_name=library_template_name,
|
|
543
547
|
library_template_body_inputs=library_template_body_inputs,
|
|
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
|
|
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
|
{late_sdk-1.4.413 → late_sdk-1.4.415}/src/late/resources/_generated/whatsapp_phone_numbers.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|