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.
Files changed (156) hide show
  1. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/PKG-INFO +1 -1
  2. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/openapi.yaml +158 -40
  3. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/pyproject.toml +1 -1
  4. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/__init__.py +1 -1
  5. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/generated_tools.py +34 -21
  6. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/models/_generated/models.py +1 -1
  7. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/lead_gen.py +24 -4
  8. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/uv.lock +1 -1
  9. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.dockerignore +0 -0
  10. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.env.example +0 -0
  11. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.github/CODEOWNERS +0 -0
  12. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.github/workflows/generate.yml +0 -0
  13. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.github/workflows/release-preview.yml +0 -0
  14. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.github/workflows/release.yml +0 -0
  15. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.github/workflows/test.yml +0 -0
  16. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/.gitignore +0 -0
  17. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/CHANGELOG.md +0 -0
  18. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/Dockerfile +0 -0
  19. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/Dockerfile.docker +0 -0
  20. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/LICENSE +0 -0
  21. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/README.md +0 -0
  22. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/claude-desktop-config.json +0 -0
  23. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/docs/HTTP_DEPLOYMENT.md +0 -0
  24. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/docs/MCP.md +0 -0
  25. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/01_basic_usage.py +0 -0
  26. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/02_schedule_from_csv.py +0 -0
  27. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/03_cross_posting.py +0 -0
  28. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/04_ai_content_generation.py +0 -0
  29. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/05_download_tools.py +0 -0
  30. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/data/sample_posts.csv +0 -0
  31. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/examples/publish_post.py +0 -0
  32. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/railway.toml +0 -0
  33. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/generate_examples.py +0 -0
  34. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/generate_mcp_docs.py +0 -0
  35. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/generate_mcp_tools.py +0 -0
  36. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/generate_models.py +0 -0
  37. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/generate_readme_reference.py +0 -0
  38. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/generate_resources.py +0 -0
  39. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/scripts/smoketest_streamable_http.py +0 -0
  40. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/server.json +0 -0
  41. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/ai/__init__.py +0 -0
  42. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/ai/content_generator.py +0 -0
  43. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/ai/protocols.py +0 -0
  44. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/ai/providers/__init__.py +0 -0
  45. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/ai/providers/openai.py +0 -0
  46. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/client/__init__.py +0 -0
  47. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/client/base.py +0 -0
  48. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/client/exceptions.py +0 -0
  49. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/client/late_client.py +0 -0
  50. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/client/rate_limiter.py +0 -0
  51. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/enums.py +0 -0
  52. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/__init__.py +0 -0
  53. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/__main__.py +0 -0
  54. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/auth.py +0 -0
  55. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/config.py +0 -0
  56. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/constants.py +0 -0
  57. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/http_server.py +0 -0
  58. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/server.py +0 -0
  59. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/mcp/tool_definitions.py +0 -0
  60. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/models/__init__.py +0 -0
  61. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/models/_generated/__init__.py +0 -0
  62. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/models/responses.py +0 -0
  63. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/pipelines/__init__.py +0 -0
  64. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/pipelines/cross_poster.py +0 -0
  65. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/pipelines/csv_scheduler.py +0 -0
  66. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/__init__.py +0 -0
  67. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/__init__.py +0 -0
  68. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/account_groups.py +0 -0
  69. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/account_settings.py +0 -0
  70. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/accounts.py +0 -0
  71. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ad_accounts.py +0 -0
  72. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ad_audiences.py +0 -0
  73. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ad_campaigns.py +0 -0
  74. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ad_creatives.py +0 -0
  75. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ad_insights.py +0 -0
  76. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ad_targeting.py +0 -0
  77. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/ads.py +0 -0
  78. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/analytics.py +0 -0
  79. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/api_keys.py +0 -0
  80. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/broadcasts.py +0 -0
  81. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/calls.py +0 -0
  82. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/comment_automations.py +0 -0
  83. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/comments.py +0 -0
  84. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/connect.py +0 -0
  85. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/contacts.py +0 -0
  86. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/conversions.py +0 -0
  87. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/custom_fields.py +0 -0
  88. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/discord.py +0 -0
  89. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_attributes.py +0 -0
  90. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_food_menus.py +0 -0
  91. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_location_details.py +0 -0
  92. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_media.py +0 -0
  93. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_place_actions.py +0 -0
  94. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_services.py +0 -0
  95. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/gmb_verifications.py +0 -0
  96. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/inbox.py +0 -0
  97. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/inbox_analytics.py +0 -0
  98. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/instagram.py +0 -0
  99. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/invites.py +0 -0
  100. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/logs.py +0 -0
  101. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/media.py +0 -0
  102. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/mentions.py +0 -0
  103. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/messages.py +0 -0
  104. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/messaging_ads.py +0 -0
  105. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/phone_numbers.py +0 -0
  106. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/posts.py +0 -0
  107. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/profiles.py +0 -0
  108. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/queue.py +0 -0
  109. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/reach_and_frequency.py +0 -0
  110. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/reddit.py +0 -0
  111. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/reviews.py +0 -0
  112. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/sequences.py +0 -0
  113. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/sms.py +0 -0
  114. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/tools.py +0 -0
  115. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/tracking_tags.py +0 -0
  116. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/twitter_engagement.py +0 -0
  117. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/usage.py +0 -0
  118. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/users.py +0 -0
  119. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/validate.py +0 -0
  120. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/verify.py +0 -0
  121. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/voice.py +0 -0
  122. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/webhooks.py +0 -0
  123. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp.py +0 -0
  124. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp_calling.py +0 -0
  125. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp_flows.py +0 -0
  126. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp_phone_numbers.py +0 -0
  127. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp_sandbox.py +0 -0
  128. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/whatsapp_templates.py +0 -0
  129. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/_generated/workflows.py +0 -0
  130. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/accounts.py +0 -0
  131. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/ads.py +0 -0
  132. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/analytics.py +0 -0
  133. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/base.py +0 -0
  134. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/media.py +0 -0
  135. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/posts.py +0 -0
  136. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/profiles.py +0 -0
  137. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/queue.py +0 -0
  138. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/tools.py +0 -0
  139. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/resources/users.py +0 -0
  140. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/__init__.py +0 -0
  141. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/config.py +0 -0
  142. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/direct.py +0 -0
  143. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/protocols.py +0 -0
  144. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/smart.py +0 -0
  145. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/utils.py +0 -0
  146. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/vercel/__init__.py +0 -0
  147. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/vercel/client.py +0 -0
  148. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/late/upload/vercel/uploader.py +0 -0
  149. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/src/zernio/__init__.py +0 -0
  150. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/__init__.py +0 -0
  151. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/conftest.py +0 -0
  152. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/test_client.py +0 -0
  153. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/test_exhaustive.py +0 -0
  154. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/test_integration.py +0 -0
  155. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/test_patch_methods.py +0 -0
  156. {zernio_sdk-1.4.332 → zernio_sdk-1.4.334}/tests/test_resolve_account.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zernio-sdk
3
- Version: 1.4.332
3
+ Version: 1.4.334
4
4
  Summary: The official Python library for the Zernio API
5
5
  Project-URL: Homepage, https://zernio.com
6
6
  Project-URL: Documentation, https://docs.zernio.com
@@ -28166,16 +28166,20 @@ paths:
28166
28166
  type: array
28167
28167
  description: >
28168
28168
  Live inventory grouped by area code, largest stock
28169
- first. Empty when out of stock (or the area lookup
28170
- failed). Pass a chosen `ndc` as `areaCode` on POST
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: 'Human-readable area name, e.g. "Sao Paulo".' }
28178
- count: { type: integer, description: Deliverable numbers seen in this area on the latest inventory page. }
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. Empty when out of stock (or the area lookup
28536
- failed). Pass a chosen `ndc` as `areaCode` on POST
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: 'Human-readable area name, e.g. "Sao Paulo".' }
28544
- count: { type: integer, description: Deliverable numbers seen in this area on the latest inventory page. }
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 persisted Meta Lead Gen leads for your team, newest-first, with
37153
- keyset pagination on `cursor`. Leads are ingested in real time from the
37154
- `leadgen` webhook. Requires the Ads add-on.
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 Meta timestamp. }
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: Lists the Lead Gen forms owned by the connected Facebook Page. Requires the Ads add-on.
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 on the connected Facebook Page (POST
37226
- /{page-id}/leadgen_forms). NOT idempotent a retry creates a second
37227
- form. Prefilled question types (EMAIL, PHONE, FULL_NAME, …) must omit
37228
- label/key; CUSTOM questions require both. Requires the Ads add-on.
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, questions, privacyPolicyUrl]
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: Meta has no hard delete for forms; this archives the form (status=ARCHIVED).
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.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "zernio-sdk"
3
- version = "1.4.332"
3
+ version = "1.4.334"
4
4
  description = "The official Python library for the Zernio API"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -42,7 +42,7 @@ from .enums import (
42
42
  Visibility,
43
43
  )
44
44
 
45
- __version__ = "1.4.332"
45
+ __version__ = "1.4.334"
46
46
 
47
47
  __all__ = [
48
48
  # Client
@@ -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 Meta timestamp.
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, limit: int = 25, cursor: str | None = None
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, limit=limit, cursor=cursor
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: (required)
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(
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: openapi.yaml
3
- # timestamp: 2026-07-27T09:31:44+00:00
3
+ # timestamp: 2026-07-27T12:11:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -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, account_id: str, *, limit: int | None = 25, cursor: str | None = None
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, account_id: str, *, limit: int | None = 25, cursor: str | None = None
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
 
@@ -2389,7 +2389,7 @@ wheels = [
2389
2389
 
2390
2390
  [[package]]
2391
2391
  name = "zernio-sdk"
2392
- version = "1.4.331"
2392
+ version = "1.4.333"
2393
2393
  source = { editable = "." }
2394
2394
  dependencies = [
2395
2395
  { name = "httpx" },
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