lockally 0.3.1 → 0.3.3

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -5
  3. data/docs/AdminApi.md +3 -3
  4. data/docs/AdminsApi.md +1 -1
  5. data/docs/AgentSendResult.md +6 -2
  6. data/docs/AgentsApi.md +2 -2
  7. data/docs/AiApi.md +1 -1
  8. data/docs/AliasesApi.md +1 -1
  9. data/docs/ApiKeysApi.md +3 -3
  10. data/docs/DomainsApi.md +3 -3
  11. data/docs/MailboxGrant.md +7 -3
  12. data/docs/MailboxGrantList.md +2 -2
  13. data/docs/MailboxesApi.md +6 -6
  14. data/docs/MarkReadResult.md +2 -0
  15. data/docs/SendApi.md +4 -4
  16. data/docs/SimulatedInbound.md +6 -0
  17. data/docs/TenantApi.md +1 -1
  18. data/docs/TestApi.md +1 -1
  19. data/docs/ThreadClassification.md +2 -0
  20. data/docs/ThreadMessageBody.md +10 -26
  21. data/docs/{ThreadMessageBodyAllOfBody.md → ThreadMessageBodyBody.md} +2 -2
  22. data/docs/WebhooksApi.md +3 -3
  23. data/docs/Whoami.md +7 -7
  24. data/docs/WhoamiKey.md +20 -0
  25. data/docs/WhoamiTenant.md +22 -0
  26. data/lib/lockally/api/admin_api.rb +6 -6
  27. data/lib/lockally/api/admins_api.rb +2 -2
  28. data/lib/lockally/api/agents_api.rb +4 -4
  29. data/lib/lockally/api/ai_api.rb +2 -2
  30. data/lib/lockally/api/aliases_api.rb +2 -2
  31. data/lib/lockally/api/api_keys_api.rb +6 -6
  32. data/lib/lockally/api/domains_api.rb +6 -6
  33. data/lib/lockally/api/mailboxes_api.rb +12 -12
  34. data/lib/lockally/api/send_api.rb +8 -8
  35. data/lib/lockally/api/tenant_api.rb +2 -2
  36. data/lib/lockally/api/test_api.rb +2 -2
  37. data/lib/lockally/api/webhooks_api.rb +6 -6
  38. data/lib/lockally/models/agent_send_result.rb +72 -1
  39. data/lib/lockally/models/mailbox_grant.rb +28 -10
  40. data/lib/lockally/models/mailbox_grant_list.rb +17 -17
  41. data/lib/lockally/models/mark_read_result.rb +10 -1
  42. data/lib/lockally/models/simulated_inbound.rb +29 -1
  43. data/lib/lockally/models/thread_classification.rb +11 -1
  44. data/lib/lockally/models/thread_message_body.rb +58 -233
  45. data/lib/lockally/models/{thread_message_body_all_of_body.rb → thread_message_body_body.rb} +4 -3
  46. data/lib/lockally/models/whoami.rb +98 -24
  47. data/lib/lockally/models/whoami_key.rb +157 -0
  48. data/lib/lockally/models/whoami_tenant.rb +166 -0
  49. data/lib/lockally/version.rb +1 -1
  50. data/lib/lockally.rb +3 -1
  51. data/spec/api/admin_api_spec.rb +3 -3
  52. data/spec/api/admins_api_spec.rb +1 -1
  53. data/spec/api/agents_api_spec.rb +2 -2
  54. data/spec/api/ai_api_spec.rb +1 -1
  55. data/spec/api/aliases_api_spec.rb +1 -1
  56. data/spec/api/api_keys_api_spec.rb +3 -3
  57. data/spec/api/domains_api_spec.rb +3 -3
  58. data/spec/api/mailboxes_api_spec.rb +6 -6
  59. data/spec/api/send_api_spec.rb +4 -4
  60. data/spec/api/tenant_api_spec.rb +1 -1
  61. data/spec/api/test_api_spec.rb +1 -1
  62. data/spec/api/webhooks_api_spec.rb +3 -3
  63. data/spec/models/agent_send_result_spec.rb +12 -0
  64. data/spec/models/mailbox_grant_list_spec.rb +1 -1
  65. data/spec/models/mailbox_grant_spec.rb +13 -1
  66. data/spec/models/mark_read_result_spec.rb +6 -0
  67. data/spec/models/simulated_inbound_spec.rb +18 -0
  68. data/spec/models/thread_classification_spec.rb +6 -0
  69. data/spec/models/{thread_message_body_all_of_body_spec.rb → thread_message_body_body_spec.rb} +6 -6
  70. data/spec/models/thread_message_body_spec.rb +5 -57
  71. data/spec/models/whoami_key_spec.rb +42 -0
  72. data/spec/models/whoami_spec.rb +8 -4
  73. data/spec/models/whoami_tenant_spec.rb +48 -0
  74. metadata +14 -6
@@ -20,7 +20,7 @@ module Lockally
20
20
  @api_client = api_client
21
21
  end
22
22
  # Tenant-admin email+password login
23
- # Exchanges an admin's email + password for a session token. The web console at `app.lockally.com` posts this on form submission and stores the returned token in an httpOnly cookie. **No enumeration leak.** Wrong-email and wrong-password both return the same 401 with title \"Invalid credentials\". The argon2id verify runs even on lookup miss (well, structurally — the lookup fails fast but the response shape is constant) so timing leaks are bounded. Tokens are prefixed `adm_sess_` and valid for 7 days. Use as the `Authorization: Bearer` value on all subsequent calls.
23
+ # Exchanges an admin's email + password for a session token. The web console at `app.lockally.com` posts this on form submission and stores the returned token in an httpOnly cookie. **No enumeration leak.** Wrong-email and wrong-password both return the same 401 with title \"Invalid credentials\". The argon2id verify runs even on lookup miss (well, structurally, the lookup fails fast but the response shape is constant) so timing leaks are bounded. Tokens are prefixed `adm_sess_` and valid for 7 days. Use as the `Authorization: Bearer` value on all subsequent calls.
24
24
  # @param admin_login_request [AdminLoginRequest]
25
25
  # @param [Hash] opts the optional parameters
26
26
  # @return [AdminLogin200Response]
@@ -30,7 +30,7 @@ module Lockally
30
30
  end
31
31
 
32
32
  # Tenant-admin email+password login
33
- # Exchanges an admin's email + password for a session token. The web console at `app.lockally.com` posts this on form submission and stores the returned token in an httpOnly cookie. **No enumeration leak.** Wrong-email and wrong-password both return the same 401 with title \"Invalid credentials\". The argon2id verify runs even on lookup miss (well, structurally — the lookup fails fast but the response shape is constant) so timing leaks are bounded. Tokens are prefixed `adm_sess_` and valid for 7 days. Use as the `Authorization: Bearer` value on all subsequent calls.
33
+ # Exchanges an admin's email + password for a session token. The web console at `app.lockally.com` posts this on form submission and stores the returned token in an httpOnly cookie. **No enumeration leak.** Wrong-email and wrong-password both return the same 401 with title \"Invalid credentials\". The argon2id verify runs even on lookup miss (well, structurally, the lookup fails fast but the response shape is constant) so timing leaks are bounded. Tokens are prefixed `adm_sess_` and valid for 7 days. Use as the `Authorization: Bearer` value on all subsequent calls.
34
34
  # @param admin_login_request [AdminLoginRequest]
35
35
  # @param [Hash] opts the optional parameters
36
36
  # @return [Array<(AdminLogin200Response, Integer, Hash)>] AdminLogin200Response data, response status code and response headers
@@ -88,7 +88,7 @@ module Lockally
88
88
  end
89
89
 
90
90
  # Invalidate the current admin session
91
- # Deletes the session row from the database. Idempotent — calling logout on an already-invalid token returns 204 anyway.
91
+ # Deletes the session row from the database. Idempotent, calling logout on an already-invalid token returns 204 anyway.
92
92
  # @param [Hash] opts the optional parameters
93
93
  # @return [nil]
94
94
  def admin_logout(opts = {})
@@ -97,7 +97,7 @@ module Lockally
97
97
  end
98
98
 
99
99
  # Invalidate the current admin session
100
- # Deletes the session row from the database. Idempotent — calling logout on an already-invalid token returns 204 anyway.
100
+ # Deletes the session row from the database. Idempotent, calling logout on an already-invalid token returns 204 anyway.
101
101
  # @param [Hash] opts the optional parameters
102
102
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
103
103
  def admin_logout_with_http_info(opts = {})
@@ -145,7 +145,7 @@ module Lockally
145
145
  end
146
146
 
147
147
  # Get the current admin + tenant
148
- # Returns the admin profile + tenant for the session token presented in `Authorization: Bearer`. Used by the web console's layout load function to populate the sidebar. Returns 403 if called with an API key (lk_live_*) bearer — admin context only exists for session tokens.
148
+ # Returns the admin profile + tenant for the session token presented in `Authorization: Bearer`. Used by the web console's layout load function to populate the sidebar. Returns 403 if called with an API key (lk_live_*) bearer, admin context only exists for session tokens.
149
149
  # @param [Hash] opts the optional parameters
150
150
  # @return [GetCurrentAdmin200Response]
151
151
  def get_current_admin(opts = {})
@@ -154,7 +154,7 @@ module Lockally
154
154
  end
155
155
 
156
156
  # Get the current admin + tenant
157
- # Returns the admin profile + tenant for the session token presented in &#x60;Authorization: Bearer&#x60;. Used by the web console&#39;s layout load function to populate the sidebar. Returns 403 if called with an API key (lk_live_*) bearer — admin context only exists for session tokens.
157
+ # Returns the admin profile + tenant for the session token presented in &#x60;Authorization: Bearer&#x60;. Used by the web console&#39;s layout load function to populate the sidebar. Returns 403 if called with an API key (lk_live_*) bearer, admin context only exists for session tokens.
158
158
  # @param [Hash] opts the optional parameters
159
159
  # @return [Array<(GetCurrentAdmin200Response, Integer, Hash)>] GetCurrentAdmin200Response data, response status code and response headers
160
160
  def get_current_admin_with_http_info(opts = {})
@@ -206,7 +206,7 @@ module Lockally
206
206
  end
207
207
 
208
208
  # Update an admin
209
- # Supply at least one of `password`, `display_name`, `role`, `disabled`. **Safety rails.** A session bearer (adm_sess_*) cannot disable itself — use another admin or an API key (which bypasses the self-rail). Disabling the last active admin returns 409 to prevent orphaning the tenant from its console.
209
+ # Supply at least one of `password`, `display_name`, `role`, `disabled`. **Safety rails.** A session bearer (adm_sess_*) cannot disable itself, use another admin or an API key (which bypasses the self-rail). Disabling the last active admin returns 409 to prevent orphaning the tenant from its console.
210
210
  # @param id [String]
211
211
  # @param update_admin_request [UpdateAdminRequest]
212
212
  # @param [Hash] opts the optional parameters
@@ -217,7 +217,7 @@ module Lockally
217
217
  end
218
218
 
219
219
  # Update an admin
220
- # Supply at least one of &#x60;password&#x60;, &#x60;display_name&#x60;, &#x60;role&#x60;, &#x60;disabled&#x60;. **Safety rails.** A session bearer (adm_sess_*) cannot disable itself — use another admin or an API key (which bypasses the self-rail). Disabling the last active admin returns 409 to prevent orphaning the tenant from its console.
220
+ # Supply at least one of &#x60;password&#x60;, &#x60;display_name&#x60;, &#x60;role&#x60;, &#x60;disabled&#x60;. **Safety rails.** A session bearer (adm_sess_*) cannot disable itself, use another admin or an API key (which bypasses the self-rail). Disabling the last active admin returns 409 to prevent orphaning the tenant from its console.
221
221
  # @param id [String]
222
222
  # @param update_admin_request [UpdateAdminRequest]
223
223
  # @param [Hash] opts the optional parameters
@@ -227,7 +227,7 @@ module Lockally
227
227
  end
228
228
 
229
229
  # Grant a mailbox to a key
230
- # Body: {\"mailbox\": \"email or id\"}. Refused (422) for mailboxes with agent access disabled or an active E2E encryption key — the server cannot read E2E mailboxes.
230
+ # Body: {\"mailbox\": \"email or id\"}. Refused (422) for mailboxes with agent access disabled or an active E2E encryption key, the server cannot read E2E mailboxes.
231
231
  # @param key_id [String]
232
232
  # @param [Hash] opts the optional parameters
233
233
  # @return [MailboxGrant]
@@ -237,7 +237,7 @@ module Lockally
237
237
  end
238
238
 
239
239
  # Grant a mailbox to a key
240
- # Body: {\&quot;mailbox\&quot;: \&quot;email or id\&quot;}. Refused (422) for mailboxes with agent access disabled or an active E2E encryption key — the server cannot read E2E mailboxes.
240
+ # Body: {\&quot;mailbox\&quot;: \&quot;email or id\&quot;}. Refused (422) for mailboxes with agent access disabled or an active E2E encryption key, the server cannot read E2E mailboxes.
241
241
  # @param key_id [String]
242
242
  # @param [Hash] opts the optional parameters
243
243
  # @return [Array<(MailboxGrant, Integer, Hash)>] MailboxGrant data, response status code and response headers
@@ -617,7 +617,7 @@ module Lockally
617
617
  end
618
618
 
619
619
  # Reply in-thread (agent stream)
620
- # The server builds In-Reply-To/References and defaults recipients + subject from the conversation — a minimal call is {\"text\": \"...\"}. Guarded by the reply-loop detector (≥5 outbound/10min → 429 + agent.loop_detected). Idempotency-Key required.
620
+ # The server builds In-Reply-To/References and defaults recipients + subject from the conversation, a minimal call is {\"text\": \"...\"}. Guarded by the reply-loop detector (≥5 outbound/10min → 429 + agent.loop_detected). Idempotency-Key required.
621
621
  # @param thread_id [String]
622
622
  # @param idempotency_key [String]
623
623
  # @param [Hash] opts the optional parameters
@@ -628,7 +628,7 @@ module Lockally
628
628
  end
629
629
 
630
630
  # Reply in-thread (agent stream)
631
- # The server builds In-Reply-To/References and defaults recipients + subject from the conversation — a minimal call is {\&quot;text\&quot;: \&quot;...\&quot;}. Guarded by the reply-loop detector (≥5 outbound/10min → 429 + agent.loop_detected). Idempotency-Key required.
631
+ # The server builds In-Reply-To/References and defaults recipients + subject from the conversation, a minimal call is {\&quot;text\&quot;: \&quot;...\&quot;}. Guarded by the reply-loop detector (≥5 outbound/10min → 429 + agent.loop_detected). Idempotency-Key required.
632
632
  # @param thread_id [String]
633
633
  # @param idempotency_key [String]
634
634
  # @param [Hash] opts the optional parameters
@@ -20,7 +20,7 @@ module Lockally
20
20
  @api_client = api_client
21
21
  end
22
22
  # LLM-classify a thread
23
- # Returns {intent, urgency, summary, suggested_action} via the tenant's AI tier (BYOK or prepaid units — see /v1/ai-config). Cached per thread state: unchanged threads return the cache free; ?refresh=true forces a re-run. A failed model call charges nothing. 402 when the AI tier is off.
23
+ # Returns {intent, urgency, summary, suggested_action} via the tenant's AI tier (BYOK or prepaid units, see /v1/ai-config). Cached per thread state: unchanged threads return the cache free; ?refresh=true forces a re-run. A failed model call charges nothing. 402 when the AI tier is off.
24
24
  # @param thread_id [String]
25
25
  # @param [Hash] opts the optional parameters
26
26
  # @option opts [Boolean] :refresh
@@ -31,7 +31,7 @@ module Lockally
31
31
  end
32
32
 
33
33
  # LLM-classify a thread
34
- # Returns {intent, urgency, summary, suggested_action} via the tenant&#39;s AI tier (BYOK or prepaid units — see /v1/ai-config). Cached per thread state: unchanged threads return the cache free; ?refresh&#x3D;true forces a re-run. A failed model call charges nothing. 402 when the AI tier is off.
34
+ # Returns {intent, urgency, summary, suggested_action} via the tenant&#39;s AI tier (BYOK or prepaid units, see /v1/ai-config). Cached per thread state: unchanged threads return the cache free; ?refresh&#x3D;true forces a re-run. A failed model call charges nothing. 402 when the AI tier is off.
35
35
  # @param thread_id [String]
36
36
  # @param [Hash] opts the optional parameters
37
37
  # @option opts [Boolean] :refresh
@@ -88,7 +88,7 @@ module Lockally
88
88
  end
89
89
 
90
90
  # Delete an alias
91
- # Hard-delete (no soft-delete window — aliases are cheap to recreate).
91
+ # Hard-delete (no soft-delete window, aliases are cheap to recreate).
92
92
  # @param address [String]
93
93
  # @param [Hash] opts the optional parameters
94
94
  # @return [nil]
@@ -98,7 +98,7 @@ module Lockally
98
98
  end
99
99
 
100
100
  # Delete an alias
101
- # Hard-delete (no soft-delete window — aliases are cheap to recreate).
101
+ # Hard-delete (no soft-delete window, aliases are cheap to recreate).
102
102
  # @param address [String]
103
103
  # @param [Hash] opts the optional parameters
104
104
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -20,7 +20,7 @@ module Lockally
20
20
  @api_client = api_client
21
21
  end
22
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.
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
24
  # @param create_api_key_request [CreateApiKeyRequest]
25
25
  # @param [Hash] opts the optional parameters
26
26
  # @return [CreateApiKey201Response]
@@ -30,7 +30,7 @@ module Lockally
30
30
  end
31
31
 
32
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.
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
34
  # @param create_api_key_request [CreateApiKeyRequest]
35
35
  # @param [Hash] opts the optional parameters
36
36
  # @return [Array<(CreateApiKey201Response, Integer, Hash)>] CreateApiKey201Response data, response status code and response headers
@@ -88,7 +88,7 @@ module Lockally
88
88
  end
89
89
 
90
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.
91
+ # Returns all API keys (active and revoked) belonging to the calling tenant. The `secret` is **never** returned, only prefix + metadata.
92
92
  # @param [Hash] opts the optional parameters
93
93
  # @return [ListApiKeys200Response]
94
94
  def list_api_keys(opts = {})
@@ -97,7 +97,7 @@ module Lockally
97
97
  end
98
98
 
99
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.
100
+ # Returns all API keys (active and revoked) belonging to the calling tenant. The &#x60;secret&#x60; is **never** returned, only prefix + metadata.
101
101
  # @param [Hash] opts the optional parameters
102
102
  # @return [Array<(ListApiKeys200Response, Integer, Hash)>] ListApiKeys200Response data, response status code and response headers
103
103
  def list_api_keys_with_http_info(opts = {})
@@ -145,7 +145,7 @@ module Lockally
145
145
  end
146
146
 
147
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.
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
149
  # @param id [String]
150
150
  # @param [Hash] opts the optional parameters
151
151
  # @return [nil]
@@ -155,7 +155,7 @@ module Lockally
155
155
  end
156
156
 
157
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.
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
159
  # @param id [String]
160
160
  # @param [Hash] opts the optional parameters
161
161
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -20,7 +20,7 @@ module Lockally
20
20
  @api_client = api_client
21
21
  end
22
22
  # Register a domain
23
- # Registers a new domain for the calling tenant. Generates a DKIM keypair and verification token. Returns DNS instructions the tenant must publish under their own DNS (verification TXT, SPF include, DKIM TXT, MX records to `mx1`/`mx2.lockally.com`, DMARC seed). **Idempotent** — re-posting the same domain returns the existing record with the same DKIM keys and token (regenerating would break the tenant's published DNS). Returns 200 on idempotent hit, 201 on first create. Returns 409 if the domain is already claimed by a different tenant.
23
+ # Registers a new domain for the calling tenant. Generates a DKIM keypair and verification token. Returns DNS instructions the tenant must publish under their own DNS (verification TXT, SPF include, DKIM TXT, MX records to `mx1`/`mx2.lockally.com`, DMARC seed). **Idempotent**, re-posting the same domain returns the existing record with the same DKIM keys and token (regenerating would break the tenant's published DNS). Returns 200 on idempotent hit, 201 on first create. Returns 409 if the domain is already claimed by a different tenant.
24
24
  # @param create_domain_request [CreateDomainRequest]
25
25
  # @param [Hash] opts the optional parameters
26
26
  # @return [Domain]
@@ -30,7 +30,7 @@ module Lockally
30
30
  end
31
31
 
32
32
  # Register a domain
33
- # Registers a new domain for the calling tenant. Generates a DKIM keypair and verification token. Returns DNS instructions the tenant must publish under their own DNS (verification TXT, SPF include, DKIM TXT, MX records to &#x60;mx1&#x60;/&#x60;mx2.lockally.com&#x60;, DMARC seed). **Idempotent** — re-posting the same domain returns the existing record with the same DKIM keys and token (regenerating would break the tenant&#39;s published DNS). Returns 200 on idempotent hit, 201 on first create. Returns 409 if the domain is already claimed by a different tenant.
33
+ # Registers a new domain for the calling tenant. Generates a DKIM keypair and verification token. Returns DNS instructions the tenant must publish under their own DNS (verification TXT, SPF include, DKIM TXT, MX records to &#x60;mx1&#x60;/&#x60;mx2.lockally.com&#x60;, DMARC seed). **Idempotent**, re-posting the same domain returns the existing record with the same DKIM keys and token (regenerating would break the tenant&#39;s published DNS). Returns 200 on idempotent hit, 201 on first create. Returns 409 if the domain is already claimed by a different tenant.
34
34
  # @param create_domain_request [CreateDomainRequest]
35
35
  # @param [Hash] opts the optional parameters
36
36
  # @return [Array<(Domain, Integer, Hash)>] Domain data, response status code and response headers
@@ -88,7 +88,7 @@ module Lockally
88
88
  end
89
89
 
90
90
  # Delete a domain
91
- # Removes the domain registration. Refuses with 409 if any mailbox is still attached — delete the mailboxes first.
91
+ # Removes the domain registration. Refuses with 409 if any mailbox is still attached, delete the mailboxes first.
92
92
  # @param domain [String]
93
93
  # @param [Hash] opts the optional parameters
94
94
  # @return [nil]
@@ -98,7 +98,7 @@ module Lockally
98
98
  end
99
99
 
100
100
  # Delete a domain
101
- # Removes the domain registration. Refuses with 409 if any mailbox is still attached — delete the mailboxes first.
101
+ # Removes the domain registration. Refuses with 409 if any mailbox is still attached, delete the mailboxes first.
102
102
  # @param domain [String]
103
103
  # @param [Hash] opts the optional parameters
104
104
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -458,7 +458,7 @@ module Lockally
458
458
  end
459
459
 
460
460
  # Force-poll DNS verification
461
- # Synchronously checks the `_lockally-verify.<domain>` TXT record against the stored verification token. Returns 200 either way: the returned `verified` boolean tells you whether DNS now confirms. Caller polls until `verified: true`. In v2 a background worker auto-polls and fires a `domain.verified` webhook.
461
+ # Synchronously checks the `_lockally-verify.<domain>` TXT record against the stored verification token. Returns 200 either way: the returned `verified` boolean tells you whether DNS now confirms. Caller polls until `verified: true`. A later version may have the platform auto-polls and fires a `domain.verified` webhook.
462
462
  # @param domain [String]
463
463
  # @param [Hash] opts the optional parameters
464
464
  # @return [Domain]
@@ -468,7 +468,7 @@ module Lockally
468
468
  end
469
469
 
470
470
  # Force-poll DNS verification
471
- # Synchronously checks the &#x60;_lockally-verify.&lt;domain&gt;&#x60; TXT record against the stored verification token. Returns 200 either way: the returned &#x60;verified&#x60; boolean tells you whether DNS now confirms. Caller polls until &#x60;verified: true&#x60;. In v2 a background worker auto-polls and fires a &#x60;domain.verified&#x60; webhook.
471
+ # Synchronously checks the &#x60;_lockally-verify.&lt;domain&gt;&#x60; TXT record against the stored verification token. Returns 200 either way: the returned &#x60;verified&#x60; boolean tells you whether DNS now confirms. Caller polls until &#x60;verified: true&#x60;. A later version may have the platform auto-polls and fires a &#x60;domain.verified&#x60; webhook.
472
472
  # @param domain [String]
473
473
  # @param [Hash] opts the optional parameters
474
474
  # @return [Array<(Domain, Integer, Hash)>] Domain data, response status code and response headers
@@ -92,7 +92,7 @@ module Lockally
92
92
  end
93
93
 
94
94
  # Create a mailbox
95
- # Creates a mailbox on a tenant-verified domain. If `password` is omitted, lockally generates a 16-char password and returns it in the response — shown once. **Gate.** The mailbox's domain must already be registered AND verified for this tenant (via `/v1/domains` + `/v1/domains/{domain}/verify`). **Idempotent.** Re-posting the same email returns the existing mailbox UNTOUCHED — password is NOT regenerated. To change a password, use PATCH instead.
95
+ # Creates a mailbox on a tenant-verified domain. If `password` is omitted, lockally generates a 16-char password and returns it in the response, shown once. **Gate.** The mailbox's domain must already be registered AND verified for this tenant (via `/v1/domains` + `/v1/domains/{domain}/verify`). **Idempotent.** Re-posting the same email returns the existing mailbox UNTOUCHED, password is NOT regenerated. To change a password, use PATCH instead.
96
96
  # @param create_mailbox_request [CreateMailboxRequest]
97
97
  # @param [Hash] opts the optional parameters
98
98
  # @return [Mailbox]
@@ -102,7 +102,7 @@ module Lockally
102
102
  end
103
103
 
104
104
  # Create a mailbox
105
- # Creates a mailbox on a tenant-verified domain. If &#x60;password&#x60; is omitted, lockally generates a 16-char password and returns it in the response — shown once. **Gate.** The mailbox&#39;s domain must already be registered AND verified for this tenant (via &#x60;/v1/domains&#x60; + &#x60;/v1/domains/{domain}/verify&#x60;). **Idempotent.** Re-posting the same email returns the existing mailbox UNTOUCHED — password is NOT regenerated. To change a password, use PATCH instead.
105
+ # Creates a mailbox on a tenant-verified domain. If &#x60;password&#x60; is omitted, lockally generates a 16-char password and returns it in the response, shown once. **Gate.** The mailbox&#39;s domain must already be registered AND verified for this tenant (via &#x60;/v1/domains&#x60; + &#x60;/v1/domains/{domain}/verify&#x60;). **Idempotent.** Re-posting the same email returns the existing mailbox UNTOUCHED, password is NOT regenerated. To change a password, use PATCH instead.
106
106
  # @param create_mailbox_request [CreateMailboxRequest]
107
107
  # @param [Hash] opts the optional parameters
108
108
  # @return [Array<(Mailbox, Integer, Hash)>] Mailbox data, response status code and response headers
@@ -223,7 +223,7 @@ module Lockally
223
223
  end
224
224
 
225
225
  # Remove the vacation responder
226
- # Idempotent — 204 whether or not a row existed.
226
+ # Idempotent, 204 whether or not a row existed.
227
227
  # @param email [String]
228
228
  # @param [Hash] opts the optional parameters
229
229
  # @return [nil]
@@ -233,7 +233,7 @@ module Lockally
233
233
  end
234
234
 
235
235
  # Remove the vacation responder
236
- # Idempotent — 204 whether or not a row existed.
236
+ # Idempotent, 204 whether or not a row existed.
237
237
  # @param email [String]
238
238
  # @param [Hash] opts the optional parameters
239
239
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -286,7 +286,7 @@ module Lockally
286
286
  end
287
287
 
288
288
  # Download a previously-issued mailbox export
289
- # Public endpoint (no Authorization header). Validates the one-shot token from the URL, marks it used, and streams an mbox file. Second GET with the same token returns 404 — tokens are single-use.
289
+ # Public endpoint (no Authorization header). Validates the one-shot token from the URL, marks it used, and streams an mbox file. Second GET with the same token returns 404, tokens are single-use.
290
290
  # @param email [String]
291
291
  # @param token [String]
292
292
  # @param [Hash] opts the optional parameters
@@ -297,7 +297,7 @@ module Lockally
297
297
  end
298
298
 
299
299
  # Download a previously-issued mailbox export
300
- # Public endpoint (no Authorization header). Validates the one-shot token from the URL, marks it used, and streams an mbox file. Second GET with the same token returns 404 — tokens are single-use.
300
+ # Public endpoint (no Authorization header). Validates the one-shot token from the URL, marks it used, and streams an mbox file. Second GET with the same token returns 404, tokens are single-use.
301
301
  # @param email [String]
302
302
  # @param token [String]
303
303
  # @param [Hash] opts the optional parameters
@@ -356,7 +356,7 @@ module Lockally
356
356
  end
357
357
 
358
358
  # Request a mailbox export
359
- # Issues a one-shot \"presigned\" download URL for the mailbox's content in mbox format. The URL works without an Authorization header — the token in the query string is the authz. TTL is 5 minutes; the token is consumed on first GET. **v1 caveat:** the synthesized mbox only contains outbound mail (from `lockally.messages`). v2 swaps in Stalwart's export primitive for full inbox + folder structure + flags. The endpoint contract stays unchanged. **Scope changed:** this used to accept `mailboxes:read`. It takes any mailbox in the tenant and returns that mailbox's mail, so it now requires `tenant:admin`, matching `POST /v1/ediscovery/export`. A key scoped `mailboxes:read` gets 403 and has to be reissued; admin console sessions are unaffected.
359
+ # Issues a one-shot \"presigned\" download URL for the mailbox's content in mbox format. The URL works without an Authorization header, the token in the query string is the authz. TTL is 5 minutes; the token is consumed on first GET. **v1 caveat:** the synthesized mbox only contains outbound mail (sent mail only). A later version will cover received mail for full inbox + folder structure + flags. The endpoint contract stays unchanged. **Scope changed:** this used to accept `mailboxes:read`. It takes any mailbox in the tenant and returns that mailbox's mail, so it now requires `tenant:admin`, matching `POST /v1/ediscovery/export`. A key scoped `mailboxes:read` gets 403 and has to be reissued; admin console sessions are unaffected.
360
360
  # @param email [String]
361
361
  # @param [Hash] opts the optional parameters
362
362
  # @return [ExportMailbox201Response]
@@ -366,7 +366,7 @@ module Lockally
366
366
  end
367
367
 
368
368
  # Request a mailbox export
369
- # Issues a one-shot \&quot;presigned\&quot; download URL for the mailbox&#39;s content in mbox format. The URL works without an Authorization header — the token in the query string is the authz. TTL is 5 minutes; the token is consumed on first GET. **v1 caveat:** the synthesized mbox only contains outbound mail (from &#x60;lockally.messages&#x60;). v2 swaps in Stalwart&#39;s export primitive for full inbox + folder structure + flags. The endpoint contract stays unchanged. **Scope changed:** this used to accept &#x60;mailboxes:read&#x60;. It takes any mailbox in the tenant and returns that mailbox&#39;s mail, so it now requires &#x60;tenant:admin&#x60;, matching &#x60;POST /v1/ediscovery/export&#x60;. A key scoped &#x60;mailboxes:read&#x60; gets 403 and has to be reissued; admin console sessions are unaffected.
369
+ # Issues a one-shot \&quot;presigned\&quot; download URL for the mailbox&#39;s content in mbox format. The URL works without an Authorization header, the token in the query string is the authz. TTL is 5 minutes; the token is consumed on first GET. **v1 caveat:** the synthesized mbox only contains outbound mail (sent mail only). A later version will cover received mail for full inbox + folder structure + flags. The endpoint contract stays unchanged. **Scope changed:** this used to accept &#x60;mailboxes:read&#x60;. It takes any mailbox in the tenant and returns that mailbox&#39;s mail, so it now requires &#x60;tenant:admin&#x60;, matching &#x60;POST /v1/ediscovery/export&#x60;. A key scoped &#x60;mailboxes:read&#x60; gets 403 and has to be reissued; admin console sessions are unaffected.
370
370
  # @param email [String]
371
371
  # @param [Hash] opts the optional parameters
372
372
  # @return [Array<(ExportMailbox201Response, Integer, Hash)>] ExportMailbox201Response data, response status code and response headers
@@ -543,7 +543,7 @@ module Lockally
543
543
  end
544
544
 
545
545
  # List mailboxes
546
- # Returns mailboxes under the calling tenant — active and soft-deleted. `?limit=N` between 1 and 200 (default 50).
546
+ # Returns mailboxes under the calling tenant, active and soft-deleted. `?limit=N` between 1 and 200 (default 50).
547
547
  # @param [Hash] opts the optional parameters
548
548
  # @option opts [Integer] :limit (default to 50)
549
549
  # @return [ListMailboxes200Response]
@@ -553,7 +553,7 @@ module Lockally
553
553
  end
554
554
 
555
555
  # List mailboxes
556
- # Returns mailboxes under the calling tenant — active and soft-deleted. &#x60;?limit&#x3D;N&#x60; between 1 and 200 (default 50).
556
+ # Returns mailboxes under the calling tenant, active and soft-deleted. &#x60;?limit&#x3D;N&#x60; between 1 and 200 (default 50).
557
557
  # @param [Hash] opts the optional parameters
558
558
  # @option opts [Integer] :limit (default to 50)
559
559
  # @return [Array<(ListMailboxes200Response, Integer, Hash)>] ListMailboxes200Response data, response status code and response headers
@@ -796,7 +796,7 @@ module Lockally
796
796
  end
797
797
 
798
798
  # Set the vacation responder
799
- # Upsert — same endpoint creates or replaces the rule. Clears `synced_at`; the rule is staged on lockally until a sync worker pushes it to the mail server.
799
+ # Upsert, same endpoint creates or replaces the rule. Clears `synced_at`; the rule is staged until a later sync pushes it to the mail server.
800
800
  # @param email [String]
801
801
  # @param set_vacation_responder_request [SetVacationResponderRequest]
802
802
  # @param [Hash] opts the optional parameters
@@ -807,7 +807,7 @@ module Lockally
807
807
  end
808
808
 
809
809
  # Set the vacation responder
810
- # Upsert — same endpoint creates or replaces the rule. Clears &#x60;synced_at&#x60;; the rule is staged on lockally until a sync worker pushes it to the mail server.
810
+ # Upsert, same endpoint creates or replaces the rule. Clears &#x60;synced_at&#x60;; the rule is staged until a later sync pushes it to the mail server.
811
811
  # @param email [String]
812
812
  # @param set_vacation_responder_request [SetVacationResponderRequest]
813
813
  # @param [Hash] opts the optional parameters
@@ -144,7 +144,7 @@ module Lockally
144
144
  end
145
145
 
146
146
  # Aggregate delivery stats
147
- # Counts by delivery outcome (delivered/bounced/deferred/complaint) plus rates over a window, from the delivery-event store. Privacy-first: this reflects what receiving servers reported, NOT whether a human opened the mail — Lockally does no open/click tracking.
147
+ # Counts by delivery outcome (delivered/bounced/deferred/complaint) plus rates over a window, from the delivery-event store. Privacy-first: this reflects what receiving servers reported, NOT whether a human opened the mail, Lockally does no open/click tracking.
148
148
  # @param [Hash] opts the optional parameters
149
149
  # @option opts [Time] :from Window start (default 7 days ago).
150
150
  # @option opts [Time] :to Window end (default now).
@@ -156,7 +156,7 @@ module Lockally
156
156
  end
157
157
 
158
158
  # Aggregate delivery stats
159
- # Counts by delivery outcome (delivered/bounced/deferred/complaint) plus rates over a window, from the delivery-event store. Privacy-first: this reflects what receiving servers reported, NOT whether a human opened the mail — Lockally does no open/click tracking.
159
+ # Counts by delivery outcome (delivered/bounced/deferred/complaint) plus rates over a window, from the delivery-event store. Privacy-first: this reflects what receiving servers reported, NOT whether a human opened the mail, Lockally does no open/click tracking.
160
160
  # @param [Hash] opts the optional parameters
161
161
  # @option opts [Time] :from Window start (default 7 days ago).
162
162
  # @option opts [Time] :to Window end (default now).
@@ -210,7 +210,7 @@ module Lockally
210
210
  end
211
211
 
212
212
  # List outbound messages
213
- # Returns recent outbound messages for the calling tenant, sorted newest first. Backs the send-status pill in the SvelteKit /sends view and the outbound search box.
213
+ # Returns recent outbound messages for the calling tenant, sorted newest first.
214
214
  # @param [Hash] opts the optional parameters
215
215
  # @option opts [String] :status
216
216
  # @option opts [String] :sender Exact match against the &#x60;from&#x60; mailbox.
@@ -225,7 +225,7 @@ module Lockally
225
225
  end
226
226
 
227
227
  # List outbound messages
228
- # Returns recent outbound messages for the calling tenant, sorted newest first. Backs the send-status pill in the SvelteKit /sends view and the outbound search box.
228
+ # Returns recent outbound messages for the calling tenant, sorted newest first.
229
229
  # @param [Hash] opts the optional parameters
230
230
  # @option opts [String] :status
231
231
  # @option opts [String] :sender Exact match against the &#x60;from&#x60; mailbox.
@@ -293,7 +293,7 @@ module Lockally
293
293
  end
294
294
 
295
295
  # Send an email
296
- # Submits an email for delivery via lockally. Returns 202 immediately once the message is accepted into lockally's queue; the actual SMTP submission to the recipient is async. Track delivery via `GET /v1/messages/{id}` or webhook subscriptions for `delivery.delivered` / `delivery.bounced` / `delivery.complaint`. **Idempotency-Key required.** Per design L7 — any unique string per send, 24-hour dedupe window. Repeated calls with the same key return byte-exact the original response and do NOT create a duplicate message. **Sender authorisation.** `from` must be an address the calling tenant owns on a verified domain. A mailbox always qualifies. On business and combined accounts an **alias** qualifies too, so a send-only address such as `no-reply@` need not be a billed seat. An alias on an unverified domain, or one belonging to another account, is refused with `403`. A catch-all creates no aliases and so grants no sending rights. **Rate cap.** Per-tenant `rate_cap_per_min` (returned on `/v1/tenant`) is enforced — 429 with `Retry-After: 60` once tripped. **Recipient warning.** Over 25 total recipients (To+Cc+Bcc) sets a `warning` field in the response — large fan-outs queue noticeably at scale. Hard cap is 100/send. **Not every success is a 202.** Check the status code, not just the body. A `200` means nothing was queued: either every recipient was already suppressed, or the call used a test key and the send was simulated. Both are successes, and neither produces a real delivery. See the `200` response below. **Warm-up headers.** While the platform is in its outbound warm-up ramp, accepted sends carry `X-Warmup-Day`, `X-Warmup-Daily-Cap` and `X-Warmup-Used-Today`. They describe a platform-wide cap shared by every tenant, not your own allowance, and they disappear once the ramp finishes. Hitting the cap returns 429.
296
+ # Submits an email for delivery via lockally. Returns 202 immediately once the message is accepted into lockally's queue; the actual SMTP submission to the recipient is async. Track delivery via `GET /v1/messages/{id}` or webhook subscriptions for `delivery.delivered` / `delivery.bounced` / `delivery.complaint`. **Idempotency-Key required.** Any unique string per send, 24-hour dedupe window. Repeated calls with the same key return byte-exact the original response and do NOT create a duplicate message. **Sender authorisation.** `from` must be an address the calling tenant owns on a verified domain. A mailbox always qualifies. On business and combined accounts an **alias** qualifies too, so a send-only address such as `no-reply@` need not be a billed seat. An alias on an unverified domain, or one belonging to another account, is refused with `403`. A catch-all creates no aliases and so grants no sending rights. **Rate cap.** Per-tenant `rate_cap_per_min` (returned on `/v1/tenant`) is enforced, 429 with `Retry-After: 60` once tripped. **Recipient warning.** Over 25 total recipients (To+Cc+Bcc) sets a `warning` field in the response, large fan-outs queue noticeably at scale. Hard cap is 100/send. **Not every success is a 202.** Check the status code, not just the body. A `200` means nothing was queued: either every recipient was already suppressed, or the call used a test key and the send was simulated. Both are successes, and neither produces a real delivery. See the `200` response below. **Warm-up headers.** While the platform is in its outbound warm-up ramp, accepted sends carry `X-Warmup-Day`, `X-Warmup-Daily-Cap` and `X-Warmup-Used-Today`. They describe a platform-wide cap shared by every tenant, not your own allowance, and they disappear once the ramp finishes. Hitting the cap returns 429.
297
297
  # @param idempotency_key [String]
298
298
  # @param send_email_request [SendEmailRequest]
299
299
  # @param [Hash] opts the optional parameters
@@ -304,7 +304,7 @@ module Lockally
304
304
  end
305
305
 
306
306
  # Send an email
307
- # Submits an email for delivery via lockally. Returns 202 immediately once the message is accepted into lockally&#39;s queue; the actual SMTP submission to the recipient is async. Track delivery via &#x60;GET /v1/messages/{id}&#x60; or webhook subscriptions for &#x60;delivery.delivered&#x60; / &#x60;delivery.bounced&#x60; / &#x60;delivery.complaint&#x60;. **Idempotency-Key required.** Per design L7 — any unique string per send, 24-hour dedupe window. Repeated calls with the same key return byte-exact the original response and do NOT create a duplicate message. **Sender authorisation.** &#x60;from&#x60; must be an address the calling tenant owns on a verified domain. A mailbox always qualifies. On business and combined accounts an **alias** qualifies too, so a send-only address such as &#x60;no-reply@&#x60; need not be a billed seat. An alias on an unverified domain, or one belonging to another account, is refused with &#x60;403&#x60;. A catch-all creates no aliases and so grants no sending rights. **Rate cap.** Per-tenant &#x60;rate_cap_per_min&#x60; (returned on &#x60;/v1/tenant&#x60;) is enforced — 429 with &#x60;Retry-After: 60&#x60; once tripped. **Recipient warning.** Over 25 total recipients (To+Cc+Bcc) sets a &#x60;warning&#x60; field in the response — large fan-outs queue noticeably at scale. Hard cap is 100/send. **Not every success is a 202.** Check the status code, not just the body. A &#x60;200&#x60; means nothing was queued: either every recipient was already suppressed, or the call used a test key and the send was simulated. Both are successes, and neither produces a real delivery. See the &#x60;200&#x60; response below. **Warm-up headers.** While the platform is in its outbound warm-up ramp, accepted sends carry &#x60;X-Warmup-Day&#x60;, &#x60;X-Warmup-Daily-Cap&#x60; and &#x60;X-Warmup-Used-Today&#x60;. They describe a platform-wide cap shared by every tenant, not your own allowance, and they disappear once the ramp finishes. Hitting the cap returns 429.
307
+ # Submits an email for delivery via lockally. Returns 202 immediately once the message is accepted into lockally&#39;s queue; the actual SMTP submission to the recipient is async. Track delivery via &#x60;GET /v1/messages/{id}&#x60; or webhook subscriptions for &#x60;delivery.delivered&#x60; / &#x60;delivery.bounced&#x60; / &#x60;delivery.complaint&#x60;. **Idempotency-Key required.** Any unique string per send, 24-hour dedupe window. Repeated calls with the same key return byte-exact the original response and do NOT create a duplicate message. **Sender authorisation.** &#x60;from&#x60; must be an address the calling tenant owns on a verified domain. A mailbox always qualifies. On business and combined accounts an **alias** qualifies too, so a send-only address such as &#x60;no-reply@&#x60; need not be a billed seat. An alias on an unverified domain, or one belonging to another account, is refused with &#x60;403&#x60;. A catch-all creates no aliases and so grants no sending rights. **Rate cap.** Per-tenant &#x60;rate_cap_per_min&#x60; (returned on &#x60;/v1/tenant&#x60;) is enforced, 429 with &#x60;Retry-After: 60&#x60; once tripped. **Recipient warning.** Over 25 total recipients (To+Cc+Bcc) sets a &#x60;warning&#x60; field in the response, large fan-outs queue noticeably at scale. Hard cap is 100/send. **Not every success is a 202.** Check the status code, not just the body. A &#x60;200&#x60; means nothing was queued: either every recipient was already suppressed, or the call used a test key and the send was simulated. Both are successes, and neither produces a real delivery. See the &#x60;200&#x60; response below. **Warm-up headers.** While the platform is in its outbound warm-up ramp, accepted sends carry &#x60;X-Warmup-Day&#x60;, &#x60;X-Warmup-Daily-Cap&#x60; and &#x60;X-Warmup-Used-Today&#x60;. They describe a platform-wide cap shared by every tenant, not your own allowance, and they disappear once the ramp finishes. Hitting the cap returns 429.
308
308
  # @param idempotency_key [String]
309
309
  # @param send_email_request [SendEmailRequest]
310
310
  # @param [Hash] opts the optional parameters
@@ -372,7 +372,7 @@ module Lockally
372
372
  end
373
373
 
374
374
  # Send a batch of emails
375
- # Sends up to 500 messages in one call. Each is validated and enqueued independently — a bad message fails only its own slot (partial success, HTTP 200). One `Idempotency-Key` header covers the batch; per-message keys are derived as `<key>:<index>`.
375
+ # Sends up to 500 messages in one call. Each is validated and enqueued independently, a bad message fails only its own slot (partial success, HTTP 200). One `Idempotency-Key` header covers the batch; per-message keys are derived as `<key>:<index>`.
376
376
  # @param idempotency_key [String]
377
377
  # @param send_email_batch_request [SendEmailBatchRequest]
378
378
  # @param [Hash] opts the optional parameters
@@ -383,7 +383,7 @@ module Lockally
383
383
  end
384
384
 
385
385
  # Send a batch of emails
386
- # Sends up to 500 messages in one call. Each is validated and enqueued independently — a bad message fails only its own slot (partial success, HTTP 200). One &#x60;Idempotency-Key&#x60; header covers the batch; per-message keys are derived as &#x60;&lt;key&gt;:&lt;index&gt;&#x60;.
386
+ # Sends up to 500 messages in one call. Each is validated and enqueued independently, a bad message fails only its own slot (partial success, HTTP 200). One &#x60;Idempotency-Key&#x60; header covers the batch; per-message keys are derived as &#x60;&lt;key&gt;:&lt;index&gt;&#x60;.
387
387
  # @param idempotency_key [String]
388
388
  # @param send_email_batch_request [SendEmailBatchRequest]
389
389
  # @param [Hash] opts the optional parameters
@@ -77,7 +77,7 @@ module Lockally
77
77
  end
78
78
 
79
79
  # Usage snapshot
80
- # Returns the tenant's current usage + cap consumption. Designed for poll-based alerting on the integrator side (e.g. \"warn when daily quota is 80% used\"). Refreshed live from Postgres — there is no cache, so callers should poll at most once per minute.
80
+ # Returns the tenant's current usage + cap consumption. Designed for poll-based alerting on the integrator side (e.g. \"warn when daily quota is 80% used\"). Computed live on request, so there is no cache, so callers should poll at most once per minute.
81
81
  # @param [Hash] opts the optional parameters
82
82
  # @return [GetUsage200Response]
83
83
  def get_usage(opts = {})
@@ -86,7 +86,7 @@ module Lockally
86
86
  end
87
87
 
88
88
  # Usage snapshot
89
- # Returns the tenant&#39;s current usage + cap consumption. Designed for poll-based alerting on the integrator side (e.g. \&quot;warn when daily quota is 80% used\&quot;). Refreshed live from Postgres — there is no cache, so callers should poll at most once per minute.
89
+ # Returns the tenant&#39;s current usage + cap consumption. Designed for poll-based alerting on the integrator side (e.g. \&quot;warn when daily quota is 80% used\&quot;). Computed live on request, so there is no cache, so callers should poll at most once per minute.
90
90
  # @param [Hash] opts the optional parameters
91
91
  # @return [Array<(GetUsage200Response, Integer, Hash)>] GetUsage200Response data, response status code and response headers
92
92
  def get_usage_with_http_info(opts = {})
@@ -20,7 +20,7 @@ module Lockally
20
20
  @api_client = api_client
21
21
  end
22
22
  # Simulate an inbound email (test keys only)
23
- # Runs a synthetic message through the REAL indexing pipeline — thread adoption, deterministic extraction (incl. injection_risk), and the message.received webhook — so the whole agent loop is testable without a real domain or MTA. Requires an lk_test_* key (create with {\"test\": true} on POST /v1/api-keys). Body: {mailbox, from, subject, text, in_reply_to?, references?}.
23
+ # Runs a synthetic message through the REAL indexing pipeline, thread adoption, deterministic extraction (incl. injection_risk), and the message.received webhook, so the whole agent loop is testable without a real domain or MTA. Requires an lk_test_* key (create with {\"test\": true} on POST /v1/api-keys). Body: {mailbox, from, subject, text, in_reply_to?, references?}.
24
24
  # @param [Hash] opts the optional parameters
25
25
  # @return [SimulatedInbound]
26
26
  def simulate_inbound_email(opts = {})
@@ -29,7 +29,7 @@ module Lockally
29
29
  end
30
30
 
31
31
  # Simulate an inbound email (test keys only)
32
- # Runs a synthetic message through the REAL indexing pipeline — thread adoption, deterministic extraction (incl. injection_risk), and the message.received webhook — so the whole agent loop is testable without a real domain or MTA. Requires an lk_test_* key (create with {\&quot;test\&quot;: true} on POST /v1/api-keys). Body: {mailbox, from, subject, text, in_reply_to?, references?}.
32
+ # Runs a synthetic message through the REAL indexing pipeline, thread adoption, deterministic extraction (incl. injection_risk), and the message.received webhook, so the whole agent loop is testable without a real domain or MTA. Requires an lk_test_* key (create with {\&quot;test\&quot;: true} on POST /v1/api-keys). Body: {mailbox, from, subject, text, in_reply_to?, references?}.
33
33
  # @param [Hash] opts the optional parameters
34
34
  # @return [Array<(SimulatedInbound, Integer, Hash)>] SimulatedInbound data, response status code and response headers
35
35
  def simulate_inbound_email_with_http_info(opts = {})
@@ -20,7 +20,7 @@ module Lockally
20
20
  @api_client = api_client
21
21
  end
22
22
  # Create a webhook
23
- # Subscribes a URL to one or more event types. Returns the `signing_secret` ONCE in the response — store it immediately. The dispatcher signs every outbound POST per design L3: X-Lockally-Signature: t=<unix>,v1=<hex(hmac_sha256(secret, t + \".\" + body))> Verify on your end using HMAC-SHA256 with a 5-minute timestamp window (replay protection). A reference verifier ships in [internal/webhook](https://github.com/ucheigwedinma/lockally/blob/main/internal/webhook/sign.go). Event names: see the [event catalogue](https://github.com/ucheigwedinma/lockally/blob/main/docs/v1-design.md#64-webhook-event-catalogue-v1).
23
+ # Subscribes a URL to one or more event types. Returns the `signing_secret` ONCE in the response, store it immediately. Every outbound POST is signed: X-Lockally-Signature: t=<unix>,v1=<hex(hmac_sha256(secret, t + \".\" + body))> Verify on your end using HMAC-SHA256 with a 5-minute timestamp window (replay protection). A reference verifier ships in [Signature verification](https://developers.lockally.com/webhooks/verification/). Event names: see the [event catalogue](https://developers.lockally.com/webhooks/events/).
24
24
  # @param create_webhook_request [CreateWebhookRequest]
25
25
  # @param [Hash] opts the optional parameters
26
26
  # @return [Webhook]
@@ -30,7 +30,7 @@ module Lockally
30
30
  end
31
31
 
32
32
  # Create a webhook
33
- # Subscribes a URL to one or more event types. Returns the &#x60;signing_secret&#x60; ONCE in the response — store it immediately. The dispatcher signs every outbound POST per design L3: X-Lockally-Signature: t&#x3D;&lt;unix&gt;,v1&#x3D;&lt;hex(hmac_sha256(secret, t + \&quot;.\&quot; + body))&gt; Verify on your end using HMAC-SHA256 with a 5-minute timestamp window (replay protection). A reference verifier ships in [internal/webhook](https://github.com/ucheigwedinma/lockally/blob/main/internal/webhook/sign.go). Event names: see the [event catalogue](https://github.com/ucheigwedinma/lockally/blob/main/docs/v1-design.md#64-webhook-event-catalogue-v1).
33
+ # Subscribes a URL to one or more event types. Returns the &#x60;signing_secret&#x60; ONCE in the response, store it immediately. Every outbound POST is signed: X-Lockally-Signature: t&#x3D;&lt;unix&gt;,v1&#x3D;&lt;hex(hmac_sha256(secret, t + \&quot;.\&quot; + body))&gt; Verify on your end using HMAC-SHA256 with a 5-minute timestamp window (replay protection). A reference verifier ships in [Signature verification](https://developers.lockally.com/webhooks/verification/). Event names: see the [event catalogue](https://developers.lockally.com/webhooks/events/).
34
34
  # @param create_webhook_request [CreateWebhookRequest]
35
35
  # @param [Hash] opts the optional parameters
36
36
  # @return [Array<(Webhook, Integer, Hash)>] Webhook data, response status code and response headers
@@ -151,7 +151,7 @@ module Lockally
151
151
  end
152
152
 
153
153
  # List webhooks
154
- # Returns the calling tenant's webhook subscriptions. Never returns the signing secret — only metadata.
154
+ # Returns the calling tenant's webhook subscriptions. Never returns the signing secret, only metadata.
155
155
  # @param [Hash] opts the optional parameters
156
156
  # @return [ListWebhooks200Response]
157
157
  def list_webhooks(opts = {})
@@ -160,7 +160,7 @@ module Lockally
160
160
  end
161
161
 
162
162
  # List webhooks
163
- # Returns the calling tenant&#39;s webhook subscriptions. Never returns the signing secret — only metadata.
163
+ # Returns the calling tenant&#39;s webhook subscriptions. Never returns the signing secret, only metadata.
164
164
  # @param [Hash] opts the optional parameters
165
165
  # @return [Array<(ListWebhooks200Response, Integer, Hash)>] ListWebhooks200Response data, response status code and response headers
166
166
  def list_webhooks_with_http_info(opts = {})
@@ -208,7 +208,7 @@ module Lockally
208
208
  end
209
209
 
210
210
  # Update a webhook
211
- # Supply at least one of `url`, `events`, `paused`. Setting `paused` to `false` ALSO resets `consecutive_failures` to 0 — re-arms the 50-failure auto-pause counter.
211
+ # Supply at least one of `url`, `events`, `paused`. Setting `paused` to `false` ALSO resets `consecutive_failures` to 0, re-arms the 50-failure auto-pause counter.
212
212
  # @param id [String]
213
213
  # @param update_webhook_request [UpdateWebhookRequest]
214
214
  # @param [Hash] opts the optional parameters
@@ -219,7 +219,7 @@ module Lockally
219
219
  end
220
220
 
221
221
  # Update a webhook
222
- # Supply at least one of &#x60;url&#x60;, &#x60;events&#x60;, &#x60;paused&#x60;. Setting &#x60;paused&#x60; to &#x60;false&#x60; ALSO resets &#x60;consecutive_failures&#x60; to 0 — re-arms the 50-failure auto-pause counter.
222
+ # Supply at least one of &#x60;url&#x60;, &#x60;events&#x60;, &#x60;paused&#x60;. Setting &#x60;paused&#x60; to &#x60;false&#x60; ALSO resets &#x60;consecutive_failures&#x60; to 0, re-arms the 50-failure auto-pause counter.
223
223
  # @param id [String]
224
224
  # @param update_webhook_request [UpdateWebhookRequest]
225
225
  # @param [Hash] opts the optional parameters