lockally 0.1.0 → 0.2.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 (450) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +32 -7
  3. data/docs/AliasesApi.md +1 -1
  4. data/docs/BatchResult.md +1 -1
  5. data/docs/Calendar.md +8 -0
  6. data/docs/CalendarsApi.md +73 -0
  7. data/docs/DomainsApi.md +279 -0
  8. data/docs/GetCalendarOverview200Response.md +34 -0
  9. data/docs/GetCalendarOverview200ResponseActivityInner.md +24 -0
  10. data/docs/GetUserInsights200Response.md +2 -0
  11. data/docs/MailboxesApi.md +1 -1
  12. data/docs/MessageDetail.md +52 -0
  13. data/docs/ReturnPath.md +28 -0
  14. data/docs/ReturnPathCheck.md +20 -0
  15. data/docs/SendApi.md +9 -9
  16. data/docs/SendMessage.md +4 -0
  17. data/docs/V1ApiKeysPostRequest.md +3 -1
  18. data/docs/V1SendPost200Response.md +24 -0
  19. data/docs/V1SendPostRequest.md +4 -0
  20. data/lib/lockally/api/add_ons_api.rb +1 -1
  21. data/lib/lockally/api/admin_api.rb +1 -1
  22. data/lib/lockally/api/admins_api.rb +1 -1
  23. data/lib/lockally/api/agents_api.rb +1 -1
  24. data/lib/lockally/api/ai_api.rb +1 -1
  25. data/lib/lockally/api/aliases_api.rb +3 -3
  26. data/lib/lockally/api/api_keys_api.rb +1 -1
  27. data/lib/lockally/api/billing_api.rb +1 -1
  28. data/lib/lockally/api/calendars_api.rb +64 -1
  29. data/lib/lockally/api/contact_lists_api.rb +1 -1
  30. data/lib/lockally/api/contacts_api.rb +1 -1
  31. data/lib/lockally/api/dashboard_api.rb +1 -1
  32. data/lib/lockally/api/directory_api.rb +1 -1
  33. data/lib/lockally/api/distribution_lists_api.rb +1 -1
  34. data/lib/lockally/api/domains_api.rb +253 -1
  35. data/lib/lockally/api/drafts_api.rb +1 -1
  36. data/lib/lockally/api/encryption_api.rb +1 -1
  37. data/lib/lockally/api/health_api.rb +1 -1
  38. data/lib/lockally/api/ip_pools_api.rb +1 -1
  39. data/lib/lockally/api/mailboxes_api.rb +3 -3
  40. data/lib/lockally/api/migrations_api.rb +1 -1
  41. data/lib/lockally/api/resources_api.rb +1 -1
  42. data/lib/lockally/api/send_api.rb +9 -9
  43. data/lib/lockally/api/signup_api.rb +1 -1
  44. data/lib/lockally/api/suppressions_api.rb +1 -1
  45. data/lib/lockally/api/templates_api.rb +1 -1
  46. data/lib/lockally/api/tenant_api.rb +1 -1
  47. data/lib/lockally/api/test_api.rb +1 -1
  48. data/lib/lockally/api/users_api.rb +1 -1
  49. data/lib/lockally/api/webhooks_api.rb +1 -1
  50. data/lib/lockally/api_client.rb +1 -1
  51. data/lib/lockally/api_error.rb +1 -1
  52. data/lib/lockally/api_model_base.rb +1 -1
  53. data/lib/lockally/configuration.rb +1 -1
  54. data/lib/lockally/models/activate_add_on200_response.rb +1 -1
  55. data/lib/lockally/models/add_calendar_member_request.rb +1 -1
  56. data/lib/lockally/models/add_contact_list_member_request.rb +1 -1
  57. data/lib/lockally/models/add_on.rb +1 -1
  58. data/lib/lockally/models/add_shared_member_request.rb +1 -1
  59. data/lib/lockally/models/admin.rb +1 -1
  60. data/lib/lockally/models/admin_full.rb +1 -1
  61. data/lib/lockally/models/api_key.rb +1 -1
  62. data/lib/lockally/models/audit_event.rb +1 -1
  63. data/lib/lockally/models/batch_lookup_public_keys200_response.rb +1 -1
  64. data/lib/lockally/models/batch_lookup_public_keys200_response_data_inner.rb +1 -1
  65. data/lib/lockally/models/batch_result.rb +4 -3
  66. data/lib/lockally/models/billing_status.rb +1 -1
  67. data/lib/lockally/models/calendar.rb +68 -4
  68. data/lib/lockally/models/calendar_event.rb +1 -1
  69. data/lib/lockally/models/calendar_integration.rb +1 -1
  70. data/lib/lockally/models/calendar_member.rb +1 -1
  71. data/lib/lockally/models/calendar_policies.rb +1 -1
  72. data/lib/lockally/models/contact.rb +1 -1
  73. data/lib/lockally/models/contact_list.rb +1 -1
  74. data/lib/lockally/models/create_billing_checkout200_response.rb +1 -1
  75. data/lib/lockally/models/create_billing_checkout_request.rb +1 -1
  76. data/lib/lockally/models/create_calendar_event_request.rb +1 -1
  77. data/lib/lockally/models/create_calendar_integration_request.rb +1 -1
  78. data/lib/lockally/models/create_calendar_request.rb +1 -1
  79. data/lib/lockally/models/create_contact_list_request.rb +1 -1
  80. data/lib/lockally/models/create_contact_request.rb +1 -1
  81. data/lib/lockally/models/create_dedicated_ip_request_request.rb +1 -1
  82. data/lib/lockally/models/create_distribution_list_request.rb +1 -1
  83. data/lib/lockally/models/create_encryption_key201_response.rb +1 -1
  84. data/lib/lockally/models/create_encryption_key_request.rb +1 -1
  85. data/lib/lockally/models/create_encryption_recovery_request.rb +1 -1
  86. data/lib/lockally/models/create_migration_credential_request.rb +1 -1
  87. data/lib/lockally/models/create_migration_credential_request_credentials.rb +1 -1
  88. data/lib/lockally/models/create_migration_request.rb +1 -1
  89. data/lib/lockally/models/create_resource_request.rb +1 -1
  90. data/lib/lockally/models/create_units_checkout200_response.rb +1 -1
  91. data/lib/lockally/models/create_units_checkout_request.rb +1 -1
  92. data/lib/lockally/models/create_user_request.rb +1 -1
  93. data/lib/lockally/models/dedicated_ip_request.rb +1 -1
  94. data/lib/lockally/models/directory_permissions.rb +1 -1
  95. data/lib/lockally/models/discover_migration202_response.rb +1 -1
  96. data/lib/lockally/models/distribution_list_detail.rb +1 -1
  97. data/lib/lockally/models/distribution_list_summary.rb +1 -1
  98. data/lib/lockally/models/dns_record.rb +1 -1
  99. data/lib/lockally/models/domain.rb +1 -1
  100. data/lib/lockally/models/gal_settings.rb +1 -1
  101. data/lib/lockally/models/get_add_on_status200_response.rb +1 -1
  102. data/lib/lockally/models/get_audit_summary200_response.rb +1 -1
  103. data/lib/lockally/models/get_calendar_overview200_response.rb +228 -0
  104. data/lib/lockally/models/get_calendar_overview200_response_activity_inner.rb +174 -0
  105. data/lib/lockally/models/get_calendar_security200_response.rb +1 -1
  106. data/lib/lockally/models/get_calendar_security200_response_alerts_inner.rb +1 -1
  107. data/lib/lockally/models/get_calendar_security200_response_delegated_access_inner.rb +1 -1
  108. data/lib/lockally/models/get_calendar_security200_response_external_sharing.rb +1 -1
  109. data/lib/lockally/models/get_calendar_security200_response_public_calendar_list_inner.rb +1 -1
  110. data/lib/lockally/models/get_contact_list200_response.rb +1 -1
  111. data/lib/lockally/models/get_contact_list200_response_members_inner.rb +1 -1
  112. data/lib/lockally/models/get_contact_lists200_response.rb +1 -1
  113. data/lib/lockally/models/get_contact_lists200_response_data_inner.rb +1 -1
  114. data/lib/lockally/models/get_directory_activity200_response.rb +1 -1
  115. data/lib/lockally/models/get_directory_activity200_response_data_inner.rb +1 -1
  116. data/lib/lockally/models/get_directory_stats200_response.rb +1 -1
  117. data/lib/lockally/models/get_domains_status200_response.rb +1 -1
  118. data/lib/lockally/models/get_domains_status200_response_domains_inner.rb +1 -1
  119. data/lib/lockally/models/get_domains_status200_response_domains_inner_checks_inner.rb +1 -1
  120. data/lib/lockally/models/get_encryption_key200_response.rb +1 -1
  121. data/lib/lockally/models/get_integrations_summary200_response.rb +1 -1
  122. data/lib/lockally/models/get_integrations_summary200_response_api_keys_inner.rb +1 -1
  123. data/lib/lockally/models/get_integrations_summary200_response_webhooks_inner.rb +1 -1
  124. data/lib/lockally/models/get_ip_assignment200_response.rb +1 -1
  125. data/lib/lockally/models/get_security200_response.rb +1 -1
  126. data/lib/lockally/models/get_security200_response_alerts_inner.rb +1 -1
  127. data/lib/lockally/models/get_security200_response_stats_inner.rb +1 -1
  128. data/lib/lockally/models/get_storage200_response.rb +1 -1
  129. data/lib/lockally/models/get_storage200_response_top_mailboxes_inner.rb +1 -1
  130. data/lib/lockally/models/get_storage200_response_top_messages_inner.rb +1 -1
  131. data/lib/lockally/models/get_user_insights200_response.rb +12 -2
  132. data/lib/lockally/models/healthz_get200_response.rb +1 -1
  133. data/lib/lockally/models/list_add_ons200_response.rb +1 -1
  134. data/lib/lockally/models/list_calendar_events200_response.rb +1 -1
  135. data/lib/lockally/models/list_calendar_integrations200_response.rb +1 -1
  136. data/lib/lockally/models/list_calendar_members200_response.rb +1 -1
  137. data/lib/lockally/models/list_calendars200_response.rb +1 -1
  138. data/lib/lockally/models/list_contact_lists200_response.rb +1 -1
  139. data/lib/lockally/models/list_contacts200_response.rb +1 -1
  140. data/lib/lockally/models/list_dedicated_ip_requests200_response.rb +1 -1
  141. data/lib/lockally/models/list_distribution_lists200_response.rb +1 -1
  142. data/lib/lockally/models/list_migration_credentials200_response.rb +1 -1
  143. data/lib/lockally/models/list_migration_events200_response.rb +1 -1
  144. data/lib/lockally/models/list_migration_mailboxes200_response.rb +1 -1
  145. data/lib/lockally/models/list_migrations200_response.rb +1 -1
  146. data/lib/lockally/models/list_resources200_response.rb +1 -1
  147. data/lib/lockally/models/list_shared_members200_response.rb +1 -1
  148. data/lib/lockally/models/list_users200_response.rb +1 -1
  149. data/lib/lockally/models/mailbox.rb +1 -1
  150. data/lib/lockally/models/map_migration_request.rb +1 -1
  151. data/lib/lockally/models/map_migration_request_mappings_inner.rb +1 -1
  152. data/lib/lockally/models/message.rb +1 -1
  153. data/lib/lockally/models/message_detail.rb +479 -0
  154. data/lib/lockally/models/message_stats.rb +1 -1
  155. data/lib/lockally/models/message_stats_counts.rb +1 -1
  156. data/lib/lockally/models/message_stats_rates.rb +1 -1
  157. data/lib/lockally/models/message_stats_window.rb +1 -1
  158. data/lib/lockally/models/migration.rb +1 -1
  159. data/lib/lockally/models/migration_credential.rb +1 -1
  160. data/lib/lockally/models/migration_event.rb +1 -1
  161. data/lib/lockally/models/migration_mailbox.rb +1 -1
  162. data/lib/lockally/models/migration_progress.rb +1 -1
  163. data/lib/lockally/models/migration_progress_mailboxes_inner.rb +1 -1
  164. data/lib/lockally/models/migration_settings.rb +1 -1
  165. data/lib/lockally/models/model_alias.rb +1 -1
  166. data/lib/lockally/models/plan_catalog_entry.rb +1 -1
  167. data/lib/lockally/models/problem.rb +1 -1
  168. data/lib/lockally/models/replace_distribution_list_members200_response.rb +1 -1
  169. data/lib/lockally/models/replace_distribution_list_members_request.rb +1 -1
  170. data/lib/lockally/models/resource.rb +1 -1
  171. data/lib/lockally/models/return_path.rb +269 -0
  172. data/lib/lockally/models/return_path_check.rb +157 -0
  173. data/lib/lockally/models/rotate_encryption_key_request.rb +1 -1
  174. data/lib/lockally/models/send_message.rb +22 -2
  175. data/lib/lockally/models/shared_member.rb +1 -1
  176. data/lib/lockally/models/signup_request.rb +1 -1
  177. data/lib/lockally/models/start_migration202_response.rb +1 -1
  178. data/lib/lockally/models/suppression.rb +1 -1
  179. data/lib/lockally/models/template.rb +1 -1
  180. data/lib/lockally/models/template_input.rb +1 -1
  181. data/lib/lockally/models/tenant.rb +1 -1
  182. data/lib/lockally/models/unit_bundle.rb +1 -1
  183. data/lib/lockally/models/update_calendar_event_request.rb +1 -1
  184. data/lib/lockally/models/update_calendar_integration_request.rb +1 -1
  185. data/lib/lockally/models/update_calendar_member_request.rb +1 -1
  186. data/lib/lockally/models/update_calendar_policies_request.rb +1 -1
  187. data/lib/lockally/models/update_calendar_request.rb +1 -1
  188. data/lib/lockally/models/update_contact_list_request.rb +1 -1
  189. data/lib/lockally/models/update_contact_request.rb +1 -1
  190. data/lib/lockally/models/update_directory_permissions_request.rb +1 -1
  191. data/lib/lockally/models/update_gal_settings_request.rb +1 -1
  192. data/lib/lockally/models/update_migration_mailbox_request.rb +1 -1
  193. data/lib/lockally/models/update_migration_request.rb +1 -1
  194. data/lib/lockally/models/update_resource_request.rb +1 -1
  195. data/lib/lockally/models/update_user_request.rb +1 -1
  196. data/lib/lockally/models/user.rb +1 -1
  197. data/lib/lockally/models/user_event.rb +1 -1
  198. data/lib/lockally/models/v1_admin_login_post200_response.rb +1 -1
  199. data/lib/lockally/models/v1_admin_login_post_request.rb +1 -1
  200. data/lib/lockally/models/v1_admin_me_get200_response.rb +1 -1
  201. data/lib/lockally/models/v1_admins_get200_response.rb +1 -1
  202. data/lib/lockally/models/v1_admins_id_patch_request.rb +1 -1
  203. data/lib/lockally/models/v1_admins_post_request.rb +1 -1
  204. data/lib/lockally/models/v1_aliases_get200_response.rb +1 -1
  205. data/lib/lockally/models/v1_aliases_post_request.rb +1 -1
  206. data/lib/lockally/models/v1_api_keys_get200_response.rb +1 -1
  207. data/lib/lockally/models/v1_api_keys_post201_response.rb +1 -1
  208. data/lib/lockally/models/v1_api_keys_post_request.rb +17 -5
  209. data/lib/lockally/models/v1_domains_get200_response.rb +1 -1
  210. data/lib/lockally/models/v1_domains_post_request.rb +1 -1
  211. data/lib/lockally/models/v1_inboxes_mailbox_messages_post_request.rb +1 -1
  212. data/lib/lockally/models/v1_mailboxes_email_export_post201_response.rb +1 -1
  213. data/lib/lockally/models/v1_mailboxes_email_patch_request.rb +1 -1
  214. data/lib/lockally/models/v1_mailboxes_email_vacation_put_request.rb +1 -1
  215. data/lib/lockally/models/v1_mailboxes_get200_response.rb +1 -1
  216. data/lib/lockally/models/v1_mailboxes_post_request.rb +1 -1
  217. data/lib/lockally/models/v1_messages_get200_response.rb +1 -1
  218. data/lib/lockally/models/v1_send_batch_post200_response.rb +1 -1
  219. data/lib/lockally/models/v1_send_batch_post_request.rb +1 -1
  220. data/lib/lockally/models/v1_send_post200_response.rb +218 -0
  221. data/lib/lockally/models/v1_send_post202_response.rb +1 -1
  222. data/lib/lockally/models/v1_send_post_request.rb +22 -2
  223. data/lib/lockally/models/v1_send_post_request_attachments_inner.rb +1 -1
  224. data/lib/lockally/models/v1_suppressions_get200_response.rb +1 -1
  225. data/lib/lockally/models/v1_suppressions_post_request.rb +1 -1
  226. data/lib/lockally/models/v1_templates_get200_response.rb +1 -1
  227. data/lib/lockally/models/v1_usage_get200_response.rb +1 -1
  228. data/lib/lockally/models/v1_vacation_get200_response.rb +1 -1
  229. data/lib/lockally/models/v1_webhooks_get200_response.rb +1 -1
  230. data/lib/lockally/models/v1_webhooks_id_patch_request.rb +1 -1
  231. data/lib/lockally/models/v1_webhooks_post_request.rb +1 -1
  232. data/lib/lockally/models/vacation_params.rb +1 -1
  233. data/lib/lockally/models/vacation_responder.rb +1 -1
  234. data/lib/lockally/models/webhook.rb +1 -1
  235. data/lib/lockally/version.rb +2 -2
  236. data/lib/lockally.rb +7 -1
  237. data/lockally.gemspec +2 -2
  238. data/spec/api/add_ons_api_spec.rb +1 -1
  239. data/spec/api/admin_api_spec.rb +1 -1
  240. data/spec/api/admins_api_spec.rb +1 -1
  241. data/spec/api/agents_api_spec.rb +1 -1
  242. data/spec/api/ai_api_spec.rb +1 -1
  243. data/spec/api/aliases_api_spec.rb +2 -2
  244. data/spec/api/api_keys_api_spec.rb +1 -1
  245. data/spec/api/billing_api_spec.rb +1 -1
  246. data/spec/api/calendars_api_spec.rb +15 -1
  247. data/spec/api/contact_lists_api_spec.rb +1 -1
  248. data/spec/api/contacts_api_spec.rb +1 -1
  249. data/spec/api/dashboard_api_spec.rb +1 -1
  250. data/spec/api/directory_api_spec.rb +1 -1
  251. data/spec/api/distribution_lists_api_spec.rb +1 -1
  252. data/spec/api/domains_api_spec.rb +49 -1
  253. data/spec/api/drafts_api_spec.rb +1 -1
  254. data/spec/api/encryption_api_spec.rb +1 -1
  255. data/spec/api/health_api_spec.rb +1 -1
  256. data/spec/api/ip_pools_api_spec.rb +1 -1
  257. data/spec/api/mailboxes_api_spec.rb +2 -2
  258. data/spec/api/migrations_api_spec.rb +1 -1
  259. data/spec/api/resources_api_spec.rb +1 -1
  260. data/spec/api/send_api_spec.rb +4 -4
  261. data/spec/api/signup_api_spec.rb +1 -1
  262. data/spec/api/suppressions_api_spec.rb +1 -1
  263. data/spec/api/templates_api_spec.rb +1 -1
  264. data/spec/api/tenant_api_spec.rb +1 -1
  265. data/spec/api/test_api_spec.rb +1 -1
  266. data/spec/api/users_api_spec.rb +1 -1
  267. data/spec/api/webhooks_api_spec.rb +1 -1
  268. data/spec/models/activate_add_on200_response_spec.rb +1 -1
  269. data/spec/models/add_calendar_member_request_spec.rb +1 -1
  270. data/spec/models/add_contact_list_member_request_spec.rb +1 -1
  271. data/spec/models/add_on_spec.rb +1 -1
  272. data/spec/models/add_shared_member_request_spec.rb +1 -1
  273. data/spec/models/admin_full_spec.rb +1 -1
  274. data/spec/models/admin_spec.rb +1 -1
  275. data/spec/models/api_key_spec.rb +1 -1
  276. data/spec/models/audit_event_spec.rb +1 -1
  277. data/spec/models/batch_lookup_public_keys200_response_data_inner_spec.rb +1 -1
  278. data/spec/models/batch_lookup_public_keys200_response_spec.rb +1 -1
  279. data/spec/models/batch_result_spec.rb +2 -2
  280. data/spec/models/billing_status_spec.rb +1 -1
  281. data/spec/models/calendar_event_spec.rb +1 -1
  282. data/spec/models/calendar_integration_spec.rb +1 -1
  283. data/spec/models/calendar_member_spec.rb +1 -1
  284. data/spec/models/calendar_policies_spec.rb +1 -1
  285. data/spec/models/calendar_spec.rb +34 -2
  286. data/spec/models/contact_list_spec.rb +1 -1
  287. data/spec/models/contact_spec.rb +1 -1
  288. data/spec/models/create_billing_checkout200_response_spec.rb +1 -1
  289. data/spec/models/create_billing_checkout_request_spec.rb +1 -1
  290. data/spec/models/create_calendar_event_request_spec.rb +1 -1
  291. data/spec/models/create_calendar_integration_request_spec.rb +1 -1
  292. data/spec/models/create_calendar_request_spec.rb +1 -1
  293. data/spec/models/create_contact_list_request_spec.rb +1 -1
  294. data/spec/models/create_contact_request_spec.rb +1 -1
  295. data/spec/models/create_dedicated_ip_request_request_spec.rb +1 -1
  296. data/spec/models/create_distribution_list_request_spec.rb +1 -1
  297. data/spec/models/create_encryption_key201_response_spec.rb +1 -1
  298. data/spec/models/create_encryption_key_request_spec.rb +1 -1
  299. data/spec/models/create_encryption_recovery_request_spec.rb +1 -1
  300. data/spec/models/create_migration_credential_request_credentials_spec.rb +1 -1
  301. data/spec/models/create_migration_credential_request_spec.rb +1 -1
  302. data/spec/models/create_migration_request_spec.rb +1 -1
  303. data/spec/models/create_resource_request_spec.rb +1 -1
  304. data/spec/models/create_units_checkout200_response_spec.rb +1 -1
  305. data/spec/models/create_units_checkout_request_spec.rb +1 -1
  306. data/spec/models/create_user_request_spec.rb +1 -1
  307. data/spec/models/dedicated_ip_request_spec.rb +1 -1
  308. data/spec/models/directory_permissions_spec.rb +1 -1
  309. data/spec/models/discover_migration202_response_spec.rb +1 -1
  310. data/spec/models/distribution_list_detail_spec.rb +1 -1
  311. data/spec/models/distribution_list_summary_spec.rb +1 -1
  312. data/spec/models/dns_record_spec.rb +1 -1
  313. data/spec/models/domain_spec.rb +1 -1
  314. data/spec/models/gal_settings_spec.rb +1 -1
  315. data/spec/models/get_add_on_status200_response_spec.rb +1 -1
  316. data/spec/models/get_audit_summary200_response_spec.rb +1 -1
  317. data/spec/models/get_calendar_overview200_response_activity_inner_spec.rb +54 -0
  318. data/spec/models/get_calendar_overview200_response_spec.rb +84 -0
  319. data/spec/models/get_calendar_security200_response_alerts_inner_spec.rb +1 -1
  320. data/spec/models/get_calendar_security200_response_delegated_access_inner_spec.rb +1 -1
  321. data/spec/models/get_calendar_security200_response_external_sharing_spec.rb +1 -1
  322. data/spec/models/get_calendar_security200_response_public_calendar_list_inner_spec.rb +1 -1
  323. data/spec/models/get_calendar_security200_response_spec.rb +1 -1
  324. data/spec/models/get_contact_list200_response_members_inner_spec.rb +1 -1
  325. data/spec/models/get_contact_list200_response_spec.rb +1 -1
  326. data/spec/models/get_contact_lists200_response_data_inner_spec.rb +1 -1
  327. data/spec/models/get_contact_lists200_response_spec.rb +1 -1
  328. data/spec/models/get_directory_activity200_response_data_inner_spec.rb +1 -1
  329. data/spec/models/get_directory_activity200_response_spec.rb +1 -1
  330. data/spec/models/get_directory_stats200_response_spec.rb +1 -1
  331. data/spec/models/get_domains_status200_response_domains_inner_checks_inner_spec.rb +1 -1
  332. data/spec/models/get_domains_status200_response_domains_inner_spec.rb +1 -1
  333. data/spec/models/get_domains_status200_response_spec.rb +1 -1
  334. data/spec/models/get_encryption_key200_response_spec.rb +1 -1
  335. data/spec/models/get_integrations_summary200_response_api_keys_inner_spec.rb +1 -1
  336. data/spec/models/get_integrations_summary200_response_spec.rb +1 -1
  337. data/spec/models/get_integrations_summary200_response_webhooks_inner_spec.rb +1 -1
  338. data/spec/models/get_ip_assignment200_response_spec.rb +1 -1
  339. data/spec/models/get_security200_response_alerts_inner_spec.rb +1 -1
  340. data/spec/models/get_security200_response_spec.rb +1 -1
  341. data/spec/models/get_security200_response_stats_inner_spec.rb +1 -1
  342. data/spec/models/get_storage200_response_spec.rb +1 -1
  343. data/spec/models/get_storage200_response_top_mailboxes_inner_spec.rb +1 -1
  344. data/spec/models/get_storage200_response_top_messages_inner_spec.rb +1 -1
  345. data/spec/models/get_user_insights200_response_spec.rb +7 -1
  346. data/spec/models/healthz_get200_response_spec.rb +1 -1
  347. data/spec/models/list_add_ons200_response_spec.rb +1 -1
  348. data/spec/models/list_calendar_events200_response_spec.rb +1 -1
  349. data/spec/models/list_calendar_integrations200_response_spec.rb +1 -1
  350. data/spec/models/list_calendar_members200_response_spec.rb +1 -1
  351. data/spec/models/list_calendars200_response_spec.rb +1 -1
  352. data/spec/models/list_contact_lists200_response_spec.rb +1 -1
  353. data/spec/models/list_contacts200_response_spec.rb +1 -1
  354. data/spec/models/list_dedicated_ip_requests200_response_spec.rb +1 -1
  355. data/spec/models/list_distribution_lists200_response_spec.rb +1 -1
  356. data/spec/models/list_migration_credentials200_response_spec.rb +1 -1
  357. data/spec/models/list_migration_events200_response_spec.rb +1 -1
  358. data/spec/models/list_migration_mailboxes200_response_spec.rb +1 -1
  359. data/spec/models/list_migrations200_response_spec.rb +1 -1
  360. data/spec/models/list_resources200_response_spec.rb +1 -1
  361. data/spec/models/list_shared_members200_response_spec.rb +1 -1
  362. data/spec/models/list_users200_response_spec.rb +1 -1
  363. data/spec/models/mailbox_spec.rb +1 -1
  364. data/spec/models/map_migration_request_mappings_inner_spec.rb +1 -1
  365. data/spec/models/map_migration_request_spec.rb +1 -1
  366. data/spec/models/message_detail_spec.rb +142 -0
  367. data/spec/models/message_spec.rb +1 -1
  368. data/spec/models/message_stats_counts_spec.rb +1 -1
  369. data/spec/models/message_stats_rates_spec.rb +1 -1
  370. data/spec/models/message_stats_spec.rb +1 -1
  371. data/spec/models/message_stats_window_spec.rb +1 -1
  372. data/spec/models/migration_credential_spec.rb +1 -1
  373. data/spec/models/migration_event_spec.rb +1 -1
  374. data/spec/models/migration_mailbox_spec.rb +1 -1
  375. data/spec/models/migration_progress_mailboxes_inner_spec.rb +1 -1
  376. data/spec/models/migration_progress_spec.rb +1 -1
  377. data/spec/models/migration_settings_spec.rb +1 -1
  378. data/spec/models/migration_spec.rb +1 -1
  379. data/spec/models/model_alias_spec.rb +1 -1
  380. data/spec/models/plan_catalog_entry_spec.rb +1 -1
  381. data/spec/models/problem_spec.rb +1 -1
  382. data/spec/models/replace_distribution_list_members200_response_spec.rb +1 -1
  383. data/spec/models/replace_distribution_list_members_request_spec.rb +1 -1
  384. data/spec/models/resource_spec.rb +1 -1
  385. data/spec/models/return_path_check_spec.rb +42 -0
  386. data/spec/models/return_path_spec.rb +70 -0
  387. data/spec/models/rotate_encryption_key_request_spec.rb +1 -1
  388. data/spec/models/send_message_spec.rb +13 -1
  389. data/spec/models/shared_member_spec.rb +1 -1
  390. data/spec/models/signup_request_spec.rb +1 -1
  391. data/spec/models/start_migration202_response_spec.rb +1 -1
  392. data/spec/models/suppression_spec.rb +1 -1
  393. data/spec/models/template_input_spec.rb +1 -1
  394. data/spec/models/template_spec.rb +1 -1
  395. data/spec/models/tenant_spec.rb +1 -1
  396. data/spec/models/unit_bundle_spec.rb +1 -1
  397. data/spec/models/update_calendar_event_request_spec.rb +1 -1
  398. data/spec/models/update_calendar_integration_request_spec.rb +1 -1
  399. data/spec/models/update_calendar_member_request_spec.rb +1 -1
  400. data/spec/models/update_calendar_policies_request_spec.rb +1 -1
  401. data/spec/models/update_calendar_request_spec.rb +1 -1
  402. data/spec/models/update_contact_list_request_spec.rb +1 -1
  403. data/spec/models/update_contact_request_spec.rb +1 -1
  404. data/spec/models/update_directory_permissions_request_spec.rb +1 -1
  405. data/spec/models/update_gal_settings_request_spec.rb +1 -1
  406. data/spec/models/update_migration_mailbox_request_spec.rb +1 -1
  407. data/spec/models/update_migration_request_spec.rb +1 -1
  408. data/spec/models/update_resource_request_spec.rb +1 -1
  409. data/spec/models/update_user_request_spec.rb +1 -1
  410. data/spec/models/user_event_spec.rb +1 -1
  411. data/spec/models/user_spec.rb +1 -1
  412. data/spec/models/v1_admin_login_post200_response_spec.rb +1 -1
  413. data/spec/models/v1_admin_login_post_request_spec.rb +1 -1
  414. data/spec/models/v1_admin_me_get200_response_spec.rb +1 -1
  415. data/spec/models/v1_admins_get200_response_spec.rb +1 -1
  416. data/spec/models/v1_admins_id_patch_request_spec.rb +1 -1
  417. data/spec/models/v1_admins_post_request_spec.rb +1 -1
  418. data/spec/models/v1_aliases_get200_response_spec.rb +1 -1
  419. data/spec/models/v1_aliases_post_request_spec.rb +1 -1
  420. data/spec/models/v1_api_keys_get200_response_spec.rb +1 -1
  421. data/spec/models/v1_api_keys_post201_response_spec.rb +1 -1
  422. data/spec/models/v1_api_keys_post_request_spec.rb +8 -2
  423. data/spec/models/v1_domains_get200_response_spec.rb +1 -1
  424. data/spec/models/v1_domains_post_request_spec.rb +1 -1
  425. data/spec/models/v1_inboxes_mailbox_messages_post_request_spec.rb +1 -1
  426. data/spec/models/v1_mailboxes_email_export_post201_response_spec.rb +1 -1
  427. data/spec/models/v1_mailboxes_email_patch_request_spec.rb +1 -1
  428. data/spec/models/v1_mailboxes_email_vacation_put_request_spec.rb +1 -1
  429. data/spec/models/v1_mailboxes_get200_response_spec.rb +1 -1
  430. data/spec/models/v1_mailboxes_post_request_spec.rb +1 -1
  431. data/spec/models/v1_messages_get200_response_spec.rb +1 -1
  432. data/spec/models/v1_send_batch_post200_response_spec.rb +1 -1
  433. data/spec/models/v1_send_batch_post_request_spec.rb +1 -1
  434. data/spec/models/v1_send_post200_response_spec.rb +58 -0
  435. data/spec/models/v1_send_post202_response_spec.rb +1 -1
  436. data/spec/models/v1_send_post_request_attachments_inner_spec.rb +1 -1
  437. data/spec/models/v1_send_post_request_spec.rb +13 -1
  438. data/spec/models/v1_suppressions_get200_response_spec.rb +1 -1
  439. data/spec/models/v1_suppressions_post_request_spec.rb +1 -1
  440. data/spec/models/v1_templates_get200_response_spec.rb +1 -1
  441. data/spec/models/v1_usage_get200_response_spec.rb +1 -1
  442. data/spec/models/v1_vacation_get200_response_spec.rb +1 -1
  443. data/spec/models/v1_webhooks_get200_response_spec.rb +1 -1
  444. data/spec/models/v1_webhooks_id_patch_request_spec.rb +1 -1
  445. data/spec/models/v1_webhooks_post_request_spec.rb +1 -1
  446. data/spec/models/vacation_params_spec.rb +1 -1
  447. data/spec/models/vacation_responder_spec.rb +1 -1
  448. data/spec/models/webhook_spec.rb +1 -1
  449. data/spec/spec_helper.rb +1 -1
  450. metadata +207 -180
@@ -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
@@ -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
@@ -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
@@ -0,0 +1,269 @@
1
+ =begin
2
+ #lockally control plane
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>`, 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
+
6
+ The version of the OpenAPI document: 0.1.0
7
+ Contact: support@lockally.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.23.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Lockally
17
+ class ReturnPath < ApiModelBase
18
+ attr_accessor :status
19
+
20
+ attr_accessor :host
21
+
22
+ attr_accessor :records
23
+
24
+ attr_accessor :check
25
+
26
+ attr_accessor :requested_at
27
+
28
+ attr_accessor :verified_at
29
+
30
+ class EnumAttributeValidator
31
+ attr_reader :datatype
32
+ attr_reader :allowable_values
33
+
34
+ def initialize(datatype, allowable_values)
35
+ @allowable_values = allowable_values.map do |value|
36
+ case datatype.to_s
37
+ when /Integer/i
38
+ value.to_i
39
+ when /Float/i
40
+ value.to_f
41
+ else
42
+ value
43
+ end
44
+ end
45
+ end
46
+
47
+ def valid?(value)
48
+ !value || allowable_values.include?(value)
49
+ end
50
+ end
51
+
52
+ # Attribute mapping from ruby-style variable name to JSON key.
53
+ def self.attribute_map
54
+ {
55
+ :'status' => :'status',
56
+ :'host' => :'host',
57
+ :'records' => :'records',
58
+ :'check' => :'check',
59
+ :'requested_at' => :'requested_at',
60
+ :'verified_at' => :'verified_at'
61
+ }
62
+ end
63
+
64
+ # Returns attribute mapping this model knows about
65
+ def self.acceptable_attribute_map
66
+ attribute_map
67
+ end
68
+
69
+ # Returns all the JSON keys this model knows about
70
+ def self.acceptable_attributes
71
+ acceptable_attribute_map.values
72
+ end
73
+
74
+ # Attribute type mapping.
75
+ def self.openapi_types
76
+ {
77
+ :'status' => :'String',
78
+ :'host' => :'String',
79
+ :'records' => :'Array<DNSRecord>',
80
+ :'check' => :'ReturnPathCheck',
81
+ :'requested_at' => :'Time',
82
+ :'verified_at' => :'Time'
83
+ }
84
+ end
85
+
86
+ # List of attributes with nullable: true
87
+ def self.openapi_nullable
88
+ Set.new([
89
+ ])
90
+ end
91
+
92
+ # Initializes the object
93
+ # @param [Hash] attributes Model attributes in the form of hash
94
+ def initialize(attributes = {})
95
+ if (!attributes.is_a?(Hash))
96
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Lockally::ReturnPath` initialize method"
97
+ end
98
+
99
+ # check to see if the attribute exists and convert string to symbol for hash key
100
+ acceptable_attribute_map = self.class.acceptable_attribute_map
101
+ attributes = attributes.each_with_object({}) { |(k, v), h|
102
+ if (!acceptable_attribute_map.key?(k.to_sym))
103
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Lockally::ReturnPath`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
104
+ end
105
+ h[k.to_sym] = v
106
+ }
107
+
108
+ if attributes.key?(:'status')
109
+ self.status = attributes[:'status']
110
+ else
111
+ self.status = nil
112
+ end
113
+
114
+ if attributes.key?(:'host')
115
+ self.host = attributes[:'host']
116
+ else
117
+ self.host = nil
118
+ end
119
+
120
+ if attributes.key?(:'records')
121
+ if (value = attributes[:'records']).is_a?(Array)
122
+ self.records = value
123
+ end
124
+ else
125
+ self.records = nil
126
+ end
127
+
128
+ if attributes.key?(:'check')
129
+ self.check = attributes[:'check']
130
+ end
131
+
132
+ if attributes.key?(:'requested_at')
133
+ self.requested_at = attributes[:'requested_at']
134
+ end
135
+
136
+ if attributes.key?(:'verified_at')
137
+ self.verified_at = attributes[:'verified_at']
138
+ end
139
+ end
140
+
141
+ # Show invalid properties with the reasons. Usually used together with valid?
142
+ # @return Array for valid properties with the reasons
143
+ def list_invalid_properties
144
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
145
+ invalid_properties = Array.new
146
+ if @status.nil?
147
+ invalid_properties.push('invalid value for "status", status cannot be nil.')
148
+ end
149
+
150
+ if @host.nil?
151
+ invalid_properties.push('invalid value for "host", host cannot be nil.')
152
+ end
153
+
154
+ if @records.nil?
155
+ invalid_properties.push('invalid value for "records", records cannot be nil.')
156
+ end
157
+
158
+ invalid_properties
159
+ end
160
+
161
+ # Check to see if the all the properties in the model are valid
162
+ # @return true if the model is valid
163
+ def valid?
164
+ warn '[DEPRECATED] the `valid?` method is obsolete'
165
+ return false if @status.nil?
166
+ status_validator = EnumAttributeValidator.new('String', ["false", "pending", "active"])
167
+ return false unless status_validator.valid?(@status)
168
+ return false if @host.nil?
169
+ return false if @records.nil?
170
+ true
171
+ end
172
+
173
+ # Custom attribute writer method checking allowed values (enum).
174
+ # @param [Object] status Object to be assigned
175
+ def status=(status)
176
+ validator = EnumAttributeValidator.new('String', ["false", "pending", "active"])
177
+ unless validator.valid?(status)
178
+ fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
179
+ end
180
+ @status = status
181
+ end
182
+
183
+ # Custom attribute writer method with validation
184
+ # @param [Object] host Value to be assigned
185
+ def host=(host)
186
+ if host.nil?
187
+ fail ArgumentError, 'host cannot be nil'
188
+ end
189
+
190
+ @host = host
191
+ end
192
+
193
+ # Custom attribute writer method with validation
194
+ # @param [Object] records Value to be assigned
195
+ def records=(records)
196
+ if records.nil?
197
+ fail ArgumentError, 'records cannot be nil'
198
+ end
199
+
200
+ @records = records
201
+ end
202
+
203
+ # Checks equality by comparing each attribute.
204
+ # @param [Object] Object to be compared
205
+ def ==(o)
206
+ return true if self.equal?(o)
207
+ self.class == o.class &&
208
+ status == o.status &&
209
+ host == o.host &&
210
+ records == o.records &&
211
+ check == o.check &&
212
+ requested_at == o.requested_at &&
213
+ verified_at == o.verified_at
214
+ end
215
+
216
+ # @see the `==` method
217
+ # @param [Object] Object to be compared
218
+ def eql?(o)
219
+ self == o
220
+ end
221
+
222
+ # Calculates hash code according to all attributes.
223
+ # @return [Integer] Hash code
224
+ def hash
225
+ [status, host, records, check, requested_at, verified_at].hash
226
+ end
227
+
228
+ # Builds the object from hash
229
+ # @param [Hash] attributes Model attributes in the form of hash
230
+ # @return [Object] Returns the model itself
231
+ def self.build_from_hash(attributes)
232
+ return nil unless attributes.is_a?(Hash)
233
+ attributes = attributes.transform_keys(&:to_sym)
234
+ transformed_hash = {}
235
+ openapi_types.each_pair do |key, type|
236
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
237
+ transformed_hash["#{key}"] = nil
238
+ elsif type =~ /\AArray<(.*)>/i
239
+ # check to ensure the input is an array given that the attribute
240
+ # is documented as an array but the input is not
241
+ if attributes[attribute_map[key]].is_a?(Array)
242
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
243
+ end
244
+ elsif !attributes[attribute_map[key]].nil?
245
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
246
+ end
247
+ end
248
+ new(transformed_hash)
249
+ end
250
+
251
+ # Returns the object in the form of hash
252
+ # @return [Hash] Returns the object in the form of hash
253
+ def to_hash
254
+ hash = {}
255
+ self.class.attribute_map.each_pair do |attr, param|
256
+ value = self.send(attr)
257
+ if value.nil?
258
+ is_nullable = self.class.openapi_nullable.include?(attr)
259
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
260
+ end
261
+
262
+ hash[param] = _to_hash(value)
263
+ end
264
+ hash
265
+ end
266
+
267
+ end
268
+
269
+ end
@@ -0,0 +1,157 @@
1
+ =begin
2
+ #lockally control plane
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>`, 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
+
6
+ The version of the OpenAPI document: 0.1.0
7
+ Contact: support@lockally.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.23.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Lockally
17
+ # Present after a verify call.
18
+ class ReturnPathCheck < ApiModelBase
19
+ attr_accessor :mx
20
+
21
+ attr_accessor :spf
22
+
23
+ # Attribute mapping from ruby-style variable name to JSON key.
24
+ def self.attribute_map
25
+ {
26
+ :'mx' => :'mx',
27
+ :'spf' => :'spf'
28
+ }
29
+ end
30
+
31
+ # Returns attribute mapping this model knows about
32
+ def self.acceptable_attribute_map
33
+ attribute_map
34
+ end
35
+
36
+ # Returns all the JSON keys this model knows about
37
+ def self.acceptable_attributes
38
+ acceptable_attribute_map.values
39
+ end
40
+
41
+ # Attribute type mapping.
42
+ def self.openapi_types
43
+ {
44
+ :'mx' => :'Boolean',
45
+ :'spf' => :'Boolean'
46
+ }
47
+ end
48
+
49
+ # List of attributes with nullable: true
50
+ def self.openapi_nullable
51
+ Set.new([
52
+ ])
53
+ end
54
+
55
+ # Initializes the object
56
+ # @param [Hash] attributes Model attributes in the form of hash
57
+ def initialize(attributes = {})
58
+ if (!attributes.is_a?(Hash))
59
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Lockally::ReturnPathCheck` initialize method"
60
+ end
61
+
62
+ # check to see if the attribute exists and convert string to symbol for hash key
63
+ acceptable_attribute_map = self.class.acceptable_attribute_map
64
+ attributes = attributes.each_with_object({}) { |(k, v), h|
65
+ if (!acceptable_attribute_map.key?(k.to_sym))
66
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Lockally::ReturnPathCheck`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
67
+ end
68
+ h[k.to_sym] = v
69
+ }
70
+
71
+ if attributes.key?(:'mx')
72
+ self.mx = attributes[:'mx']
73
+ end
74
+
75
+ if attributes.key?(:'spf')
76
+ self.spf = attributes[:'spf']
77
+ end
78
+ end
79
+
80
+ # Show invalid properties with the reasons. Usually used together with valid?
81
+ # @return Array for valid properties with the reasons
82
+ def list_invalid_properties
83
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
84
+ invalid_properties = Array.new
85
+ invalid_properties
86
+ end
87
+
88
+ # Check to see if the all the properties in the model are valid
89
+ # @return true if the model is valid
90
+ def valid?
91
+ warn '[DEPRECATED] the `valid?` method is obsolete'
92
+ true
93
+ end
94
+
95
+ # Checks equality by comparing each attribute.
96
+ # @param [Object] Object to be compared
97
+ def ==(o)
98
+ return true if self.equal?(o)
99
+ self.class == o.class &&
100
+ mx == o.mx &&
101
+ spf == o.spf
102
+ end
103
+
104
+ # @see the `==` method
105
+ # @param [Object] Object to be compared
106
+ def eql?(o)
107
+ self == o
108
+ end
109
+
110
+ # Calculates hash code according to all attributes.
111
+ # @return [Integer] Hash code
112
+ def hash
113
+ [mx, spf].hash
114
+ end
115
+
116
+ # Builds the object from hash
117
+ # @param [Hash] attributes Model attributes in the form of hash
118
+ # @return [Object] Returns the model itself
119
+ def self.build_from_hash(attributes)
120
+ return nil unless attributes.is_a?(Hash)
121
+ attributes = attributes.transform_keys(&:to_sym)
122
+ transformed_hash = {}
123
+ openapi_types.each_pair do |key, type|
124
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
125
+ transformed_hash["#{key}"] = nil
126
+ elsif type =~ /\AArray<(.*)>/i
127
+ # check to ensure the input is an array given that the attribute
128
+ # is documented as an array but the input is not
129
+ if attributes[attribute_map[key]].is_a?(Array)
130
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
131
+ end
132
+ elsif !attributes[attribute_map[key]].nil?
133
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
134
+ end
135
+ end
136
+ new(transformed_hash)
137
+ end
138
+
139
+ # Returns the object in the form of hash
140
+ # @return [Hash] Returns the object in the form of hash
141
+ def to_hash
142
+ hash = {}
143
+ self.class.attribute_map.each_pair do |attr, param|
144
+ value = self.send(attr)
145
+ if value.nil?
146
+ is_nullable = self.class.openapi_nullable.include?(attr)
147
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
148
+ end
149
+
150
+ hash[param] = _to_hash(value)
151
+ end
152
+ hash
153
+ end
154
+
155
+ end
156
+
157
+ 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
@@ -31,6 +31,12 @@ module Lockally
31
31
 
32
32
  attr_accessor :headers
33
33
 
34
+ # Where replies go. Required when `from` has no mailbox behind it. The named form `Acme Support <a@b.com>` is also accepted.
35
+ attr_accessor :reply_to
36
+
37
+ # Display name shown on `Reply-To`. Ignored without `reply_to`.
38
+ attr_accessor :reply_to_name
39
+
34
40
  attr_accessor :unsubscribe
35
41
 
36
42
  attr_accessor :template_id
@@ -52,6 +58,8 @@ module Lockally
52
58
  :'text' => :'text',
53
59
  :'html' => :'html',
54
60
  :'headers' => :'headers',
61
+ :'reply_to' => :'reply_to',
62
+ :'reply_to_name' => :'reply_to_name',
55
63
  :'unsubscribe' => :'unsubscribe',
56
64
  :'template_id' => :'template_id',
57
65
  :'variables' => :'variables',
@@ -81,6 +89,8 @@ module Lockally
81
89
  :'text' => :'String',
82
90
  :'html' => :'String',
83
91
  :'headers' => :'Hash<String, String>',
92
+ :'reply_to' => :'String',
93
+ :'reply_to_name' => :'String',
84
94
  :'unsubscribe' => :'Boolean',
85
95
  :'template_id' => :'String',
86
96
  :'variables' => :'Hash<String, String>',
@@ -155,6 +165,14 @@ module Lockally
155
165
  end
156
166
  end
157
167
 
168
+ if attributes.key?(:'reply_to')
169
+ self.reply_to = attributes[:'reply_to']
170
+ end
171
+
172
+ if attributes.key?(:'reply_to_name')
173
+ self.reply_to_name = attributes[:'reply_to_name']
174
+ end
175
+
158
176
  if attributes.key?(:'unsubscribe')
159
177
  self.unsubscribe = attributes[:'unsubscribe']
160
178
  end
@@ -247,6 +265,8 @@ module Lockally
247
265
  text == o.text &&
248
266
  html == o.html &&
249
267
  headers == o.headers &&
268
+ reply_to == o.reply_to &&
269
+ reply_to_name == o.reply_to_name &&
250
270
  unsubscribe == o.unsubscribe &&
251
271
  template_id == o.template_id &&
252
272
  variables == o.variables &&
@@ -263,7 +283,7 @@ module Lockally
263
283
  # Calculates hash code according to all attributes.
264
284
  # @return [Integer] Hash code
265
285
  def hash
266
- [from, to, cc, bcc, subject, text, html, headers, unsubscribe, template_id, variables, send_at, attachments].hash
286
+ [from, to, cc, bcc, subject, text, html, headers, reply_to, reply_to_name, unsubscribe, template_id, variables, send_at, attachments].hash
267
287
  end
268
288
 
269
289
  # Builds the object from hash