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
@@ -19,22 +19,28 @@ module Lockally
19
19
  def initialize(api_client = ApiClient.default)
20
20
  @api_client = api_client
21
21
  end
22
- # List API keys
23
- # Returns all API keys (active and revoked) belonging to the calling tenant. The `secret` is **never** returned — only prefix + metadata.
22
+ # Create an API key
23
+ # Provisions a fresh API key for the calling tenant. **The full `secret` is included in this response ONLY** — store it immediately. The cleartext secret is not recoverable from the argon2id hash kept server-side; rotate by creating a new key and revoking the old one.
24
+ # @param create_api_key_request [CreateApiKeyRequest]
24
25
  # @param [Hash] opts the optional parameters
25
- # @return [V1ApiKeysGet200Response]
26
- def v1_api_keys_get(opts = {})
27
- data, _status_code, _headers = v1_api_keys_get_with_http_info(opts)
26
+ # @return [CreateApiKey201Response]
27
+ def create_api_key(create_api_key_request, opts = {})
28
+ data, _status_code, _headers = create_api_key_with_http_info(create_api_key_request, opts)
28
29
  data
29
30
  end
30
31
 
31
- # List API keys
32
- # Returns all API keys (active and revoked) belonging to the calling tenant. The &#x60;secret&#x60; is **never** returned — only prefix + metadata.
32
+ # Create an API key
33
+ # Provisions a fresh API key for the calling tenant. **The full &#x60;secret&#x60; is included in this response ONLY** — store it immediately. The cleartext secret is not recoverable from the argon2id hash kept server-side; rotate by creating a new key and revoking the old one.
34
+ # @param create_api_key_request [CreateApiKeyRequest]
33
35
  # @param [Hash] opts the optional parameters
34
- # @return [Array<(V1ApiKeysGet200Response, Integer, Hash)>] V1ApiKeysGet200Response data, response status code and response headers
35
- def v1_api_keys_get_with_http_info(opts = {})
36
+ # @return [Array<(CreateApiKey201Response, Integer, Hash)>] CreateApiKey201Response data, response status code and response headers
37
+ def create_api_key_with_http_info(create_api_key_request, opts = {})
36
38
  if @api_client.config.debugging
37
- @api_client.config.logger.debug 'Calling API: ApiKeysApi.v1_api_keys_get ...'
39
+ @api_client.config.logger.debug 'Calling API: ApiKeysApi.create_api_key ...'
40
+ end
41
+ # verify the required parameter 'create_api_key_request' is set
42
+ if @api_client.config.client_side_validation && create_api_key_request.nil?
43
+ fail ArgumentError, "Missing the required parameter 'create_api_key_request' when calling ApiKeysApi.create_api_key"
38
44
  end
39
45
  # resource path
40
46
  local_var_path = '/v1/api-keys'
@@ -46,21 +52,26 @@ module Lockally
46
52
  header_params = opts[:header_params] || {}
47
53
  # HTTP header 'Accept' (if needed)
48
54
  header_params['Accept'] = @api_client.select_header_accept(['application/json', 'application/problem+json']) unless header_params['Accept']
55
+ # HTTP header 'Content-Type'
56
+ content_type = @api_client.select_header_content_type(['application/json'])
57
+ if !content_type.nil?
58
+ header_params['Content-Type'] = content_type
59
+ end
49
60
 
50
61
  # form parameters
51
62
  form_params = opts[:form_params] || {}
52
63
 
53
64
  # http body (model)
54
- post_body = opts[:debug_body]
65
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(create_api_key_request)
55
66
 
56
67
  # return_type
57
- return_type = opts[:debug_return_type] || 'V1ApiKeysGet200Response'
68
+ return_type = opts[:debug_return_type] || 'CreateApiKey201Response'
58
69
 
59
70
  # auth_names
60
71
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
61
72
 
62
73
  new_options = opts.merge(
63
- :operation => :"ApiKeysApi.v1_api_keys_get",
74
+ :operation => :"ApiKeysApi.create_api_key",
64
75
  :header_params => header_params,
65
76
  :query_params => query_params,
66
77
  :form_params => form_params,
@@ -69,38 +80,32 @@ module Lockally
69
80
  :return_type => return_type
70
81
  )
71
82
 
72
- data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
83
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
73
84
  if @api_client.config.debugging
74
- @api_client.config.logger.debug "API called: ApiKeysApi#v1_api_keys_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
85
+ @api_client.config.logger.debug "API called: ApiKeysApi#create_api_key\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
75
86
  end
76
87
  return data, status_code, headers
77
88
  end
78
89
 
79
- # Revoke an API key
80
- # Soft-deletes (sets `revoked_at`) on the named key. The row stays for audit purposes; the key no longer authenticates. You **cannot revoke the key currently being used** to make this call — that would lock you out. Use a different `tenant:admin` key.
81
- # @param id [String]
90
+ # List API keys
91
+ # Returns all API keys (active and revoked) belonging to the calling tenant. The `secret` is **never** returned — only prefix + metadata.
82
92
  # @param [Hash] opts the optional parameters
83
- # @return [nil]
84
- def v1_api_keys_id_delete(id, opts = {})
85
- v1_api_keys_id_delete_with_http_info(id, opts)
86
- nil
93
+ # @return [ListApiKeys200Response]
94
+ def list_api_keys(opts = {})
95
+ data, _status_code, _headers = list_api_keys_with_http_info(opts)
96
+ data
87
97
  end
88
98
 
89
- # Revoke an API key
90
- # Soft-deletes (sets &#x60;revoked_at&#x60;) on the named key. The row stays for audit purposes; the key no longer authenticates. You **cannot revoke the key currently being used** to make this call — that would lock you out. Use a different &#x60;tenant:admin&#x60; key.
91
- # @param id [String]
99
+ # List API keys
100
+ # Returns all API keys (active and revoked) belonging to the calling tenant. The &#x60;secret&#x60; is **never** returned — only prefix + metadata.
92
101
  # @param [Hash] opts the optional parameters
93
- # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
94
- def v1_api_keys_id_delete_with_http_info(id, opts = {})
102
+ # @return [Array<(ListApiKeys200Response, Integer, Hash)>] ListApiKeys200Response data, response status code and response headers
103
+ def list_api_keys_with_http_info(opts = {})
95
104
  if @api_client.config.debugging
96
- @api_client.config.logger.debug 'Calling API: ApiKeysApi.v1_api_keys_id_delete ...'
97
- end
98
- # verify the required parameter 'id' is set
99
- if @api_client.config.client_side_validation && id.nil?
100
- fail ArgumentError, "Missing the required parameter 'id' when calling ApiKeysApi.v1_api_keys_id_delete"
105
+ @api_client.config.logger.debug 'Calling API: ApiKeysApi.list_api_keys ...'
101
106
  end
102
107
  # resource path
103
- local_var_path = '/v1/api-keys/{id}'.sub('{id}', CGI.escape(id.to_s))
108
+ local_var_path = '/v1/api-keys'
104
109
 
105
110
  # query parameters
106
111
  query_params = opts[:query_params] || {}
@@ -108,7 +113,7 @@ module Lockally
108
113
  # header parameters
109
114
  header_params = opts[:header_params] || {}
110
115
  # HTTP header 'Accept' (if needed)
111
- header_params['Accept'] = @api_client.select_header_accept(['application/problem+json']) unless header_params['Accept']
116
+ header_params['Accept'] = @api_client.select_header_accept(['application/json', 'application/problem+json']) unless header_params['Accept']
112
117
 
113
118
  # form parameters
114
119
  form_params = opts[:form_params] || {}
@@ -117,13 +122,13 @@ module Lockally
117
122
  post_body = opts[:debug_body]
118
123
 
119
124
  # return_type
120
- return_type = opts[:debug_return_type]
125
+ return_type = opts[:debug_return_type] || 'ListApiKeys200Response'
121
126
 
122
127
  # auth_names
123
128
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
124
129
 
125
130
  new_options = opts.merge(
126
- :operation => :"ApiKeysApi.v1_api_keys_id_delete",
131
+ :operation => :"ApiKeysApi.list_api_keys",
127
132
  :header_params => header_params,
128
133
  :query_params => query_params,
129
134
  :form_params => form_params,
@@ -132,38 +137,38 @@ module Lockally
132
137
  :return_type => return_type
133
138
  )
134
139
 
135
- data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
140
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
136
141
  if @api_client.config.debugging
137
- @api_client.config.logger.debug "API called: ApiKeysApi#v1_api_keys_id_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
142
+ @api_client.config.logger.debug "API called: ApiKeysApi#list_api_keys\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
138
143
  end
139
144
  return data, status_code, headers
140
145
  end
141
146
 
142
- # Create an API key
143
- # Provisions a fresh API key for the calling tenant. **The full `secret` is included in this response ONLY** — store it immediately. The cleartext secret is not recoverable from the argon2id hash kept server-side; rotate by creating a new key and revoking the old one.
144
- # @param v1_api_keys_post_request [V1ApiKeysPostRequest]
147
+ # Revoke an API key
148
+ # Soft-deletes (sets `revoked_at`) on the named key. The row stays for audit purposes; the key no longer authenticates. You **cannot revoke the key currently being used** to make this call — that would lock you out. Use a different `tenant:admin` key.
149
+ # @param id [String]
145
150
  # @param [Hash] opts the optional parameters
146
- # @return [V1ApiKeysPost201Response]
147
- def v1_api_keys_post(v1_api_keys_post_request, opts = {})
148
- data, _status_code, _headers = v1_api_keys_post_with_http_info(v1_api_keys_post_request, opts)
149
- data
151
+ # @return [nil]
152
+ def revoke_api_key(id, opts = {})
153
+ revoke_api_key_with_http_info(id, opts)
154
+ nil
150
155
  end
151
156
 
152
- # Create an API key
153
- # Provisions a fresh API key for the calling tenant. **The full &#x60;secret&#x60; is included in this response ONLY** — store it immediately. The cleartext secret is not recoverable from the argon2id hash kept server-side; rotate by creating a new key and revoking the old one.
154
- # @param v1_api_keys_post_request [V1ApiKeysPostRequest]
157
+ # Revoke an API key
158
+ # Soft-deletes (sets &#x60;revoked_at&#x60;) on the named key. The row stays for audit purposes; the key no longer authenticates. You **cannot revoke the key currently being used** to make this call — that would lock you out. Use a different &#x60;tenant:admin&#x60; key.
159
+ # @param id [String]
155
160
  # @param [Hash] opts the optional parameters
156
- # @return [Array<(V1ApiKeysPost201Response, Integer, Hash)>] V1ApiKeysPost201Response data, response status code and response headers
157
- def v1_api_keys_post_with_http_info(v1_api_keys_post_request, opts = {})
161
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
162
+ def revoke_api_key_with_http_info(id, opts = {})
158
163
  if @api_client.config.debugging
159
- @api_client.config.logger.debug 'Calling API: ApiKeysApi.v1_api_keys_post ...'
164
+ @api_client.config.logger.debug 'Calling API: ApiKeysApi.revoke_api_key ...'
160
165
  end
161
- # verify the required parameter 'v1_api_keys_post_request' is set
162
- if @api_client.config.client_side_validation && v1_api_keys_post_request.nil?
163
- fail ArgumentError, "Missing the required parameter 'v1_api_keys_post_request' when calling ApiKeysApi.v1_api_keys_post"
166
+ # verify the required parameter 'id' is set
167
+ if @api_client.config.client_side_validation && id.nil?
168
+ fail ArgumentError, "Missing the required parameter 'id' when calling ApiKeysApi.revoke_api_key"
164
169
  end
165
170
  # resource path
166
- local_var_path = '/v1/api-keys'
171
+ local_var_path = '/v1/api-keys/{id}'.sub('{id}', CGI.escape(id.to_s))
167
172
 
168
173
  # query parameters
169
174
  query_params = opts[:query_params] || {}
@@ -171,27 +176,22 @@ module Lockally
171
176
  # header parameters
172
177
  header_params = opts[:header_params] || {}
173
178
  # HTTP header 'Accept' (if needed)
174
- header_params['Accept'] = @api_client.select_header_accept(['application/json', 'application/problem+json']) unless header_params['Accept']
175
- # HTTP header 'Content-Type'
176
- content_type = @api_client.select_header_content_type(['application/json'])
177
- if !content_type.nil?
178
- header_params['Content-Type'] = content_type
179
- end
179
+ header_params['Accept'] = @api_client.select_header_accept(['application/problem+json']) unless header_params['Accept']
180
180
 
181
181
  # form parameters
182
182
  form_params = opts[:form_params] || {}
183
183
 
184
184
  # http body (model)
185
- post_body = opts[:debug_body] || @api_client.object_to_http_body(v1_api_keys_post_request)
185
+ post_body = opts[:debug_body]
186
186
 
187
187
  # return_type
188
- return_type = opts[:debug_return_type] || 'V1ApiKeysPost201Response'
188
+ return_type = opts[:debug_return_type]
189
189
 
190
190
  # auth_names
191
191
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
192
192
 
193
193
  new_options = opts.merge(
194
- :operation => :"ApiKeysApi.v1_api_keys_post",
194
+ :operation => :"ApiKeysApi.revoke_api_key",
195
195
  :header_params => header_params,
196
196
  :query_params => query_params,
197
197
  :form_params => form_params,
@@ -200,9 +200,9 @@ module Lockally
200
200
  :return_type => return_type
201
201
  )
202
202
 
203
- data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
203
+ data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
204
204
  if @api_client.config.debugging
205
- @api_client.config.logger.debug "API called: ApiKeysApi#v1_api_keys_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
205
+ @api_client.config.logger.debug "API called: ApiKeysApi#revoke_api_key\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
206
206
  end
207
207
  return data, status_code, headers
208
208
  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
@@ -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
@@ -230,6 +230,7 @@ module Lockally
230
230
  end
231
231
 
232
232
  # Create a calendar integration
233
+ # Not implemented. Calendar integrations do not sync with any provider yet, so this always answers 501. Listing and deleting still work, for entries created before the feature was withdrawn.
233
234
  # @param create_calendar_integration_request [CreateCalendarIntegrationRequest]
234
235
  # @param [Hash] opts the optional parameters
235
236
  # @return [CalendarIntegration]
@@ -239,6 +240,7 @@ module Lockally
239
240
  end
240
241
 
241
242
  # Create a calendar integration
243
+ # Not implemented. Calendar integrations do not sync with any provider yet, so this always answers 501. Listing and deleting still work, for entries created before the feature was withdrawn.
242
244
  # @param create_calendar_integration_request [CreateCalendarIntegrationRequest]
243
245
  # @param [Hash] opts the optional parameters
244
246
  # @return [Array<(CalendarIntegration, Integer, Hash)>] CalendarIntegration data, response status code and response headers
@@ -545,6 +547,63 @@ module Lockally
545
547
  return data, status_code, headers
546
548
  end
547
549
 
550
+ # Administrative overview of the organization's calendar system
551
+ # Counts across the whole account, plus the recent calendar entries from the audit trail. Not scoped to the caller's own calendar.
552
+ # @param [Hash] opts the optional parameters
553
+ # @return [GetCalendarOverview200Response]
554
+ def get_calendar_overview(opts = {})
555
+ data, _status_code, _headers = get_calendar_overview_with_http_info(opts)
556
+ data
557
+ end
558
+
559
+ # Administrative overview of the organization&#39;s calendar system
560
+ # Counts across the whole account, plus the recent calendar entries from the audit trail. Not scoped to the caller&#39;s own calendar.
561
+ # @param [Hash] opts the optional parameters
562
+ # @return [Array<(GetCalendarOverview200Response, Integer, Hash)>] GetCalendarOverview200Response data, response status code and response headers
563
+ def get_calendar_overview_with_http_info(opts = {})
564
+ if @api_client.config.debugging
565
+ @api_client.config.logger.debug 'Calling API: CalendarsApi.get_calendar_overview ...'
566
+ end
567
+ # resource path
568
+ local_var_path = '/v1/calendar-overview'
569
+
570
+ # query parameters
571
+ query_params = opts[:query_params] || {}
572
+
573
+ # header parameters
574
+ header_params = opts[:header_params] || {}
575
+ # HTTP header 'Accept' (if needed)
576
+ header_params['Accept'] = @api_client.select_header_accept(['application/json', 'application/problem+json']) unless header_params['Accept']
577
+
578
+ # form parameters
579
+ form_params = opts[:form_params] || {}
580
+
581
+ # http body (model)
582
+ post_body = opts[:debug_body]
583
+
584
+ # return_type
585
+ return_type = opts[:debug_return_type] || 'GetCalendarOverview200Response'
586
+
587
+ # auth_names
588
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
589
+
590
+ new_options = opts.merge(
591
+ :operation => :"CalendarsApi.get_calendar_overview",
592
+ :header_params => header_params,
593
+ :query_params => query_params,
594
+ :form_params => form_params,
595
+ :body => post_body,
596
+ :auth_names => auth_names,
597
+ :return_type => return_type
598
+ )
599
+
600
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
601
+ if @api_client.config.debugging
602
+ @api_client.config.logger.debug "API called: CalendarsApi#get_calendar_overview\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
603
+ end
604
+ return data, status_code, headers
605
+ end
606
+
548
607
  # Get calendar policies
549
608
  # @param [Hash] opts the optional parameters
550
609
  # @return [CalendarPolicies]
@@ -961,6 +1020,7 @@ module Lockally
961
1020
  end
962
1021
 
963
1022
  # Trigger sync for a calendar integration
1023
+ # Not implemented. Calendar integrations do not sync with any provider yet, so this always answers 501. Listing and deleting still work, for entries created before the feature was withdrawn.
964
1024
  # @param id [String]
965
1025
  # @param [Hash] opts the optional parameters
966
1026
  # @return [CalendarIntegration]
@@ -970,6 +1030,7 @@ module Lockally
970
1030
  end
971
1031
 
972
1032
  # Trigger sync for a calendar integration
1033
+ # Not implemented. Calendar integrations do not sync with any provider yet, so this always answers 501. Listing and deleting still work, for entries created before the feature was withdrawn.
973
1034
  # @param id [String]
974
1035
  # @param [Hash] opts the optional parameters
975
1036
  # @return [Array<(CalendarIntegration, Integer, Hash)>] CalendarIntegration data, response status code and response headers
@@ -1172,6 +1233,7 @@ module Lockally
1172
1233
  end
1173
1234
 
1174
1235
  # Update a calendar integration
1236
+ # Not implemented. Calendar integrations do not sync with any provider yet, so this always answers 501. Listing and deleting still work, for entries created before the feature was withdrawn.
1175
1237
  # @param id [String]
1176
1238
  # @param update_calendar_integration_request [UpdateCalendarIntegrationRequest]
1177
1239
  # @param [Hash] opts the optional parameters
@@ -1182,6 +1244,7 @@ module Lockally
1182
1244
  end
1183
1245
 
1184
1246
  # Update a calendar integration
1247
+ # Not implemented. Calendar integrations do not sync with any provider yet, so this always answers 501. Listing and deleting still work, for entries created before the feature was withdrawn.
1185
1248
  # @param id [String]
1186
1249
  # @param update_calendar_integration_request [UpdateCalendarIntegrationRequest]
1187
1250
  # @param [Hash] opts the optional parameters
@@ -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
@@ -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