lockally 0.1.0 → 0.3.0

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 (571) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +166 -117
  3. data/docs/AdminApi.md +33 -33
  4. data/docs/{V1AdminLoginPost200Response.md → AdminLogin200Response.md} +2 -2
  5. data/docs/{V1AdminLoginPostRequest.md → AdminLoginRequest.md} +2 -2
  6. data/docs/AdminsApi.md +76 -76
  7. data/docs/AgentSendResult.md +22 -0
  8. data/docs/AgentsApi.md +247 -247
  9. data/docs/AiApi.md +69 -69
  10. data/docs/AiConfig.md +26 -0
  11. data/docs/AiConfigUpdate.md +20 -0
  12. data/docs/AliasesApi.md +59 -59
  13. data/docs/ApiKeysApi.md +59 -59
  14. data/docs/BatchResult.md +1 -1
  15. data/docs/Calendar.md +8 -0
  16. data/docs/CalendarsApi.md +73 -0
  17. data/docs/ContactLookup.md +26 -0
  18. data/docs/ContactLookupContact.md +28 -0
  19. data/docs/ContactLookupHistory.md +22 -0
  20. data/docs/CreateAiUnitsCheckout200Response.md +22 -0
  21. data/docs/{V1AliasesPostRequest.md → CreateAliasRequest.md} +2 -2
  22. data/docs/{V1ApiKeysPost201Response.md → CreateApiKey201Response.md} +2 -2
  23. data/docs/CreateApiKeyRequest.md +22 -0
  24. data/docs/{V1DomainsPostRequest.md → CreateDomainRequest.md} +2 -2
  25. data/docs/{V1MailboxesPostRequest.md → CreateMailboxRequest.md} +2 -2
  26. data/docs/{V1SuppressionsPostRequest.md → CreateSuppressionRequest.md} +2 -2
  27. data/docs/{V1WebhooksPostRequest.md → CreateWebhookRequest.md} +2 -2
  28. data/docs/DomainsApi.md +339 -60
  29. data/docs/Draft.md +44 -0
  30. data/docs/DraftList.md +18 -0
  31. data/docs/DraftResult.md +26 -0
  32. data/docs/DraftsApi.md +115 -115
  33. data/docs/{V1MailboxesEmailExportPost201Response.md → ExportMailbox201Response.md} +2 -2
  34. data/docs/GetCalendarOverview200Response.md +34 -0
  35. data/docs/GetCalendarOverview200ResponseActivityInner.md +24 -0
  36. data/docs/{V1AdminMeGet200Response.md → GetCurrentAdmin200Response.md} +2 -2
  37. data/docs/{V1UsageGet200Response.md → GetUsage200Response.md} +2 -2
  38. data/docs/GetUserInsights200Response.md +2 -0
  39. data/docs/HealthApi.md +11 -11
  40. data/docs/{HealthzGet200Response.md → HealthCheck200Response.md} +2 -2
  41. data/docs/Inbox.md +24 -0
  42. data/docs/InboxList.md +18 -0
  43. data/docs/{V1AdminsPostRequest.md → InviteAdminRequest.md} +2 -2
  44. data/docs/{V1AdminsGet200Response.md → ListAdmins200Response.md} +2 -2
  45. data/docs/{V1AliasesGet200Response.md → ListAliases200Response.md} +2 -2
  46. data/docs/{V1ApiKeysGet200Response.md → ListApiKeys200Response.md} +2 -2
  47. data/docs/{V1DomainsGet200Response.md → ListDomains200Response.md} +2 -2
  48. data/docs/{V1MailboxesGet200Response.md → ListMailboxes200Response.md} +2 -2
  49. data/docs/{V1MessagesGet200Response.md → ListMessages200Response.md} +2 -2
  50. data/docs/{V1SuppressionsGet200Response.md → ListSuppressions200Response.md} +2 -2
  51. data/docs/{V1TemplatesGet200Response.md → ListTemplates200Response.md} +2 -2
  52. data/docs/{V1VacationGet200Response.md → ListVacationResponders200Response.md} +2 -2
  53. data/docs/{V1WebhooksGet200Response.md → ListWebhooks200Response.md} +2 -2
  54. data/docs/MailboxGrant.md +20 -0
  55. data/docs/MailboxGrantList.md +18 -0
  56. data/docs/MailboxesApi.md +204 -204
  57. data/docs/MarkReadResult.md +18 -0
  58. data/docs/MessageDetail.md +52 -0
  59. data/docs/ReturnPath.md +28 -0
  60. data/docs/ReturnPathCheck.md +20 -0
  61. data/docs/SendApi.md +121 -121
  62. data/docs/SendEmail200Response.md +24 -0
  63. data/docs/{V1SendPost202Response.md → SendEmail202Response.md} +2 -2
  64. data/docs/{V1SendBatchPost200Response.md → SendEmailBatch200Response.md} +2 -2
  65. data/docs/{V1SendBatchPostRequest.md → SendEmailBatchRequest.md} +2 -2
  66. data/docs/{V1SendPostRequest.md → SendEmailRequest.md} +7 -3
  67. data/docs/{V1SendPostRequestAttachmentsInner.md → SendEmailRequestAttachmentsInner.md} +2 -2
  68. data/docs/SendMessage.md +5 -1
  69. data/docs/{V1MailboxesEmailVacationPutRequest.md → SetVacationResponderRequest.md} +2 -2
  70. data/docs/SignupApi.md +4 -4
  71. data/docs/SimulatedInbound.md +22 -0
  72. data/docs/{V1InboxesMailboxMessagesPostRequest.md → StartConversationRequest.md} +2 -2
  73. data/docs/SuppressionsApi.md +75 -75
  74. data/docs/TemplatesApi.md +67 -67
  75. data/docs/TenantApi.md +20 -20
  76. data/docs/TestApi.md +11 -11
  77. data/docs/Thread.md +22 -0
  78. data/docs/ThreadClassification.md +22 -0
  79. data/docs/ThreadList.md +20 -0
  80. data/docs/ThreadMessage.md +40 -0
  81. data/docs/ThreadMessageBody.md +42 -0
  82. data/docs/ThreadMessageBodyAllOfBody.md +22 -0
  83. data/docs/ThreadSummary.md +28 -0
  84. data/docs/{V1AdminsIdPatchRequest.md → UpdateAdminRequest.md} +2 -2
  85. data/docs/{V1MailboxesEmailPatchRequest.md → UpdateMailboxRequest.md} +2 -2
  86. data/docs/{V1WebhooksIdPatchRequest.md → UpdateWebhookRequest.md} +2 -2
  87. data/docs/WebhooksApi.md +63 -63
  88. data/docs/Whoami.md +24 -0
  89. data/lib/lockally/api/add_ons_api.rb +1 -1
  90. data/lib/lockally/api/admin_api.rb +31 -31
  91. data/lib/lockally/api/admins_api.rb +90 -90
  92. data/lib/lockally/api/agents_api.rb +310 -310
  93. data/lib/lockally/api/ai_api.rb +70 -70
  94. data/lib/lockally/api/aliases_api.rb +65 -65
  95. data/lib/lockally/api/api_keys_api.rb +67 -67
  96. data/lib/lockally/api/billing_api.rb +1 -1
  97. data/lib/lockally/api/calendars_api.rb +64 -1
  98. data/lib/lockally/api/contact_lists_api.rb +1 -1
  99. data/lib/lockally/api/contacts_api.rb +1 -1
  100. data/lib/lockally/api/dashboard_api.rb +1 -1
  101. data/lib/lockally/api/directory_api.rb +1 -1
  102. data/lib/lockally/api/distribution_lists_api.rb +1 -1
  103. data/lib/lockally/api/domains_api.rb +314 -62
  104. data/lib/lockally/api/drafts_api.rb +141 -141
  105. data/lib/lockally/api/encryption_api.rb +1 -1
  106. data/lib/lockally/api/health_api.rb +10 -10
  107. data/lib/lockally/api/ip_pools_api.rb +1 -1
  108. data/lib/lockally/api/mailboxes_api.rb +236 -236
  109. data/lib/lockally/api/migrations_api.rb +1 -1
  110. data/lib/lockally/api/resources_api.rb +1 -1
  111. data/lib/lockally/api/send_api.rb +147 -147
  112. data/lib/lockally/api/signup_api.rb +4 -4
  113. data/lib/lockally/api/suppressions_api.rb +88 -88
  114. data/lib/lockally/api/templates_api.rb +70 -70
  115. data/lib/lockally/api/tenant_api.rb +16 -16
  116. data/lib/lockally/api/test_api.rb +10 -10
  117. data/lib/lockally/api/users_api.rb +1 -1
  118. data/lib/lockally/api/webhooks_api.rb +74 -74
  119. data/lib/lockally/api_client.rb +1 -1
  120. data/lib/lockally/api_error.rb +1 -1
  121. data/lib/lockally/api_model_base.rb +1 -1
  122. data/lib/lockally/configuration.rb +1 -1
  123. data/lib/lockally/models/activate_add_on200_response.rb +1 -1
  124. data/lib/lockally/models/add_calendar_member_request.rb +1 -1
  125. data/lib/lockally/models/add_contact_list_member_request.rb +1 -1
  126. data/lib/lockally/models/add_on.rb +1 -1
  127. data/lib/lockally/models/add_shared_member_request.rb +1 -1
  128. data/lib/lockally/models/admin.rb +1 -1
  129. data/lib/lockally/models/admin_full.rb +1 -1
  130. data/lib/lockally/models/{v1_admin_login_post200_response.rb → admin_login200_response.rb} +4 -4
  131. data/lib/lockally/models/{v1_admin_login_post_request.rb → admin_login_request.rb} +4 -4
  132. data/lib/lockally/models/agent_send_result.rb +184 -0
  133. data/lib/lockally/models/ai_config.rb +242 -0
  134. data/lib/lockally/models/ai_config_update.rb +214 -0
  135. data/lib/lockally/models/api_key.rb +1 -1
  136. data/lib/lockally/models/audit_event.rb +1 -1
  137. data/lib/lockally/models/batch_lookup_public_keys200_response.rb +1 -1
  138. data/lib/lockally/models/batch_lookup_public_keys200_response_data_inner.rb +1 -1
  139. data/lib/lockally/models/batch_result.rb +4 -3
  140. data/lib/lockally/models/billing_status.rb +1 -1
  141. data/lib/lockally/models/calendar.rb +68 -4
  142. data/lib/lockally/models/calendar_event.rb +1 -1
  143. data/lib/lockally/models/calendar_integration.rb +1 -1
  144. data/lib/lockally/models/calendar_member.rb +1 -1
  145. data/lib/lockally/models/calendar_policies.rb +1 -1
  146. data/lib/lockally/models/contact.rb +1 -1
  147. data/lib/lockally/models/contact_list.rb +1 -1
  148. data/lib/lockally/models/contact_lookup.rb +235 -0
  149. data/lib/lockally/models/contact_lookup_contact.rb +192 -0
  150. data/lib/lockally/models/contact_lookup_history.rb +166 -0
  151. data/lib/lockally/models/create_ai_units_checkout200_response.rb +199 -0
  152. data/lib/lockally/models/{v1_aliases_post_request.rb → create_alias_request.rb} +4 -4
  153. data/lib/lockally/models/{v1_api_keys_post201_response.rb → create_api_key201_response.rb} +4 -4
  154. data/lib/lockally/models/{v1_api_keys_post_request.rb → create_api_key_request.rb} +20 -8
  155. data/lib/lockally/models/create_billing_checkout200_response.rb +1 -1
  156. data/lib/lockally/models/create_billing_checkout_request.rb +1 -1
  157. data/lib/lockally/models/create_calendar_event_request.rb +1 -1
  158. data/lib/lockally/models/create_calendar_integration_request.rb +1 -1
  159. data/lib/lockally/models/create_calendar_request.rb +1 -1
  160. data/lib/lockally/models/create_contact_list_request.rb +1 -1
  161. data/lib/lockally/models/create_contact_request.rb +1 -1
  162. data/lib/lockally/models/create_dedicated_ip_request_request.rb +1 -1
  163. data/lib/lockally/models/create_distribution_list_request.rb +1 -1
  164. data/lib/lockally/models/{v1_domains_post_request.rb → create_domain_request.rb} +4 -4
  165. data/lib/lockally/models/create_encryption_key201_response.rb +1 -1
  166. data/lib/lockally/models/create_encryption_key_request.rb +1 -1
  167. data/lib/lockally/models/create_encryption_recovery_request.rb +1 -1
  168. data/lib/lockally/models/{v1_mailboxes_post_request.rb → create_mailbox_request.rb} +4 -4
  169. data/lib/lockally/models/create_migration_credential_request.rb +1 -1
  170. data/lib/lockally/models/create_migration_credential_request_credentials.rb +1 -1
  171. data/lib/lockally/models/create_migration_request.rb +1 -1
  172. data/lib/lockally/models/create_resource_request.rb +1 -1
  173. data/lib/lockally/models/{v1_suppressions_post_request.rb → create_suppression_request.rb} +4 -4
  174. data/lib/lockally/models/create_units_checkout200_response.rb +1 -1
  175. data/lib/lockally/models/create_units_checkout_request.rb +1 -1
  176. data/lib/lockally/models/create_user_request.rb +1 -1
  177. data/lib/lockally/models/{v1_webhooks_post_request.rb → create_webhook_request.rb} +4 -4
  178. data/lib/lockally/models/dedicated_ip_request.rb +1 -1
  179. data/lib/lockally/models/directory_permissions.rb +1 -1
  180. data/lib/lockally/models/discover_migration202_response.rb +1 -1
  181. data/lib/lockally/models/distribution_list_detail.rb +1 -1
  182. data/lib/lockally/models/distribution_list_summary.rb +1 -1
  183. data/lib/lockally/models/dns_record.rb +1 -1
  184. data/lib/lockally/models/domain.rb +1 -1
  185. data/lib/lockally/models/draft.rb +413 -0
  186. data/lib/lockally/models/draft_list.rb +166 -0
  187. data/lib/lockally/models/draft_result.rb +260 -0
  188. data/lib/lockally/models/{v1_mailboxes_email_export_post201_response.rb → export_mailbox201_response.rb} +4 -4
  189. data/lib/lockally/models/gal_settings.rb +1 -1
  190. data/lib/lockally/models/get_add_on_status200_response.rb +1 -1
  191. data/lib/lockally/models/get_audit_summary200_response.rb +1 -1
  192. data/lib/lockally/models/get_calendar_overview200_response.rb +228 -0
  193. data/lib/lockally/models/get_calendar_overview200_response_activity_inner.rb +174 -0
  194. data/lib/lockally/models/get_calendar_security200_response.rb +1 -1
  195. data/lib/lockally/models/get_calendar_security200_response_alerts_inner.rb +1 -1
  196. data/lib/lockally/models/get_calendar_security200_response_delegated_access_inner.rb +1 -1
  197. data/lib/lockally/models/get_calendar_security200_response_external_sharing.rb +1 -1
  198. data/lib/lockally/models/get_calendar_security200_response_public_calendar_list_inner.rb +1 -1
  199. data/lib/lockally/models/get_contact_list200_response.rb +1 -1
  200. data/lib/lockally/models/get_contact_list200_response_members_inner.rb +1 -1
  201. data/lib/lockally/models/get_contact_lists200_response.rb +1 -1
  202. data/lib/lockally/models/get_contact_lists200_response_data_inner.rb +1 -1
  203. data/lib/lockally/models/{v1_admin_me_get200_response.rb → get_current_admin200_response.rb} +4 -4
  204. data/lib/lockally/models/get_directory_activity200_response.rb +1 -1
  205. data/lib/lockally/models/get_directory_activity200_response_data_inner.rb +1 -1
  206. data/lib/lockally/models/get_directory_stats200_response.rb +1 -1
  207. data/lib/lockally/models/get_domains_status200_response.rb +1 -1
  208. data/lib/lockally/models/get_domains_status200_response_domains_inner.rb +1 -1
  209. data/lib/lockally/models/get_domains_status200_response_domains_inner_checks_inner.rb +1 -1
  210. data/lib/lockally/models/get_encryption_key200_response.rb +1 -1
  211. data/lib/lockally/models/get_integrations_summary200_response.rb +1 -1
  212. data/lib/lockally/models/get_integrations_summary200_response_api_keys_inner.rb +1 -1
  213. data/lib/lockally/models/get_integrations_summary200_response_webhooks_inner.rb +1 -1
  214. data/lib/lockally/models/get_ip_assignment200_response.rb +1 -1
  215. data/lib/lockally/models/get_security200_response.rb +1 -1
  216. data/lib/lockally/models/get_security200_response_alerts_inner.rb +1 -1
  217. data/lib/lockally/models/get_security200_response_stats_inner.rb +1 -1
  218. data/lib/lockally/models/get_storage200_response.rb +1 -1
  219. data/lib/lockally/models/get_storage200_response_top_mailboxes_inner.rb +1 -1
  220. data/lib/lockally/models/get_storage200_response_top_messages_inner.rb +1 -1
  221. data/lib/lockally/models/{v1_usage_get200_response.rb → get_usage200_response.rb} +4 -4
  222. data/lib/lockally/models/get_user_insights200_response.rb +12 -2
  223. data/lib/lockally/models/{healthz_get200_response.rb → health_check200_response.rb} +4 -4
  224. data/lib/lockally/models/inbox.rb +225 -0
  225. data/lib/lockally/models/inbox_list.rb +166 -0
  226. data/lib/lockally/models/{v1_admins_post_request.rb → invite_admin_request.rb} +4 -4
  227. data/lib/lockally/models/list_add_ons200_response.rb +1 -1
  228. data/lib/lockally/models/{v1_api_keys_get200_response.rb → list_admins200_response.rb} +5 -5
  229. data/lib/lockally/models/list_aliases200_response.rb +166 -0
  230. data/lib/lockally/models/{v1_admins_get200_response.rb → list_api_keys200_response.rb} +5 -5
  231. data/lib/lockally/models/list_calendar_events200_response.rb +1 -1
  232. data/lib/lockally/models/list_calendar_integrations200_response.rb +1 -1
  233. data/lib/lockally/models/list_calendar_members200_response.rb +1 -1
  234. data/lib/lockally/models/list_calendars200_response.rb +1 -1
  235. data/lib/lockally/models/list_contact_lists200_response.rb +1 -1
  236. data/lib/lockally/models/list_contacts200_response.rb +1 -1
  237. data/lib/lockally/models/list_dedicated_ip_requests200_response.rb +1 -1
  238. data/lib/lockally/models/list_distribution_lists200_response.rb +1 -1
  239. data/lib/lockally/models/{v1_domains_get200_response.rb → list_domains200_response.rb} +4 -4
  240. data/lib/lockally/models/{v1_mailboxes_get200_response.rb → list_mailboxes200_response.rb} +4 -4
  241. data/lib/lockally/models/{v1_messages_get200_response.rb → list_messages200_response.rb} +4 -4
  242. data/lib/lockally/models/list_migration_credentials200_response.rb +1 -1
  243. data/lib/lockally/models/list_migration_events200_response.rb +1 -1
  244. data/lib/lockally/models/list_migration_mailboxes200_response.rb +1 -1
  245. data/lib/lockally/models/list_migrations200_response.rb +1 -1
  246. data/lib/lockally/models/list_resources200_response.rb +1 -1
  247. data/lib/lockally/models/list_shared_members200_response.rb +1 -1
  248. data/lib/lockally/models/{v1_suppressions_get200_response.rb → list_suppressions200_response.rb} +4 -4
  249. data/lib/lockally/models/{v1_send_batch_post200_response.rb → list_templates200_response.rb} +5 -5
  250. data/lib/lockally/models/list_users200_response.rb +1 -1
  251. data/lib/lockally/models/{v1_vacation_get200_response.rb → list_vacation_responders200_response.rb} +4 -4
  252. data/lib/lockally/models/{v1_aliases_get200_response.rb → list_webhooks200_response.rb} +5 -5
  253. data/lib/lockally/models/mailbox.rb +1 -1
  254. data/lib/lockally/models/mailbox_grant.rb +156 -0
  255. data/lib/lockally/models/mailbox_grant_list.rb +166 -0
  256. data/lib/lockally/models/map_migration_request.rb +1 -1
  257. data/lib/lockally/models/map_migration_request_mappings_inner.rb +1 -1
  258. data/lib/lockally/models/mark_read_result.rb +147 -0
  259. data/lib/lockally/models/message.rb +1 -1
  260. data/lib/lockally/models/message_detail.rb +479 -0
  261. data/lib/lockally/models/message_stats.rb +1 -1
  262. data/lib/lockally/models/message_stats_counts.rb +1 -1
  263. data/lib/lockally/models/message_stats_rates.rb +1 -1
  264. data/lib/lockally/models/message_stats_window.rb +1 -1
  265. data/lib/lockally/models/migration.rb +1 -1
  266. data/lib/lockally/models/migration_credential.rb +1 -1
  267. data/lib/lockally/models/migration_event.rb +1 -1
  268. data/lib/lockally/models/migration_mailbox.rb +1 -1
  269. data/lib/lockally/models/migration_progress.rb +1 -1
  270. data/lib/lockally/models/migration_progress_mailboxes_inner.rb +1 -1
  271. data/lib/lockally/models/migration_settings.rb +1 -1
  272. data/lib/lockally/models/model_alias.rb +1 -1
  273. data/lib/lockally/models/plan_catalog_entry.rb +1 -1
  274. data/lib/lockally/models/problem.rb +1 -1
  275. data/lib/lockally/models/replace_distribution_list_members200_response.rb +1 -1
  276. data/lib/lockally/models/replace_distribution_list_members_request.rb +1 -1
  277. data/lib/lockally/models/resource.rb +1 -1
  278. data/lib/lockally/models/return_path.rb +269 -0
  279. data/lib/lockally/models/return_path_check.rb +157 -0
  280. data/lib/lockally/models/rotate_encryption_key_request.rb +1 -1
  281. data/lib/lockally/models/send_email200_response.rb +218 -0
  282. data/lib/lockally/models/{v1_send_post202_response.rb → send_email202_response.rb} +4 -4
  283. data/lib/lockally/models/{v1_templates_get200_response.rb → send_email_batch200_response.rb} +5 -5
  284. data/lib/lockally/models/{v1_send_batch_post_request.rb → send_email_batch_request.rb} +4 -4
  285. data/lib/lockally/models/{v1_send_post_request.rb → send_email_request.rb} +26 -6
  286. data/lib/lockally/models/{v1_send_post_request_attachments_inner.rb → send_email_request_attachments_inner.rb} +4 -4
  287. data/lib/lockally/models/send_message.rb +23 -3
  288. data/lib/lockally/models/{v1_mailboxes_email_vacation_put_request.rb → set_vacation_responder_request.rb} +4 -4
  289. data/lib/lockally/models/shared_member.rb +1 -1
  290. data/lib/lockally/models/signup_request.rb +1 -1
  291. data/lib/lockally/models/simulated_inbound.rb +167 -0
  292. data/lib/lockally/models/{v1_inboxes_mailbox_messages_post_request.rb → start_conversation_request.rb} +4 -4
  293. data/lib/lockally/models/start_migration202_response.rb +1 -1
  294. data/lib/lockally/models/suppression.rb +1 -1
  295. data/lib/lockally/models/template.rb +1 -1
  296. data/lib/lockally/models/template_input.rb +1 -1
  297. data/lib/lockally/models/tenant.rb +1 -1
  298. data/lib/lockally/models/thread.rb +219 -0
  299. data/lib/lockally/models/thread_classification.rb +186 -0
  300. data/lib/lockally/models/thread_list.rb +192 -0
  301. data/lib/lockally/models/thread_message.rb +397 -0
  302. data/lib/lockally/models/thread_message_body.rb +413 -0
  303. data/lib/lockally/models/thread_message_body_all_of_body.rb +165 -0
  304. data/lib/lockally/models/thread_summary.rb +280 -0
  305. data/lib/lockally/models/unit_bundle.rb +1 -1
  306. data/lib/lockally/models/{v1_admins_id_patch_request.rb → update_admin_request.rb} +4 -4
  307. data/lib/lockally/models/update_calendar_event_request.rb +1 -1
  308. data/lib/lockally/models/update_calendar_integration_request.rb +1 -1
  309. data/lib/lockally/models/update_calendar_member_request.rb +1 -1
  310. data/lib/lockally/models/update_calendar_policies_request.rb +1 -1
  311. data/lib/lockally/models/update_calendar_request.rb +1 -1
  312. data/lib/lockally/models/update_contact_list_request.rb +1 -1
  313. data/lib/lockally/models/update_contact_request.rb +1 -1
  314. data/lib/lockally/models/update_directory_permissions_request.rb +1 -1
  315. data/lib/lockally/models/update_gal_settings_request.rb +1 -1
  316. data/lib/lockally/models/{v1_mailboxes_email_patch_request.rb → update_mailbox_request.rb} +4 -4
  317. data/lib/lockally/models/update_migration_mailbox_request.rb +1 -1
  318. data/lib/lockally/models/update_migration_request.rb +1 -1
  319. data/lib/lockally/models/update_resource_request.rb +1 -1
  320. data/lib/lockally/models/update_user_request.rb +1 -1
  321. data/lib/lockally/models/{v1_webhooks_id_patch_request.rb → update_webhook_request.rb} +4 -4
  322. data/lib/lockally/models/user.rb +1 -1
  323. data/lib/lockally/models/user_event.rb +1 -1
  324. data/lib/lockally/models/vacation_params.rb +1 -1
  325. data/lib/lockally/models/vacation_responder.rb +1 -1
  326. data/lib/lockally/models/webhook.rb +1 -1
  327. data/lib/lockally/models/whoami.rb +177 -0
  328. data/lib/lockally/version.rb +2 -2
  329. data/lib/lockally.rb +65 -35
  330. data/lockally.gemspec +2 -2
  331. data/spec/api/add_ons_api_spec.rb +1 -1
  332. data/spec/api/admin_api_spec.rb +10 -10
  333. data/spec/api/admins_api_spec.rb +23 -23
  334. data/spec/api/agents_api_spec.rb +79 -79
  335. data/spec/api/ai_api_spec.rb +23 -23
  336. data/spec/api/aliases_api_spec.rb +17 -17
  337. data/spec/api/api_keys_api_spec.rb +18 -18
  338. data/spec/api/billing_api_spec.rb +1 -1
  339. data/spec/api/calendars_api_spec.rb +15 -1
  340. data/spec/api/contact_lists_api_spec.rb +1 -1
  341. data/spec/api/contacts_api_spec.rb +1 -1
  342. data/spec/api/dashboard_api_spec.rb +1 -1
  343. data/spec/api/directory_api_spec.rb +1 -1
  344. data/spec/api/distribution_lists_api_spec.rb +1 -1
  345. data/spec/api/domains_api_spec.rb +66 -18
  346. data/spec/api/drafts_api_spec.rb +39 -39
  347. data/spec/api/encryption_api_spec.rb +1 -1
  348. data/spec/api/health_api_spec.rb +4 -4
  349. data/spec/api/ip_pools_api_spec.rb +1 -1
  350. data/spec/api/mailboxes_api_spec.rb +63 -63
  351. data/spec/api/migrations_api_spec.rb +1 -1
  352. data/spec/api/resources_api_spec.rb +1 -1
  353. data/spec/api/send_api_spec.rb +37 -37
  354. data/spec/api/signup_api_spec.rb +2 -2
  355. data/spec/api/suppressions_api_spec.rb +19 -19
  356. data/spec/api/templates_api_spec.rb +18 -18
  357. data/spec/api/tenant_api_spec.rb +6 -6
  358. data/spec/api/test_api_spec.rb +4 -4
  359. data/spec/api/users_api_spec.rb +1 -1
  360. data/spec/api/webhooks_api_spec.rb +20 -20
  361. data/spec/models/activate_add_on200_response_spec.rb +1 -1
  362. data/spec/models/add_calendar_member_request_spec.rb +1 -1
  363. data/spec/models/add_contact_list_member_request_spec.rb +1 -1
  364. data/spec/models/add_on_spec.rb +1 -1
  365. data/spec/models/add_shared_member_request_spec.rb +1 -1
  366. data/spec/models/admin_full_spec.rb +1 -1
  367. data/spec/models/{v1_admin_login_post200_response_spec.rb → admin_login200_response_spec.rb} +7 -7
  368. data/spec/models/{v1_admin_login_post_request_spec.rb → admin_login_request_spec.rb} +7 -7
  369. data/spec/models/admin_spec.rb +1 -1
  370. data/spec/models/agent_send_result_spec.rb +48 -0
  371. data/spec/models/ai_config_spec.rb +64 -0
  372. data/spec/models/{v1_api_keys_post_request_spec.rb → ai_config_update_spec.rb} +13 -13
  373. data/spec/models/api_key_spec.rb +1 -1
  374. data/spec/models/audit_event_spec.rb +1 -1
  375. data/spec/models/batch_lookup_public_keys200_response_data_inner_spec.rb +1 -1
  376. data/spec/models/batch_lookup_public_keys200_response_spec.rb +1 -1
  377. data/spec/models/batch_result_spec.rb +2 -2
  378. data/spec/models/billing_status_spec.rb +1 -1
  379. data/spec/models/calendar_event_spec.rb +1 -1
  380. data/spec/models/calendar_integration_spec.rb +1 -1
  381. data/spec/models/calendar_member_spec.rb +1 -1
  382. data/spec/models/calendar_policies_spec.rb +1 -1
  383. data/spec/models/calendar_spec.rb +34 -2
  384. data/spec/models/contact_list_spec.rb +1 -1
  385. data/spec/models/contact_lookup_contact_spec.rb +66 -0
  386. data/spec/models/contact_lookup_history_spec.rb +48 -0
  387. data/spec/models/contact_lookup_spec.rb +60 -0
  388. data/spec/models/contact_spec.rb +1 -1
  389. data/spec/models/create_ai_units_checkout200_response_spec.rb +48 -0
  390. data/spec/models/{v1_aliases_post_request_spec.rb → create_alias_request_spec.rb} +7 -7
  391. data/spec/models/{v1_api_keys_post201_response_spec.rb → create_api_key201_response_spec.rb} +7 -7
  392. data/spec/models/create_api_key_request_spec.rb +52 -0
  393. data/spec/models/create_billing_checkout200_response_spec.rb +1 -1
  394. data/spec/models/create_billing_checkout_request_spec.rb +1 -1
  395. data/spec/models/create_calendar_event_request_spec.rb +1 -1
  396. data/spec/models/create_calendar_integration_request_spec.rb +1 -1
  397. data/spec/models/create_calendar_request_spec.rb +1 -1
  398. data/spec/models/create_contact_list_request_spec.rb +1 -1
  399. data/spec/models/create_contact_request_spec.rb +1 -1
  400. data/spec/models/create_dedicated_ip_request_request_spec.rb +1 -1
  401. data/spec/models/create_distribution_list_request_spec.rb +1 -1
  402. data/spec/models/{v1_domains_post_request_spec.rb → create_domain_request_spec.rb} +7 -7
  403. data/spec/models/create_encryption_key201_response_spec.rb +1 -1
  404. data/spec/models/create_encryption_key_request_spec.rb +1 -1
  405. data/spec/models/create_encryption_recovery_request_spec.rb +1 -1
  406. data/spec/models/{v1_mailboxes_post_request_spec.rb → create_mailbox_request_spec.rb} +7 -7
  407. data/spec/models/create_migration_credential_request_credentials_spec.rb +1 -1
  408. data/spec/models/create_migration_credential_request_spec.rb +1 -1
  409. data/spec/models/create_migration_request_spec.rb +1 -1
  410. data/spec/models/create_resource_request_spec.rb +1 -1
  411. data/spec/models/{v1_suppressions_post_request_spec.rb → create_suppression_request_spec.rb} +7 -7
  412. data/spec/models/create_units_checkout200_response_spec.rb +1 -1
  413. data/spec/models/create_units_checkout_request_spec.rb +1 -1
  414. data/spec/models/create_user_request_spec.rb +1 -1
  415. data/spec/models/{v1_webhooks_post_request_spec.rb → create_webhook_request_spec.rb} +7 -7
  416. data/spec/models/dedicated_ip_request_spec.rb +1 -1
  417. data/spec/models/directory_permissions_spec.rb +1 -1
  418. data/spec/models/discover_migration202_response_spec.rb +1 -1
  419. data/spec/models/distribution_list_detail_spec.rb +1 -1
  420. data/spec/models/distribution_list_summary_spec.rb +1 -1
  421. data/spec/models/dns_record_spec.rb +1 -1
  422. data/spec/models/domain_spec.rb +1 -1
  423. data/spec/models/{v1_aliases_get200_response_spec.rb → draft_list_spec.rb} +8 -8
  424. data/spec/models/draft_result_spec.rb +64 -0
  425. data/spec/models/draft_spec.rb +118 -0
  426. data/spec/models/{v1_mailboxes_email_export_post201_response_spec.rb → export_mailbox201_response_spec.rb} +7 -7
  427. data/spec/models/gal_settings_spec.rb +1 -1
  428. data/spec/models/get_add_on_status200_response_spec.rb +1 -1
  429. data/spec/models/get_audit_summary200_response_spec.rb +1 -1
  430. data/spec/models/get_calendar_overview200_response_activity_inner_spec.rb +54 -0
  431. data/spec/models/get_calendar_overview200_response_spec.rb +84 -0
  432. data/spec/models/get_calendar_security200_response_alerts_inner_spec.rb +1 -1
  433. data/spec/models/get_calendar_security200_response_delegated_access_inner_spec.rb +1 -1
  434. data/spec/models/get_calendar_security200_response_external_sharing_spec.rb +1 -1
  435. data/spec/models/get_calendar_security200_response_public_calendar_list_inner_spec.rb +1 -1
  436. data/spec/models/get_calendar_security200_response_spec.rb +1 -1
  437. data/spec/models/get_contact_list200_response_members_inner_spec.rb +1 -1
  438. data/spec/models/get_contact_list200_response_spec.rb +1 -1
  439. data/spec/models/get_contact_lists200_response_data_inner_spec.rb +1 -1
  440. data/spec/models/get_contact_lists200_response_spec.rb +1 -1
  441. data/spec/models/{v1_admin_me_get200_response_spec.rb → get_current_admin200_response_spec.rb} +7 -7
  442. data/spec/models/get_directory_activity200_response_data_inner_spec.rb +1 -1
  443. data/spec/models/get_directory_activity200_response_spec.rb +1 -1
  444. data/spec/models/get_directory_stats200_response_spec.rb +1 -1
  445. data/spec/models/get_domains_status200_response_domains_inner_checks_inner_spec.rb +1 -1
  446. data/spec/models/get_domains_status200_response_domains_inner_spec.rb +1 -1
  447. data/spec/models/get_domains_status200_response_spec.rb +1 -1
  448. data/spec/models/get_encryption_key200_response_spec.rb +1 -1
  449. data/spec/models/get_integrations_summary200_response_api_keys_inner_spec.rb +1 -1
  450. data/spec/models/get_integrations_summary200_response_spec.rb +1 -1
  451. data/spec/models/get_integrations_summary200_response_webhooks_inner_spec.rb +1 -1
  452. data/spec/models/get_ip_assignment200_response_spec.rb +1 -1
  453. data/spec/models/get_security200_response_alerts_inner_spec.rb +1 -1
  454. data/spec/models/get_security200_response_spec.rb +1 -1
  455. data/spec/models/get_security200_response_stats_inner_spec.rb +1 -1
  456. data/spec/models/get_storage200_response_spec.rb +1 -1
  457. data/spec/models/get_storage200_response_top_mailboxes_inner_spec.rb +1 -1
  458. data/spec/models/get_storage200_response_top_messages_inner_spec.rb +1 -1
  459. data/spec/models/{v1_usage_get200_response_spec.rb → get_usage200_response_spec.rb} +7 -7
  460. data/spec/models/get_user_insights200_response_spec.rb +7 -1
  461. data/spec/models/{healthz_get200_response_spec.rb → health_check200_response_spec.rb} +7 -7
  462. data/spec/models/inbox_list_spec.rb +36 -0
  463. data/spec/models/inbox_spec.rb +54 -0
  464. data/spec/models/{v1_admins_post_request_spec.rb → invite_admin_request_spec.rb} +7 -7
  465. data/spec/models/list_add_ons200_response_spec.rb +1 -1
  466. data/spec/models/list_admins200_response_spec.rb +36 -0
  467. data/spec/models/{v1_admins_get200_response_spec.rb → list_aliases200_response_spec.rb} +7 -7
  468. data/spec/models/{v1_api_keys_get200_response_spec.rb → list_api_keys200_response_spec.rb} +7 -7
  469. data/spec/models/list_calendar_events200_response_spec.rb +1 -1
  470. data/spec/models/list_calendar_integrations200_response_spec.rb +1 -1
  471. data/spec/models/list_calendar_members200_response_spec.rb +1 -1
  472. data/spec/models/list_calendars200_response_spec.rb +1 -1
  473. data/spec/models/list_contact_lists200_response_spec.rb +1 -1
  474. data/spec/models/list_contacts200_response_spec.rb +1 -1
  475. data/spec/models/list_dedicated_ip_requests200_response_spec.rb +1 -1
  476. data/spec/models/list_distribution_lists200_response_spec.rb +1 -1
  477. data/spec/models/list_domains200_response_spec.rb +36 -0
  478. data/spec/models/{v1_mailboxes_get200_response_spec.rb → list_mailboxes200_response_spec.rb} +7 -7
  479. data/spec/models/{v1_suppressions_get200_response_spec.rb → list_messages200_response_spec.rb} +7 -7
  480. data/spec/models/list_migration_credentials200_response_spec.rb +1 -1
  481. data/spec/models/list_migration_events200_response_spec.rb +1 -1
  482. data/spec/models/list_migration_mailboxes200_response_spec.rb +1 -1
  483. data/spec/models/list_migrations200_response_spec.rb +1 -1
  484. data/spec/models/list_resources200_response_spec.rb +1 -1
  485. data/spec/models/list_shared_members200_response_spec.rb +1 -1
  486. data/spec/models/{v1_messages_get200_response_spec.rb → list_suppressions200_response_spec.rb} +7 -7
  487. data/spec/models/{v1_vacation_get200_response_spec.rb → list_templates200_response_spec.rb} +7 -7
  488. data/spec/models/list_users200_response_spec.rb +1 -1
  489. data/spec/models/list_vacation_responders200_response_spec.rb +36 -0
  490. data/spec/models/{v1_domains_get200_response_spec.rb → list_webhooks200_response_spec.rb} +7 -7
  491. data/spec/models/mailbox_grant_list_spec.rb +36 -0
  492. data/spec/models/mailbox_grant_spec.rb +42 -0
  493. data/spec/models/mailbox_spec.rb +1 -1
  494. data/spec/models/map_migration_request_mappings_inner_spec.rb +1 -1
  495. data/spec/models/map_migration_request_spec.rb +1 -1
  496. data/spec/models/mark_read_result_spec.rb +36 -0
  497. data/spec/models/message_detail_spec.rb +142 -0
  498. data/spec/models/message_spec.rb +1 -1
  499. data/spec/models/message_stats_counts_spec.rb +1 -1
  500. data/spec/models/message_stats_rates_spec.rb +1 -1
  501. data/spec/models/message_stats_spec.rb +1 -1
  502. data/spec/models/message_stats_window_spec.rb +1 -1
  503. data/spec/models/migration_credential_spec.rb +1 -1
  504. data/spec/models/migration_event_spec.rb +1 -1
  505. data/spec/models/migration_mailbox_spec.rb +1 -1
  506. data/spec/models/migration_progress_mailboxes_inner_spec.rb +1 -1
  507. data/spec/models/migration_progress_spec.rb +1 -1
  508. data/spec/models/migration_settings_spec.rb +1 -1
  509. data/spec/models/migration_spec.rb +1 -1
  510. data/spec/models/model_alias_spec.rb +1 -1
  511. data/spec/models/plan_catalog_entry_spec.rb +1 -1
  512. data/spec/models/problem_spec.rb +1 -1
  513. data/spec/models/replace_distribution_list_members200_response_spec.rb +1 -1
  514. data/spec/models/replace_distribution_list_members_request_spec.rb +1 -1
  515. data/spec/models/resource_spec.rb +1 -1
  516. data/spec/models/return_path_check_spec.rb +42 -0
  517. data/spec/models/return_path_spec.rb +70 -0
  518. data/spec/models/rotate_encryption_key_request_spec.rb +1 -1
  519. data/spec/models/send_email200_response_spec.rb +58 -0
  520. data/spec/models/{v1_send_post202_response_spec.rb → send_email202_response_spec.rb} +7 -7
  521. data/spec/models/{v1_templates_get200_response_spec.rb → send_email_batch200_response_spec.rb} +7 -7
  522. data/spec/models/{v1_send_batch_post_request_spec.rb → send_email_batch_request_spec.rb} +7 -7
  523. data/spec/models/{v1_send_post_request_attachments_inner_spec.rb → send_email_request_attachments_inner_spec.rb} +7 -7
  524. data/spec/models/{v1_send_post_request_spec.rb → send_email_request_spec.rb} +19 -7
  525. data/spec/models/send_message_spec.rb +13 -1
  526. data/spec/models/{v1_mailboxes_email_vacation_put_request_spec.rb → set_vacation_responder_request_spec.rb} +7 -7
  527. data/spec/models/shared_member_spec.rb +1 -1
  528. data/spec/models/signup_request_spec.rb +1 -1
  529. data/spec/models/simulated_inbound_spec.rb +48 -0
  530. data/spec/models/{v1_inboxes_mailbox_messages_post_request_spec.rb → start_conversation_request_spec.rb} +7 -7
  531. data/spec/models/start_migration202_response_spec.rb +1 -1
  532. data/spec/models/suppression_spec.rb +1 -1
  533. data/spec/models/template_input_spec.rb +1 -1
  534. data/spec/models/template_spec.rb +1 -1
  535. data/spec/models/tenant_spec.rb +1 -1
  536. data/spec/models/thread_classification_spec.rb +48 -0
  537. data/spec/models/thread_list_spec.rb +42 -0
  538. data/spec/models/thread_message_body_all_of_body_spec.rb +48 -0
  539. data/spec/models/thread_message_body_spec.rb +112 -0
  540. data/spec/models/thread_message_spec.rb +106 -0
  541. data/spec/models/thread_spec.rb +48 -0
  542. data/spec/models/thread_summary_spec.rb +70 -0
  543. data/spec/models/unit_bundle_spec.rb +1 -1
  544. data/spec/models/{v1_admins_id_patch_request_spec.rb → update_admin_request_spec.rb} +7 -7
  545. data/spec/models/update_calendar_event_request_spec.rb +1 -1
  546. data/spec/models/update_calendar_integration_request_spec.rb +1 -1
  547. data/spec/models/update_calendar_member_request_spec.rb +1 -1
  548. data/spec/models/update_calendar_policies_request_spec.rb +1 -1
  549. data/spec/models/update_calendar_request_spec.rb +1 -1
  550. data/spec/models/update_contact_list_request_spec.rb +1 -1
  551. data/spec/models/update_contact_request_spec.rb +1 -1
  552. data/spec/models/update_directory_permissions_request_spec.rb +1 -1
  553. data/spec/models/update_gal_settings_request_spec.rb +1 -1
  554. data/spec/models/{v1_mailboxes_email_patch_request_spec.rb → update_mailbox_request_spec.rb} +7 -7
  555. data/spec/models/update_migration_mailbox_request_spec.rb +1 -1
  556. data/spec/models/update_migration_request_spec.rb +1 -1
  557. data/spec/models/update_resource_request_spec.rb +1 -1
  558. data/spec/models/update_user_request_spec.rb +1 -1
  559. data/spec/models/{v1_webhooks_id_patch_request_spec.rb → update_webhook_request_spec.rb} +7 -7
  560. data/spec/models/user_event_spec.rb +1 -1
  561. data/spec/models/user_spec.rb +1 -1
  562. data/spec/models/vacation_params_spec.rb +1 -1
  563. data/spec/models/vacation_responder_spec.rb +1 -1
  564. data/spec/models/webhook_spec.rb +1 -1
  565. data/spec/models/whoami_spec.rb +54 -0
  566. data/spec/spec_helper.rb +1 -1
  567. metadata +408 -285
  568. data/docs/V1ApiKeysPostRequest.md +0 -20
  569. data/lib/lockally/models/v1_webhooks_get200_response.rb +0 -166
  570. data/spec/models/v1_send_batch_post200_response_spec.rb +0 -36
  571. data/spec/models/v1_webhooks_get200_response_spec.rb +0 -36
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #lockally control plane
3
3
 
4
- #The lockally control plane lets integrators and direct customers manage everything except actual mail data flow (which uses standard JMAP / IMAP / SMTP-submission against the data plane endpoints). **Authentication.** All `/v1/*` endpoints require a Bearer API key in the `Authorization` header. Keys are formatted `lk_live_<8-char-prefix>_<32-char-secret>`. Generate the first key for a tenant via `cmd/seed`; subsequent keys via `POST /v1/api-keys`. **Errors.** Failures return [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457) `application/problem+json` documents. **Scopes.** Each endpoint requires a specific scope on the presented key. Insufficient scope returns `403` with the required scope name in `detail`.
4
+ #The lockally control plane lets integrators and direct customers manage everything except actual mail data flow (which uses standard JMAP / IMAP / SMTP-submission against the data plane endpoints). **Authentication.** All `/v1/*` endpoints require a Bearer API key in the `Authorization` header. Keys are formatted `lk_live_<8-char-prefix>_<32-char-secret>`, or `lk_test_<...>` for a test key. Create keys in the dashboard, or with `POST /v1/api-keys` using a key that holds `tenant:admin`. The key's plan is checked on every request, so a key stops working if the account moves to a plan without API access, and works again if it moves back. **Errors.** Failures return [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457) `application/problem+json` documents. **Scopes.** Each endpoint requires a specific scope on the presented key. Insufficient scope returns `403` with the required scope name in `detail`.
5
5
 
6
6
  The version of the OpenAPI document: 0.1.0
7
7
  Contact: support@lockally.com
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #lockally control plane
3
3
 
4
- #The lockally control plane lets integrators and direct customers manage everything except actual mail data flow (which uses standard JMAP / IMAP / SMTP-submission against the data plane endpoints). **Authentication.** All `/v1/*` endpoints require a Bearer API key in the `Authorization` header. Keys are formatted `lk_live_<8-char-prefix>_<32-char-secret>`. Generate the first key for a tenant via `cmd/seed`; subsequent keys via `POST /v1/api-keys`. **Errors.** Failures return [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457) `application/problem+json` documents. **Scopes.** Each endpoint requires a specific scope on the presented key. Insufficient scope returns `403` with the required scope name in `detail`.
4
+ #The lockally control plane lets integrators and direct customers manage everything except actual mail data flow (which uses standard JMAP / IMAP / SMTP-submission against the data plane endpoints). **Authentication.** All `/v1/*` endpoints require a Bearer API key in the `Authorization` header. Keys are formatted `lk_live_<8-char-prefix>_<32-char-secret>`, or `lk_test_<...>` for a test key. Create keys in the dashboard, or with `POST /v1/api-keys` using a key that holds `tenant:admin`. The key's plan is checked on every request, so a key stops working if the account moves to a plan without API access, and works again if it moves back. **Errors.** Failures return [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457) `application/problem+json` documents. **Scopes.** Each endpoint requires a specific scope on the presented key. Insufficient scope returns `403` with the required scope name in `detail`.
5
5
 
6
6
  The version of the OpenAPI document: 0.1.0
7
7
  Contact: support@lockally.com
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #lockally control plane
3
3
 
4
- #The lockally control plane lets integrators and direct customers manage everything except actual mail data flow (which uses standard JMAP / IMAP / SMTP-submission against the data plane endpoints). **Authentication.** All `/v1/*` endpoints require a Bearer API key in the `Authorization` header. Keys are formatted `lk_live_<8-char-prefix>_<32-char-secret>`. Generate the first key for a tenant via `cmd/seed`; subsequent keys via `POST /v1/api-keys`. **Errors.** Failures return [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457) `application/problem+json` documents. **Scopes.** Each endpoint requires a specific scope on the presented key. Insufficient scope returns `403` with the required scope name in `detail`.
4
+ #The lockally control plane lets integrators and direct customers manage everything except actual mail data flow (which uses standard JMAP / IMAP / SMTP-submission against the data plane endpoints). **Authentication.** All `/v1/*` endpoints require a Bearer API key in the `Authorization` header. Keys are formatted `lk_live_<8-char-prefix>_<32-char-secret>`, or `lk_test_<...>` for a test key. Create keys in the dashboard, or with `POST /v1/api-keys` using a key that holds `tenant:admin`. The key's plan is checked on every request, so a key stops working if the account moves to a plan without API access, and works again if it moves back. **Errors.** Failures return [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457) `application/problem+json` documents. **Scopes.** Each endpoint requires a specific scope on the presented key. Insufficient scope returns `403` with the required scope name in `detail`.
5
5
 
6
6
  The version of the OpenAPI document: 0.1.0
7
7
  Contact: support@lockally.com
@@ -19,59 +19,39 @@ module Lockally
19
19
  def initialize(api_client = ApiClient.default)
20
20
  @api_client = api_client
21
21
  end
22
- # List outbound messages
23
- # Returns recent outbound messages for the calling tenant, sorted newest first. Backs the send-status pill in the SvelteKit /sends view and the outbound search box.
22
+ # Cancel a scheduled send
23
+ # Cancels a still-scheduled message (future queued_at). Already sending/sent → 409.
24
+ # @param id [String]
24
25
  # @param [Hash] opts the optional parameters
25
- # @option opts [String] :status
26
- # @option opts [String] :sender Exact match against the &#x60;from&#x60; mailbox.
27
- # @option opts [String] :q Free-text search across subject + sender.
28
- # @option opts [Time] :since Only messages queued at or after this RFC 3339 instant.
29
- # @option opts [String] :cursor queued_at of the prior page boundary. Pass back the &#x60;next_cursor&#x60; returned by the previous call.
30
- # @option opts [Integer] :limit (default to 50)
31
- # @return [V1MessagesGet200Response]
32
- def v1_messages_get(opts = {})
33
- data, _status_code, _headers = v1_messages_get_with_http_info(opts)
34
- data
26
+ # @return [nil]
27
+ def cancel_message(id, opts = {})
28
+ cancel_message_with_http_info(id, opts)
29
+ nil
35
30
  end
36
31
 
37
- # List outbound messages
38
- # Returns recent outbound messages for the calling tenant, sorted newest first. Backs the send-status pill in the SvelteKit /sends view and the outbound search box.
32
+ # Cancel a scheduled send
33
+ # Cancels a still-scheduled message (future queued_at). Already sending/sent → 409.
34
+ # @param id [String]
39
35
  # @param [Hash] opts the optional parameters
40
- # @option opts [String] :status
41
- # @option opts [String] :sender Exact match against the &#x60;from&#x60; mailbox.
42
- # @option opts [String] :q Free-text search across subject + sender.
43
- # @option opts [Time] :since Only messages queued at or after this RFC 3339 instant.
44
- # @option opts [String] :cursor queued_at of the prior page boundary. Pass back the &#x60;next_cursor&#x60; returned by the previous call.
45
- # @option opts [Integer] :limit (default to 50)
46
- # @return [Array<(V1MessagesGet200Response, Integer, Hash)>] V1MessagesGet200Response data, response status code and response headers
47
- def v1_messages_get_with_http_info(opts = {})
36
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
37
+ def cancel_message_with_http_info(id, opts = {})
48
38
  if @api_client.config.debugging
49
- @api_client.config.logger.debug 'Calling API: SendApi.v1_messages_get ...'
50
- end
51
- allowable_values = ["queued", "sending", "delivered", "bounced", "deferred", "complaint"]
52
- if @api_client.config.client_side_validation && opts[:'status'] && !allowable_values.include?(opts[:'status'])
53
- fail ArgumentError, "invalid value for \"status\", must be one of #{allowable_values}"
39
+ @api_client.config.logger.debug 'Calling API: SendApi.cancel_message ...'
54
40
  end
55
- if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 200
56
- fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling SendApi.v1_messages_get, must be smaller than or equal to 200.'
41
+ # verify the required parameter 'id' is set
42
+ if @api_client.config.client_side_validation && id.nil?
43
+ fail ArgumentError, "Missing the required parameter 'id' when calling SendApi.cancel_message"
57
44
  end
58
-
59
45
  # resource path
60
- local_var_path = '/v1/messages'
46
+ local_var_path = '/v1/messages/{id}'.sub('{id}', CGI.escape(id.to_s))
61
47
 
62
48
  # query parameters
63
49
  query_params = opts[:query_params] || {}
64
- query_params[:'status'] = opts[:'status'] if !opts[:'status'].nil?
65
- query_params[:'sender'] = opts[:'sender'] if !opts[:'sender'].nil?
66
- query_params[:'q'] = opts[:'q'] if !opts[:'q'].nil?
67
- query_params[:'since'] = opts[:'since'] if !opts[:'since'].nil?
68
- query_params[:'cursor'] = opts[:'cursor'] if !opts[:'cursor'].nil?
69
- query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
70
50
 
71
51
  # header parameters
72
52
  header_params = opts[:header_params] || {}
73
53
  # HTTP header 'Accept' (if needed)
74
- header_params['Accept'] = @api_client.select_header_accept(['application/json', 'application/problem+json']) unless header_params['Accept']
54
+ header_params['Accept'] = @api_client.select_header_accept(['application/problem+json']) unless header_params['Accept']
75
55
 
76
56
  # form parameters
77
57
  form_params = opts[:form_params] || {}
@@ -80,13 +60,13 @@ module Lockally
80
60
  post_body = opts[:debug_body]
81
61
 
82
62
  # return_type
83
- return_type = opts[:debug_return_type] || 'V1MessagesGet200Response'
63
+ return_type = opts[:debug_return_type]
84
64
 
85
65
  # auth_names
86
66
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
87
67
 
88
68
  new_options = opts.merge(
89
- :operation => :"SendApi.v1_messages_get",
69
+ :operation => :"SendApi.cancel_message",
90
70
  :header_params => header_params,
91
71
  :query_params => query_params,
92
72
  :form_params => form_params,
@@ -95,35 +75,33 @@ module Lockally
95
75
  :return_type => return_type
96
76
  )
97
77
 
98
- data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
78
+ data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
99
79
  if @api_client.config.debugging
100
- @api_client.config.logger.debug "API called: SendApi#v1_messages_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
80
+ @api_client.config.logger.debug "API called: SendApi#cancel_message\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
101
81
  end
102
82
  return data, status_code, headers
103
83
  end
104
84
 
105
- # Cancel a scheduled send
106
- # Cancels a still-scheduled message (future queued_at). Already sending/sent → 409.
85
+ # Get message status
107
86
  # @param id [String]
108
87
  # @param [Hash] opts the optional parameters
109
- # @return [nil]
110
- def v1_messages_id_delete(id, opts = {})
111
- v1_messages_id_delete_with_http_info(id, opts)
112
- nil
88
+ # @return [MessageDetail]
89
+ def get_message(id, opts = {})
90
+ data, _status_code, _headers = get_message_with_http_info(id, opts)
91
+ data
113
92
  end
114
93
 
115
- # Cancel a scheduled send
116
- # Cancels a still-scheduled message (future queued_at). Already sending/sent → 409.
94
+ # Get message status
117
95
  # @param id [String]
118
96
  # @param [Hash] opts the optional parameters
119
- # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
120
- def v1_messages_id_delete_with_http_info(id, opts = {})
97
+ # @return [Array<(MessageDetail, Integer, Hash)>] MessageDetail data, response status code and response headers
98
+ def get_message_with_http_info(id, opts = {})
121
99
  if @api_client.config.debugging
122
- @api_client.config.logger.debug 'Calling API: SendApi.v1_messages_id_delete ...'
100
+ @api_client.config.logger.debug 'Calling API: SendApi.get_message ...'
123
101
  end
124
102
  # verify the required parameter 'id' is set
125
103
  if @api_client.config.client_side_validation && id.nil?
126
- fail ArgumentError, "Missing the required parameter 'id' when calling SendApi.v1_messages_id_delete"
104
+ fail ArgumentError, "Missing the required parameter 'id' when calling SendApi.get_message"
127
105
  end
128
106
  # resource path
129
107
  local_var_path = '/v1/messages/{id}'.sub('{id}', CGI.escape(id.to_s))
@@ -134,7 +112,7 @@ module Lockally
134
112
  # header parameters
135
113
  header_params = opts[:header_params] || {}
136
114
  # HTTP header 'Accept' (if needed)
137
- header_params['Accept'] = @api_client.select_header_accept(['application/problem+json']) unless header_params['Accept']
115
+ header_params['Accept'] = @api_client.select_header_accept(['application/json', 'application/problem+json']) unless header_params['Accept']
138
116
 
139
117
  # form parameters
140
118
  form_params = opts[:form_params] || {}
@@ -143,13 +121,13 @@ module Lockally
143
121
  post_body = opts[:debug_body]
144
122
 
145
123
  # return_type
146
- return_type = opts[:debug_return_type]
124
+ return_type = opts[:debug_return_type] || 'MessageDetail'
147
125
 
148
126
  # auth_names
149
127
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
150
128
 
151
129
  new_options = opts.merge(
152
- :operation => :"SendApi.v1_messages_id_delete",
130
+ :operation => :"SendApi.get_message",
153
131
  :header_params => header_params,
154
132
  :query_params => query_params,
155
133
  :form_params => form_params,
@@ -158,39 +136,44 @@ module Lockally
158
136
  :return_type => return_type
159
137
  )
160
138
 
161
- data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
139
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
162
140
  if @api_client.config.debugging
163
- @api_client.config.logger.debug "API called: SendApi#v1_messages_id_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
141
+ @api_client.config.logger.debug "API called: SendApi#get_message\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
164
142
  end
165
143
  return data, status_code, headers
166
144
  end
167
145
 
168
- # Get message status
169
- # @param id [String]
146
+ # Aggregate delivery stats
147
+ # Counts by delivery outcome (delivered/bounced/deferred/complaint) plus rates over a window, from the delivery-event store. Privacy-first: this reflects what receiving servers reported, NOT whether a human opened the mail — Lockally does no open/click tracking.
170
148
  # @param [Hash] opts the optional parameters
171
- # @return [Message]
172
- def v1_messages_id_get(id, opts = {})
173
- data, _status_code, _headers = v1_messages_id_get_with_http_info(id, opts)
149
+ # @option opts [Time] :from Window start (default 7 days ago).
150
+ # @option opts [Time] :to Window end (default now).
151
+ # @option opts [String] :domain Filter by sender domain.
152
+ # @return [MessageStats]
153
+ def get_message_stats(opts = {})
154
+ data, _status_code, _headers = get_message_stats_with_http_info(opts)
174
155
  data
175
156
  end
176
157
 
177
- # Get message status
178
- # @param id [String]
158
+ # Aggregate delivery stats
159
+ # Counts by delivery outcome (delivered/bounced/deferred/complaint) plus rates over a window, from the delivery-event store. Privacy-first: this reflects what receiving servers reported, NOT whether a human opened the mail — Lockally does no open/click tracking.
179
160
  # @param [Hash] opts the optional parameters
180
- # @return [Array<(Message, Integer, Hash)>] Message data, response status code and response headers
181
- def v1_messages_id_get_with_http_info(id, opts = {})
161
+ # @option opts [Time] :from Window start (default 7 days ago).
162
+ # @option opts [Time] :to Window end (default now).
163
+ # @option opts [String] :domain Filter by sender domain.
164
+ # @return [Array<(MessageStats, Integer, Hash)>] MessageStats data, response status code and response headers
165
+ def get_message_stats_with_http_info(opts = {})
182
166
  if @api_client.config.debugging
183
- @api_client.config.logger.debug 'Calling API: SendApi.v1_messages_id_get ...'
184
- end
185
- # verify the required parameter 'id' is set
186
- if @api_client.config.client_side_validation && id.nil?
187
- fail ArgumentError, "Missing the required parameter 'id' when calling SendApi.v1_messages_id_get"
167
+ @api_client.config.logger.debug 'Calling API: SendApi.get_message_stats ...'
188
168
  end
189
169
  # resource path
190
- local_var_path = '/v1/messages/{id}'.sub('{id}', CGI.escape(id.to_s))
170
+ local_var_path = '/v1/messages/stats'
191
171
 
192
172
  # query parameters
193
173
  query_params = opts[:query_params] || {}
174
+ query_params[:'from'] = opts[:'from'] if !opts[:'from'].nil?
175
+ query_params[:'to'] = opts[:'to'] if !opts[:'to'].nil?
176
+ query_params[:'domain'] = opts[:'domain'] if !opts[:'domain'].nil?
194
177
 
195
178
  # header parameters
196
179
  header_params = opts[:header_params] || {}
@@ -204,13 +187,13 @@ module Lockally
204
187
  post_body = opts[:debug_body]
205
188
 
206
189
  # return_type
207
- return_type = opts[:debug_return_type] || 'Message'
190
+ return_type = opts[:debug_return_type] || 'MessageStats'
208
191
 
209
192
  # auth_names
210
193
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
211
194
 
212
195
  new_options = opts.merge(
213
- :operation => :"SendApi.v1_messages_id_get",
196
+ :operation => :"SendApi.get_message_stats",
214
197
  :header_params => header_params,
215
198
  :query_params => query_params,
216
199
  :form_params => form_params,
@@ -221,42 +204,59 @@ module Lockally
221
204
 
222
205
  data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
223
206
  if @api_client.config.debugging
224
- @api_client.config.logger.debug "API called: SendApi#v1_messages_id_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
207
+ @api_client.config.logger.debug "API called: SendApi#get_message_stats\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
225
208
  end
226
209
  return data, status_code, headers
227
210
  end
228
211
 
229
- # Aggregate delivery stats
230
- # Counts by delivery outcome (delivered/bounced/deferred/complaint) plus rates over a window, from the delivery-event store. Privacy-first: this reflects what receiving servers reported, NOT whether a human opened the mail — Lockally does no open/click tracking.
212
+ # List outbound messages
213
+ # Returns recent outbound messages for the calling tenant, sorted newest first. Backs the send-status pill in the SvelteKit /sends view and the outbound search box.
231
214
  # @param [Hash] opts the optional parameters
232
- # @option opts [Time] :from Window start (default 7 days ago).
233
- # @option opts [Time] :to Window end (default now).
234
- # @option opts [String] :domain Filter by sender domain.
235
- # @return [MessageStats]
236
- def v1_messages_stats_get(opts = {})
237
- data, _status_code, _headers = v1_messages_stats_get_with_http_info(opts)
215
+ # @option opts [String] :status
216
+ # @option opts [String] :sender Exact match against the &#x60;from&#x60; mailbox.
217
+ # @option opts [String] :q Free-text search across subject + sender.
218
+ # @option opts [Time] :since Only messages queued at or after this RFC 3339 instant.
219
+ # @option opts [String] :cursor queued_at of the prior page boundary. Pass back the &#x60;next_cursor&#x60; returned by the previous call.
220
+ # @option opts [Integer] :limit (default to 50)
221
+ # @return [ListMessages200Response]
222
+ def list_messages(opts = {})
223
+ data, _status_code, _headers = list_messages_with_http_info(opts)
238
224
  data
239
225
  end
240
226
 
241
- # Aggregate delivery stats
242
- # Counts by delivery outcome (delivered/bounced/deferred/complaint) plus rates over a window, from the delivery-event store. Privacy-first: this reflects what receiving servers reported, NOT whether a human opened the mail — Lockally does no open/click tracking.
227
+ # List outbound messages
228
+ # Returns recent outbound messages for the calling tenant, sorted newest first. Backs the send-status pill in the SvelteKit /sends view and the outbound search box.
243
229
  # @param [Hash] opts the optional parameters
244
- # @option opts [Time] :from Window start (default 7 days ago).
245
- # @option opts [Time] :to Window end (default now).
246
- # @option opts [String] :domain Filter by sender domain.
247
- # @return [Array<(MessageStats, Integer, Hash)>] MessageStats data, response status code and response headers
248
- def v1_messages_stats_get_with_http_info(opts = {})
230
+ # @option opts [String] :status
231
+ # @option opts [String] :sender Exact match against the &#x60;from&#x60; mailbox.
232
+ # @option opts [String] :q Free-text search across subject + sender.
233
+ # @option opts [Time] :since Only messages queued at or after this RFC 3339 instant.
234
+ # @option opts [String] :cursor queued_at of the prior page boundary. Pass back the &#x60;next_cursor&#x60; returned by the previous call.
235
+ # @option opts [Integer] :limit (default to 50)
236
+ # @return [Array<(ListMessages200Response, Integer, Hash)>] ListMessages200Response data, response status code and response headers
237
+ def list_messages_with_http_info(opts = {})
249
238
  if @api_client.config.debugging
250
- @api_client.config.logger.debug 'Calling API: SendApi.v1_messages_stats_get ...'
239
+ @api_client.config.logger.debug 'Calling API: SendApi.list_messages ...'
251
240
  end
241
+ allowable_values = ["queued", "sending", "delivered", "bounced", "deferred", "complaint"]
242
+ if @api_client.config.client_side_validation && opts[:'status'] && !allowable_values.include?(opts[:'status'])
243
+ fail ArgumentError, "invalid value for \"status\", must be one of #{allowable_values}"
244
+ end
245
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 200
246
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling SendApi.list_messages, must be smaller than or equal to 200.'
247
+ end
248
+
252
249
  # resource path
253
- local_var_path = '/v1/messages/stats'
250
+ local_var_path = '/v1/messages'
254
251
 
255
252
  # query parameters
256
253
  query_params = opts[:query_params] || {}
257
- query_params[:'from'] = opts[:'from'] if !opts[:'from'].nil?
258
- query_params[:'to'] = opts[:'to'] if !opts[:'to'].nil?
259
- query_params[:'domain'] = opts[:'domain'] if !opts[:'domain'].nil?
254
+ query_params[:'status'] = opts[:'status'] if !opts[:'status'].nil?
255
+ query_params[:'sender'] = opts[:'sender'] if !opts[:'sender'].nil?
256
+ query_params[:'q'] = opts[:'q'] if !opts[:'q'].nil?
257
+ query_params[:'since'] = opts[:'since'] if !opts[:'since'].nil?
258
+ query_params[:'cursor'] = opts[:'cursor'] if !opts[:'cursor'].nil?
259
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
260
260
 
261
261
  # header parameters
262
262
  header_params = opts[:header_params] || {}
@@ -270,13 +270,13 @@ module Lockally
270
270
  post_body = opts[:debug_body]
271
271
 
272
272
  # return_type
273
- return_type = opts[:debug_return_type] || 'MessageStats'
273
+ return_type = opts[:debug_return_type] || 'ListMessages200Response'
274
274
 
275
275
  # auth_names
276
276
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
277
277
 
278
278
  new_options = opts.merge(
279
- :operation => :"SendApi.v1_messages_stats_get",
279
+ :operation => :"SendApi.list_messages",
280
280
  :header_params => header_params,
281
281
  :query_params => query_params,
282
282
  :form_params => form_params,
@@ -287,46 +287,46 @@ module Lockally
287
287
 
288
288
  data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
289
289
  if @api_client.config.debugging
290
- @api_client.config.logger.debug "API called: SendApi#v1_messages_stats_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
290
+ @api_client.config.logger.debug "API called: SendApi#list_messages\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
291
291
  end
292
292
  return data, status_code, headers
293
293
  end
294
294
 
295
- # Send a batch of emails
296
- # Sends up to 500 messages in one call. Each is validated and enqueued independently — a bad message fails only its own slot (partial success, HTTP 200). One `Idempotency-Key` header covers the batch; per-message keys are derived as `<key>:<index>`.
295
+ # Send an email
296
+ # Submits an email for delivery via lockally. Returns 202 immediately once the message is accepted into lockally's queue; the actual SMTP submission to the recipient is async. Track delivery via `GET /v1/messages/{id}` or webhook subscriptions for `delivery.delivered` / `delivery.bounced` / `delivery.complaint`. **Idempotency-Key required.** Per design L7 — any unique string per send, 24-hour dedupe window. Repeated calls with the same key return byte-exact the original response and do NOT create a duplicate message. **Sender authorisation.** `from` must be an address the calling tenant owns on a verified domain. A mailbox always qualifies. On business and combined accounts an **alias** qualifies too, so a send-only address such as `no-reply@` need not be a billed seat. An alias on an unverified domain, or one belonging to another account, is refused with `403`. A catch-all creates no aliases and so grants no sending rights. **Rate cap.** Per-tenant `rate_cap_per_min` (returned on `/v1/tenant`) is enforced — 429 with `Retry-After: 60` once tripped. **Recipient warning.** Over 25 total recipients (To+Cc+Bcc) sets a `warning` field in the response — large fan-outs queue noticeably at scale. Hard cap is 100/send. **Not every success is a 202.** Check the status code, not just the body. A `200` means nothing was queued: either every recipient was already suppressed, or the call used a test key and the send was simulated. Both are successes, and neither produces a real delivery. See the `200` response below. **Warm-up headers.** While the platform is in its outbound warm-up ramp, accepted sends carry `X-Warmup-Day`, `X-Warmup-Daily-Cap` and `X-Warmup-Used-Today`. They describe a platform-wide cap shared by every tenant, not your own allowance, and they disappear once the ramp finishes. Hitting the cap returns 429.
297
297
  # @param idempotency_key [String]
298
- # @param v1_send_batch_post_request [V1SendBatchPostRequest]
298
+ # @param send_email_request [SendEmailRequest]
299
299
  # @param [Hash] opts the optional parameters
300
- # @return [V1SendBatchPost200Response]
301
- def v1_send_batch_post(idempotency_key, v1_send_batch_post_request, opts = {})
302
- data, _status_code, _headers = v1_send_batch_post_with_http_info(idempotency_key, v1_send_batch_post_request, opts)
300
+ # @return [SendEmail200Response]
301
+ def send_email(idempotency_key, send_email_request, opts = {})
302
+ data, _status_code, _headers = send_email_with_http_info(idempotency_key, send_email_request, opts)
303
303
  data
304
304
  end
305
305
 
306
- # Send a batch of emails
307
- # Sends up to 500 messages in one call. Each is validated and enqueued independently — a bad message fails only its own slot (partial success, HTTP 200). One &#x60;Idempotency-Key&#x60; header covers the batch; per-message keys are derived as &#x60;&lt;key&gt;:&lt;index&gt;&#x60;.
306
+ # Send an email
307
+ # Submits an email for delivery via lockally. Returns 202 immediately once the message is accepted into lockally&#39;s queue; the actual SMTP submission to the recipient is async. Track delivery via &#x60;GET /v1/messages/{id}&#x60; or webhook subscriptions for &#x60;delivery.delivered&#x60; / &#x60;delivery.bounced&#x60; / &#x60;delivery.complaint&#x60;. **Idempotency-Key required.** Per design L7 — any unique string per send, 24-hour dedupe window. Repeated calls with the same key return byte-exact the original response and do NOT create a duplicate message. **Sender authorisation.** &#x60;from&#x60; must be an address the calling tenant owns on a verified domain. A mailbox always qualifies. On business and combined accounts an **alias** qualifies too, so a send-only address such as &#x60;no-reply@&#x60; need not be a billed seat. An alias on an unverified domain, or one belonging to another account, is refused with &#x60;403&#x60;. A catch-all creates no aliases and so grants no sending rights. **Rate cap.** Per-tenant &#x60;rate_cap_per_min&#x60; (returned on &#x60;/v1/tenant&#x60;) is enforced — 429 with &#x60;Retry-After: 60&#x60; once tripped. **Recipient warning.** Over 25 total recipients (To+Cc+Bcc) sets a &#x60;warning&#x60; field in the response — large fan-outs queue noticeably at scale. Hard cap is 100/send. **Not every success is a 202.** Check the status code, not just the body. A &#x60;200&#x60; means nothing was queued: either every recipient was already suppressed, or the call used a test key and the send was simulated. Both are successes, and neither produces a real delivery. See the &#x60;200&#x60; response below. **Warm-up headers.** While the platform is in its outbound warm-up ramp, accepted sends carry &#x60;X-Warmup-Day&#x60;, &#x60;X-Warmup-Daily-Cap&#x60; and &#x60;X-Warmup-Used-Today&#x60;. They describe a platform-wide cap shared by every tenant, not your own allowance, and they disappear once the ramp finishes. Hitting the cap returns 429.
308
308
  # @param idempotency_key [String]
309
- # @param v1_send_batch_post_request [V1SendBatchPostRequest]
309
+ # @param send_email_request [SendEmailRequest]
310
310
  # @param [Hash] opts the optional parameters
311
- # @return [Array<(V1SendBatchPost200Response, Integer, Hash)>] V1SendBatchPost200Response data, response status code and response headers
312
- def v1_send_batch_post_with_http_info(idempotency_key, v1_send_batch_post_request, opts = {})
311
+ # @return [Array<(SendEmail200Response, Integer, Hash)>] SendEmail200Response data, response status code and response headers
312
+ def send_email_with_http_info(idempotency_key, send_email_request, opts = {})
313
313
  if @api_client.config.debugging
314
- @api_client.config.logger.debug 'Calling API: SendApi.v1_send_batch_post ...'
314
+ @api_client.config.logger.debug 'Calling API: SendApi.send_email ...'
315
315
  end
316
316
  # verify the required parameter 'idempotency_key' is set
317
317
  if @api_client.config.client_side_validation && idempotency_key.nil?
318
- fail ArgumentError, "Missing the required parameter 'idempotency_key' when calling SendApi.v1_send_batch_post"
318
+ fail ArgumentError, "Missing the required parameter 'idempotency_key' when calling SendApi.send_email"
319
319
  end
320
- if @api_client.config.client_side_validation && idempotency_key.to_s.length > 200
321
- fail ArgumentError, 'invalid value for "idempotency_key" when calling SendApi.v1_send_batch_post, the character length must be smaller than or equal to 200.'
320
+ if @api_client.config.client_side_validation && idempotency_key.to_s.length > 255
321
+ fail ArgumentError, 'invalid value for "idempotency_key" when calling SendApi.send_email, the character length must be smaller than or equal to 255.'
322
322
  end
323
323
 
324
- # verify the required parameter 'v1_send_batch_post_request' is set
325
- if @api_client.config.client_side_validation && v1_send_batch_post_request.nil?
326
- fail ArgumentError, "Missing the required parameter 'v1_send_batch_post_request' when calling SendApi.v1_send_batch_post"
324
+ # verify the required parameter 'send_email_request' is set
325
+ if @api_client.config.client_side_validation && send_email_request.nil?
326
+ fail ArgumentError, "Missing the required parameter 'send_email_request' when calling SendApi.send_email"
327
327
  end
328
328
  # resource path
329
- local_var_path = '/v1/send/batch'
329
+ local_var_path = '/v1/send'
330
330
 
331
331
  # query parameters
332
332
  query_params = opts[:query_params] || {}
@@ -346,16 +346,16 @@ module Lockally
346
346
  form_params = opts[:form_params] || {}
347
347
 
348
348
  # http body (model)
349
- post_body = opts[:debug_body] || @api_client.object_to_http_body(v1_send_batch_post_request)
349
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(send_email_request)
350
350
 
351
351
  # return_type
352
- return_type = opts[:debug_return_type] || 'V1SendBatchPost200Response'
352
+ return_type = opts[:debug_return_type] || 'SendEmail200Response'
353
353
 
354
354
  # auth_names
355
355
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
356
356
 
357
357
  new_options = opts.merge(
358
- :operation => :"SendApi.v1_send_batch_post",
358
+ :operation => :"SendApi.send_email",
359
359
  :header_params => header_params,
360
360
  :query_params => query_params,
361
361
  :form_params => form_params,
@@ -366,46 +366,46 @@ module Lockally
366
366
 
367
367
  data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
368
368
  if @api_client.config.debugging
369
- @api_client.config.logger.debug "API called: SendApi#v1_send_batch_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
369
+ @api_client.config.logger.debug "API called: SendApi#send_email\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
370
370
  end
371
371
  return data, status_code, headers
372
372
  end
373
373
 
374
- # Send an email
375
- # Submits an email for delivery via lockally. Returns 202 immediately once the message is accepted into lockally's queue; the actual SMTP submission to the recipient is async. Track delivery via `GET /v1/messages/{id}` or webhook subscriptions for `delivery.delivered` / `delivery.bounced` / `delivery.complaint`. **Idempotency-Key required.** Per design L7 — any unique string per send, 24-hour dedupe window. Repeated calls with the same key return byte-exact the original response and do NOT create a duplicate message. **Sender authorisation.** `from` must be a non-disabled mailbox owned by the calling tenant on a verified domain. Sending from aliases is not yet supported. **Rate cap.** Per-tenant `rate_cap_per_min` (returned on `/v1/tenant`) is enforced — 429 with `Retry-After: 60` once tripped. **Recipient warning.** Over 25 total recipients (To+Cc+Bcc) sets a `warning` field in the response — large fan-outs queue noticeably at scale. Hard cap is 100/send.
374
+ # Send a batch of emails
375
+ # Sends up to 500 messages in one call. Each is validated and enqueued independently — a bad message fails only its own slot (partial success, HTTP 200). One `Idempotency-Key` header covers the batch; per-message keys are derived as `<key>:<index>`.
376
376
  # @param idempotency_key [String]
377
- # @param v1_send_post_request [V1SendPostRequest]
377
+ # @param send_email_batch_request [SendEmailBatchRequest]
378
378
  # @param [Hash] opts the optional parameters
379
- # @return [V1SendPost202Response]
380
- def v1_send_post(idempotency_key, v1_send_post_request, opts = {})
381
- data, _status_code, _headers = v1_send_post_with_http_info(idempotency_key, v1_send_post_request, opts)
379
+ # @return [SendEmailBatch200Response]
380
+ def send_email_batch(idempotency_key, send_email_batch_request, opts = {})
381
+ data, _status_code, _headers = send_email_batch_with_http_info(idempotency_key, send_email_batch_request, opts)
382
382
  data
383
383
  end
384
384
 
385
- # Send an email
386
- # Submits an email for delivery via lockally. Returns 202 immediately once the message is accepted into lockally&#39;s queue; the actual SMTP submission to the recipient is async. Track delivery via &#x60;GET /v1/messages/{id}&#x60; or webhook subscriptions for &#x60;delivery.delivered&#x60; / &#x60;delivery.bounced&#x60; / &#x60;delivery.complaint&#x60;. **Idempotency-Key required.** Per design L7 — any unique string per send, 24-hour dedupe window. Repeated calls with the same key return byte-exact the original response and do NOT create a duplicate message. **Sender authorisation.** &#x60;from&#x60; must be a non-disabled mailbox owned by the calling tenant on a verified domain. Sending from aliases is not yet supported. **Rate cap.** Per-tenant &#x60;rate_cap_per_min&#x60; (returned on &#x60;/v1/tenant&#x60;) is enforced — 429 with &#x60;Retry-After: 60&#x60; once tripped. **Recipient warning.** Over 25 total recipients (To+Cc+Bcc) sets a &#x60;warning&#x60; field in the response — large fan-outs queue noticeably at scale. Hard cap is 100/send.
385
+ # Send a batch of emails
386
+ # Sends up to 500 messages in one call. Each is validated and enqueued independently — a bad message fails only its own slot (partial success, HTTP 200). One &#x60;Idempotency-Key&#x60; header covers the batch; per-message keys are derived as &#x60;&lt;key&gt;:&lt;index&gt;&#x60;.
387
387
  # @param idempotency_key [String]
388
- # @param v1_send_post_request [V1SendPostRequest]
388
+ # @param send_email_batch_request [SendEmailBatchRequest]
389
389
  # @param [Hash] opts the optional parameters
390
- # @return [Array<(V1SendPost202Response, Integer, Hash)>] V1SendPost202Response data, response status code and response headers
391
- def v1_send_post_with_http_info(idempotency_key, v1_send_post_request, opts = {})
390
+ # @return [Array<(SendEmailBatch200Response, Integer, Hash)>] SendEmailBatch200Response data, response status code and response headers
391
+ def send_email_batch_with_http_info(idempotency_key, send_email_batch_request, opts = {})
392
392
  if @api_client.config.debugging
393
- @api_client.config.logger.debug 'Calling API: SendApi.v1_send_post ...'
393
+ @api_client.config.logger.debug 'Calling API: SendApi.send_email_batch ...'
394
394
  end
395
395
  # verify the required parameter 'idempotency_key' is set
396
396
  if @api_client.config.client_side_validation && idempotency_key.nil?
397
- fail ArgumentError, "Missing the required parameter 'idempotency_key' when calling SendApi.v1_send_post"
397
+ fail ArgumentError, "Missing the required parameter 'idempotency_key' when calling SendApi.send_email_batch"
398
398
  end
399
- if @api_client.config.client_side_validation && idempotency_key.to_s.length > 255
400
- fail ArgumentError, 'invalid value for "idempotency_key" when calling SendApi.v1_send_post, the character length must be smaller than or equal to 255.'
399
+ if @api_client.config.client_side_validation && idempotency_key.to_s.length > 200
400
+ fail ArgumentError, 'invalid value for "idempotency_key" when calling SendApi.send_email_batch, the character length must be smaller than or equal to 200.'
401
401
  end
402
402
 
403
- # verify the required parameter 'v1_send_post_request' is set
404
- if @api_client.config.client_side_validation && v1_send_post_request.nil?
405
- fail ArgumentError, "Missing the required parameter 'v1_send_post_request' when calling SendApi.v1_send_post"
403
+ # verify the required parameter 'send_email_batch_request' is set
404
+ if @api_client.config.client_side_validation && send_email_batch_request.nil?
405
+ fail ArgumentError, "Missing the required parameter 'send_email_batch_request' when calling SendApi.send_email_batch"
406
406
  end
407
407
  # resource path
408
- local_var_path = '/v1/send'
408
+ local_var_path = '/v1/send/batch'
409
409
 
410
410
  # query parameters
411
411
  query_params = opts[:query_params] || {}
@@ -425,16 +425,16 @@ module Lockally
425
425
  form_params = opts[:form_params] || {}
426
426
 
427
427
  # http body (model)
428
- post_body = opts[:debug_body] || @api_client.object_to_http_body(v1_send_post_request)
428
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(send_email_batch_request)
429
429
 
430
430
  # return_type
431
- return_type = opts[:debug_return_type] || 'V1SendPost202Response'
431
+ return_type = opts[:debug_return_type] || 'SendEmailBatch200Response'
432
432
 
433
433
  # auth_names
434
434
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
435
435
 
436
436
  new_options = opts.merge(
437
- :operation => :"SendApi.v1_send_post",
437
+ :operation => :"SendApi.send_email_batch",
438
438
  :header_params => header_params,
439
439
  :query_params => query_params,
440
440
  :form_params => form_params,
@@ -445,7 +445,7 @@ module Lockally
445
445
 
446
446
  data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
447
447
  if @api_client.config.debugging
448
- @api_client.config.logger.debug "API called: SendApi#v1_send_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
448
+ @api_client.config.logger.debug "API called: SendApi#send_email_batch\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
449
449
  end
450
450
  return data, status_code, headers
451
451
  end
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #lockally control plane
3
3
 
4
- #The lockally control plane lets integrators and direct customers manage everything except actual mail data flow (which uses standard JMAP / IMAP / SMTP-submission against the data plane endpoints). **Authentication.** All `/v1/*` endpoints require a Bearer API key in the `Authorization` header. Keys are formatted `lk_live_<8-char-prefix>_<32-char-secret>`. Generate the first key for a tenant via `cmd/seed`; subsequent keys via `POST /v1/api-keys`. **Errors.** Failures return [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457) `application/problem+json` documents. **Scopes.** Each endpoint requires a specific scope on the presented key. Insufficient scope returns `403` with the required scope name in `detail`.
4
+ #The lockally control plane lets integrators and direct customers manage everything except actual mail data flow (which uses standard JMAP / IMAP / SMTP-submission against the data plane endpoints). **Authentication.** All `/v1/*` endpoints require a Bearer API key in the `Authorization` header. Keys are formatted `lk_live_<8-char-prefix>_<32-char-secret>`, or `lk_test_<...>` for a test key. Create keys in the dashboard, or with `POST /v1/api-keys` using a key that holds `tenant:admin`. The key's plan is checked on every request, so a key stops working if the account moves to a plan without API access, and works again if it moves back. **Errors.** Failures return [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457) `application/problem+json` documents. **Scopes.** Each endpoint requires a specific scope on the presented key. Insufficient scope returns `403` with the required scope name in `detail`.
5
5
 
6
6
  The version of the OpenAPI document: 0.1.0
7
7
  Contact: support@lockally.com
@@ -22,7 +22,7 @@ module Lockally
22
22
  # Sign up a new tenant
23
23
  # @param signup_request [SignupRequest]
24
24
  # @param [Hash] opts the optional parameters
25
- # @return [V1AdminLoginPost200Response]
25
+ # @return [AdminLogin200Response]
26
26
  def signup(signup_request, opts = {})
27
27
  data, _status_code, _headers = signup_with_http_info(signup_request, opts)
28
28
  data
@@ -31,7 +31,7 @@ module Lockally
31
31
  # Sign up a new tenant
32
32
  # @param signup_request [SignupRequest]
33
33
  # @param [Hash] opts the optional parameters
34
- # @return [Array<(V1AdminLoginPost200Response, Integer, Hash)>] V1AdminLoginPost200Response data, response status code and response headers
34
+ # @return [Array<(AdminLogin200Response, Integer, Hash)>] AdminLogin200Response data, response status code and response headers
35
35
  def signup_with_http_info(signup_request, opts = {})
36
36
  if @api_client.config.debugging
37
37
  @api_client.config.logger.debug 'Calling API: SignupApi.signup ...'
@@ -63,7 +63,7 @@ module Lockally
63
63
  post_body = opts[:debug_body] || @api_client.object_to_http_body(signup_request)
64
64
 
65
65
  # return_type
66
- return_type = opts[:debug_return_type] || 'V1AdminLoginPost200Response'
66
+ return_type = opts[:debug_return_type] || 'AdminLogin200Response'
67
67
 
68
68
  # auth_names
69
69
  auth_names = opts[:debug_auth_names] || []