lockally 0.3.2 → 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.
- checksums.yaml +4 -4
- data/README.md +4 -4
- data/docs/AdminApi.md +3 -3
- data/docs/AdminsApi.md +1 -1
- data/docs/AgentsApi.md +2 -2
- data/docs/AiApi.md +1 -1
- data/docs/AliasesApi.md +1 -1
- data/docs/ApiKeysApi.md +3 -3
- data/docs/DomainsApi.md +3 -3
- data/docs/MailboxesApi.md +6 -6
- data/docs/SendApi.md +4 -4
- data/docs/TenantApi.md +1 -1
- data/docs/TestApi.md +1 -1
- data/docs/WebhooksApi.md +3 -3
- data/lib/lockally/api/admin_api.rb +6 -6
- data/lib/lockally/api/admins_api.rb +2 -2
- data/lib/lockally/api/agents_api.rb +4 -4
- data/lib/lockally/api/ai_api.rb +2 -2
- data/lib/lockally/api/aliases_api.rb +2 -2
- data/lib/lockally/api/api_keys_api.rb +6 -6
- data/lib/lockally/api/domains_api.rb +6 -6
- data/lib/lockally/api/mailboxes_api.rb +12 -12
- data/lib/lockally/api/send_api.rb +8 -8
- data/lib/lockally/api/tenant_api.rb +2 -2
- data/lib/lockally/api/test_api.rb +2 -2
- data/lib/lockally/api/webhooks_api.rb +6 -6
- data/lib/lockally/version.rb +1 -1
- data/spec/api/admin_api_spec.rb +3 -3
- data/spec/api/admins_api_spec.rb +1 -1
- data/spec/api/agents_api_spec.rb +2 -2
- data/spec/api/ai_api_spec.rb +1 -1
- data/spec/api/aliases_api_spec.rb +1 -1
- data/spec/api/api_keys_api_spec.rb +3 -3
- data/spec/api/domains_api_spec.rb +3 -3
- data/spec/api/mailboxes_api_spec.rb +6 -6
- data/spec/api/send_api_spec.rb +4 -4
- data/spec/api/tenant_api_spec.rb +1 -1
- data/spec/api/test_api_spec.rb +1 -1
- data/spec/api/webhooks_api_spec.rb +3 -3
- metadata +2 -2
|
@@ -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
|
|
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 `password` is omitted, lockally generates a 16-char password and returns it in the response
|
|
105
|
+
# 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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 \"presigned\" download URL for the mailbox's content in mbox format. The URL works without an Authorization header
|
|
369
|
+
# 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.
|
|
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
|
|
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
|
|
556
|
+
# Returns mailboxes under the calling tenant, active and soft-deleted. `?limit=N` 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
|
|
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
|
|
810
|
+
# 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.
|
|
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
|
|
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
|
|
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.
|
|
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 `from` 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.
|
|
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 `from` 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.**
|
|
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'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.**
|
|
307
|
+
# 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.
|
|
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
|
|
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
|
|
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 `Idempotency-Key` header covers the batch; per-message keys are derived as `<key>:<index>`.
|
|
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\").
|
|
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's current usage + cap consumption. Designed for poll-based alerting on the integrator side (e.g. \"warn when daily quota is 80% used\").
|
|
89
|
+
# 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.
|
|
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
|
|
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
|
|
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 {\"test\": 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
|
|
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 `signing_secret` ONCE in the response
|
|
33
|
+
# 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/).
|
|
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
|
|
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's webhook subscriptions. Never returns the signing secret
|
|
163
|
+
# Returns the calling tenant'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
|
|
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 `url`, `events`, `paused`. Setting `paused` to `false` ALSO resets `consecutive_failures` to 0
|
|
222
|
+
# 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.
|
|
223
223
|
# @param id [String]
|
|
224
224
|
# @param update_webhook_request [UpdateWebhookRequest]
|
|
225
225
|
# @param [Hash] opts the optional parameters
|
data/lib/lockally/version.rb
CHANGED
data/spec/api/admin_api_spec.rb
CHANGED
|
@@ -34,7 +34,7 @@ describe 'AdminApi' do
|
|
|
34
34
|
|
|
35
35
|
# unit tests for admin_login
|
|
36
36
|
# Tenant-admin email+password login
|
|
37
|
-
# 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
|
|
37
|
+
# 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.
|
|
38
38
|
# @param admin_login_request
|
|
39
39
|
# @param [Hash] opts the optional parameters
|
|
40
40
|
# @return [AdminLogin200Response]
|
|
@@ -46,7 +46,7 @@ describe 'AdminApi' do
|
|
|
46
46
|
|
|
47
47
|
# unit tests for admin_logout
|
|
48
48
|
# Invalidate the current admin session
|
|
49
|
-
# Deletes the session row from the database. Idempotent
|
|
49
|
+
# Deletes the session row from the database. Idempotent, calling logout on an already-invalid token returns 204 anyway.
|
|
50
50
|
# @param [Hash] opts the optional parameters
|
|
51
51
|
# @return [nil]
|
|
52
52
|
describe 'admin_logout test' do
|
|
@@ -57,7 +57,7 @@ describe 'AdminApi' do
|
|
|
57
57
|
|
|
58
58
|
# unit tests for get_current_admin
|
|
59
59
|
# Get the current admin + tenant
|
|
60
|
-
# 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
|
|
60
|
+
# 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.
|
|
61
61
|
# @param [Hash] opts the optional parameters
|
|
62
62
|
# @return [GetCurrentAdmin200Response]
|
|
63
63
|
describe 'get_current_admin test' do
|
data/spec/api/admins_api_spec.rb
CHANGED
|
@@ -68,7 +68,7 @@ describe 'AdminsApi' do
|
|
|
68
68
|
|
|
69
69
|
# unit tests for update_admin
|
|
70
70
|
# Update an admin
|
|
71
|
-
# Supply at least one of `password`, `display_name`, `role`, `disabled`. **Safety rails.** A session bearer (adm_sess_*) cannot disable itself
|
|
71
|
+
# 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.
|
|
72
72
|
# @param id
|
|
73
73
|
# @param update_admin_request
|
|
74
74
|
# @param [Hash] opts the optional parameters
|
data/spec/api/agents_api_spec.rb
CHANGED
|
@@ -72,7 +72,7 @@ describe 'AgentsApi' do
|
|
|
72
72
|
|
|
73
73
|
# unit tests for grant_api_key_mailbox
|
|
74
74
|
# Grant a mailbox to a key
|
|
75
|
-
# Body: {\"mailbox\": \"email or id\"}. Refused (422) for mailboxes with agent access disabled or an active E2E encryption key
|
|
75
|
+
# 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.
|
|
76
76
|
# @param key_id
|
|
77
77
|
# @param [Hash] opts the optional parameters
|
|
78
78
|
# @return [MailboxGrant]
|
|
@@ -146,7 +146,7 @@ describe 'AgentsApi' do
|
|
|
146
146
|
|
|
147
147
|
# unit tests for reply_to_thread
|
|
148
148
|
# Reply in-thread (agent stream)
|
|
149
|
-
# The server builds In-Reply-To/References and defaults recipients + subject from the conversation
|
|
149
|
+
# 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.
|
|
150
150
|
# @param thread_id
|
|
151
151
|
# @param idempotency_key
|
|
152
152
|
# @param [Hash] opts the optional parameters
|
data/spec/api/ai_api_spec.rb
CHANGED
|
@@ -34,7 +34,7 @@ describe 'AiApi' do
|
|
|
34
34
|
|
|
35
35
|
# unit tests for classify_thread
|
|
36
36
|
# LLM-classify a thread
|
|
37
|
-
# Returns {intent, urgency, summary, suggested_action} via the tenant's AI tier (BYOK or prepaid units
|
|
37
|
+
# 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.
|
|
38
38
|
# @param thread_id
|
|
39
39
|
# @param [Hash] opts the optional parameters
|
|
40
40
|
# @option opts [Boolean] :refresh
|
|
@@ -46,7 +46,7 @@ describe 'AliasesApi' do
|
|
|
46
46
|
|
|
47
47
|
# unit tests for delete_alias
|
|
48
48
|
# Delete an alias
|
|
49
|
-
# Hard-delete (no soft-delete window
|
|
49
|
+
# Hard-delete (no soft-delete window, aliases are cheap to recreate).
|
|
50
50
|
# @param address
|
|
51
51
|
# @param [Hash] opts the optional parameters
|
|
52
52
|
# @return [nil]
|
|
@@ -34,7 +34,7 @@ describe 'ApiKeysApi' do
|
|
|
34
34
|
|
|
35
35
|
# unit tests for create_api_key
|
|
36
36
|
# Create an API key
|
|
37
|
-
# Provisions a fresh API key for the calling tenant. **The full `secret` is included in this response ONLY
|
|
37
|
+
# 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.
|
|
38
38
|
# @param create_api_key_request
|
|
39
39
|
# @param [Hash] opts the optional parameters
|
|
40
40
|
# @return [CreateApiKey201Response]
|
|
@@ -46,7 +46,7 @@ describe 'ApiKeysApi' do
|
|
|
46
46
|
|
|
47
47
|
# unit tests for list_api_keys
|
|
48
48
|
# List API keys
|
|
49
|
-
# Returns all API keys (active and revoked) belonging to the calling tenant. The `secret` is **never** returned
|
|
49
|
+
# Returns all API keys (active and revoked) belonging to the calling tenant. The `secret` is **never** returned, only prefix + metadata.
|
|
50
50
|
# @param [Hash] opts the optional parameters
|
|
51
51
|
# @return [ListApiKeys200Response]
|
|
52
52
|
describe 'list_api_keys test' do
|
|
@@ -57,7 +57,7 @@ describe 'ApiKeysApi' do
|
|
|
57
57
|
|
|
58
58
|
# unit tests for revoke_api_key
|
|
59
59
|
# Revoke an API key
|
|
60
|
-
# 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
|
|
60
|
+
# 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.
|
|
61
61
|
# @param id
|
|
62
62
|
# @param [Hash] opts the optional parameters
|
|
63
63
|
# @return [nil]
|
|
@@ -34,7 +34,7 @@ describe 'DomainsApi' do
|
|
|
34
34
|
|
|
35
35
|
# unit tests for create_domain
|
|
36
36
|
# Register a domain
|
|
37
|
-
# 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
|
|
37
|
+
# 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.
|
|
38
38
|
# @param create_domain_request
|
|
39
39
|
# @param [Hash] opts the optional parameters
|
|
40
40
|
# @return [Domain]
|
|
@@ -46,7 +46,7 @@ describe 'DomainsApi' do
|
|
|
46
46
|
|
|
47
47
|
# unit tests for delete_domain
|
|
48
48
|
# Delete a domain
|
|
49
|
-
# Removes the domain registration. Refuses with 409 if any mailbox is still attached
|
|
49
|
+
# Removes the domain registration. Refuses with 409 if any mailbox is still attached, delete the mailboxes first.
|
|
50
50
|
# @param domain
|
|
51
51
|
# @param [Hash] opts the optional parameters
|
|
52
52
|
# @return [nil]
|
|
@@ -116,7 +116,7 @@ describe 'DomainsApi' do
|
|
|
116
116
|
|
|
117
117
|
# unit tests for verify_domain
|
|
118
118
|
# Force-poll DNS verification
|
|
119
|
-
# 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`.
|
|
119
|
+
# 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.
|
|
120
120
|
# @param domain
|
|
121
121
|
# @param [Hash] opts the optional parameters
|
|
122
122
|
# @return [Domain]
|
|
@@ -46,7 +46,7 @@ describe 'MailboxesApi' do
|
|
|
46
46
|
|
|
47
47
|
# unit tests for create_mailbox
|
|
48
48
|
# Create a mailbox
|
|
49
|
-
# Creates a mailbox on a tenant-verified domain. If `password` is omitted, lockally generates a 16-char password and returns it in the response
|
|
49
|
+
# 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.
|
|
50
50
|
# @param create_mailbox_request
|
|
51
51
|
# @param [Hash] opts the optional parameters
|
|
52
52
|
# @return [Mailbox]
|
|
@@ -70,7 +70,7 @@ describe 'MailboxesApi' do
|
|
|
70
70
|
|
|
71
71
|
# unit tests for delete_vacation_responder
|
|
72
72
|
# Remove the vacation responder
|
|
73
|
-
# Idempotent
|
|
73
|
+
# Idempotent, 204 whether or not a row existed.
|
|
74
74
|
# @param email
|
|
75
75
|
# @param [Hash] opts the optional parameters
|
|
76
76
|
# @return [nil]
|
|
@@ -82,7 +82,7 @@ describe 'MailboxesApi' do
|
|
|
82
82
|
|
|
83
83
|
# unit tests for download_mailbox_export
|
|
84
84
|
# Download a previously-issued mailbox export
|
|
85
|
-
# 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
|
|
85
|
+
# 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.
|
|
86
86
|
# @param email
|
|
87
87
|
# @param token
|
|
88
88
|
# @param [Hash] opts the optional parameters
|
|
@@ -95,7 +95,7 @@ describe 'MailboxesApi' do
|
|
|
95
95
|
|
|
96
96
|
# unit tests for export_mailbox
|
|
97
97
|
# Request a mailbox export
|
|
98
|
-
# Issues a one-shot \"presigned\" download URL for the mailbox's content in mbox format. The URL works without an Authorization header
|
|
98
|
+
# 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.
|
|
99
99
|
# @param email
|
|
100
100
|
# @param [Hash] opts the optional parameters
|
|
101
101
|
# @return [ExportMailbox201Response]
|
|
@@ -130,7 +130,7 @@ describe 'MailboxesApi' do
|
|
|
130
130
|
|
|
131
131
|
# unit tests for list_mailboxes
|
|
132
132
|
# List mailboxes
|
|
133
|
-
# Returns mailboxes under the calling tenant
|
|
133
|
+
# Returns mailboxes under the calling tenant, active and soft-deleted. `?limit=N` between 1 and 200 (default 50).
|
|
134
134
|
# @param [Hash] opts the optional parameters
|
|
135
135
|
# @option opts [Integer] :limit
|
|
136
136
|
# @return [ListMailboxes200Response]
|
|
@@ -176,7 +176,7 @@ describe 'MailboxesApi' do
|
|
|
176
176
|
|
|
177
177
|
# unit tests for set_vacation_responder
|
|
178
178
|
# Set the vacation responder
|
|
179
|
-
# Upsert
|
|
179
|
+
# 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.
|
|
180
180
|
# @param email
|
|
181
181
|
# @param set_vacation_responder_request
|
|
182
182
|
# @param [Hash] opts the optional parameters
|
data/spec/api/send_api_spec.rb
CHANGED
|
@@ -57,7 +57,7 @@ describe 'SendApi' do
|
|
|
57
57
|
|
|
58
58
|
# unit tests for get_message_stats
|
|
59
59
|
# Aggregate delivery stats
|
|
60
|
-
# 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
|
|
60
|
+
# 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.
|
|
61
61
|
# @param [Hash] opts the optional parameters
|
|
62
62
|
# @option opts [Time] :from Window start (default 7 days ago).
|
|
63
63
|
# @option opts [Time] :to Window end (default now).
|
|
@@ -71,7 +71,7 @@ describe 'SendApi' do
|
|
|
71
71
|
|
|
72
72
|
# unit tests for list_messages
|
|
73
73
|
# List outbound messages
|
|
74
|
-
# Returns recent outbound messages for the calling tenant, sorted newest first.
|
|
74
|
+
# Returns recent outbound messages for the calling tenant, sorted newest first.
|
|
75
75
|
# @param [Hash] opts the optional parameters
|
|
76
76
|
# @option opts [String] :status
|
|
77
77
|
# @option opts [String] :sender Exact match against the `from` mailbox.
|
|
@@ -88,7 +88,7 @@ describe 'SendApi' do
|
|
|
88
88
|
|
|
89
89
|
# unit tests for send_email
|
|
90
90
|
# Send an email
|
|
91
|
-
# 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.**
|
|
91
|
+
# 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.
|
|
92
92
|
# @param idempotency_key
|
|
93
93
|
# @param send_email_request
|
|
94
94
|
# @param [Hash] opts the optional parameters
|
|
@@ -101,7 +101,7 @@ describe 'SendApi' do
|
|
|
101
101
|
|
|
102
102
|
# unit tests for send_email_batch
|
|
103
103
|
# Send a batch of emails
|
|
104
|
-
# Sends up to 500 messages in one call. Each is validated and enqueued independently
|
|
104
|
+
# 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>`.
|
|
105
105
|
# @param idempotency_key
|
|
106
106
|
# @param send_email_batch_request
|
|
107
107
|
# @param [Hash] opts the optional parameters
|
data/spec/api/tenant_api_spec.rb
CHANGED
|
@@ -45,7 +45,7 @@ describe 'TenantApi' do
|
|
|
45
45
|
|
|
46
46
|
# unit tests for get_usage
|
|
47
47
|
# Usage snapshot
|
|
48
|
-
# 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\").
|
|
48
|
+
# 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.
|
|
49
49
|
# @param [Hash] opts the optional parameters
|
|
50
50
|
# @return [GetUsage200Response]
|
|
51
51
|
describe 'get_usage test' do
|
data/spec/api/test_api_spec.rb
CHANGED
|
@@ -34,7 +34,7 @@ describe 'TestApi' do
|
|
|
34
34
|
|
|
35
35
|
# unit tests for simulate_inbound_email
|
|
36
36
|
# Simulate an inbound email (test keys only)
|
|
37
|
-
# Runs a synthetic message through the REAL indexing pipeline
|
|
37
|
+
# 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?}.
|
|
38
38
|
# @param [Hash] opts the optional parameters
|
|
39
39
|
# @return [SimulatedInbound]
|
|
40
40
|
describe 'simulate_inbound_email test' do
|
|
@@ -34,7 +34,7 @@ describe 'WebhooksApi' do
|
|
|
34
34
|
|
|
35
35
|
# unit tests for create_webhook
|
|
36
36
|
# Create a webhook
|
|
37
|
-
# Subscribes a URL to one or more event types. Returns the `signing_secret` ONCE in the response
|
|
37
|
+
# 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/).
|
|
38
38
|
# @param create_webhook_request
|
|
39
39
|
# @param [Hash] opts the optional parameters
|
|
40
40
|
# @return [Webhook]
|
|
@@ -58,7 +58,7 @@ describe 'WebhooksApi' do
|
|
|
58
58
|
|
|
59
59
|
# unit tests for list_webhooks
|
|
60
60
|
# List webhooks
|
|
61
|
-
# Returns the calling tenant's webhook subscriptions. Never returns the signing secret
|
|
61
|
+
# Returns the calling tenant's webhook subscriptions. Never returns the signing secret, only metadata.
|
|
62
62
|
# @param [Hash] opts the optional parameters
|
|
63
63
|
# @return [ListWebhooks200Response]
|
|
64
64
|
describe 'list_webhooks test' do
|
|
@@ -69,7 +69,7 @@ describe 'WebhooksApi' do
|
|
|
69
69
|
|
|
70
70
|
# unit tests for update_webhook
|
|
71
71
|
# Update a webhook
|
|
72
|
-
# Supply at least one of `url`, `events`, `paused`. Setting `paused` to `false` ALSO resets `consecutive_failures` to 0
|
|
72
|
+
# 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.
|
|
73
73
|
# @param id
|
|
74
74
|
# @param update_webhook_request
|
|
75
75
|
# @param [Hash] opts the optional parameters
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lockally
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- OpenAPI-Generator
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-10-
|
|
11
|
+
date: 2026-10-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|