diff --git a/src/linq/types/attachment_create_response.py b/src/linq/types/attachment_create_response.py index dbe180b..c6dd48e 100644 --- a/src/linq/types/attachment_create_response.py +++ b/src/linq/types/attachment_create_response.py @@ -37,5 +37,7 @@ class AttachmentCreateResponse(BaseModel): """Presigned URL for uploading the file. PUT the raw binary file content to this URL with the `required_headers`. Do not - JSON-encode or multipart-wrap the body. Expires after 15 minutes. + JSON-encode or multipart-wrap the body. Expires after 15 minutes. Treat the URL + as opaque — the hostname depends on partner configuration and is the same across + sandbox and production. """ diff --git a/src/linq/types/chat.py b/src/linq/types/chat.py index f8f5d1f..f1fd16a 100644 --- a/src/linq/types/chat.py +++ b/src/linq/types/chat.py @@ -35,9 +35,10 @@ class HealthStatus(BaseModel): part of a longer one: `STOP` counts, `please stop` does not. Most keywords must match exactly, including case. `OPT OUT` is the exception — it matches in any casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and - `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP`, - or if they keep replying on the chat — sustained two-way conversation is treated - as a sign the stop keyword was a false positive. + `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — + these match in any casing — or if they keep replying — replies in any + conversation with you count, the same way the block does — since sustained + two-way conversation is treated as a sign the stop keyword was a false positive. Linq enforces this: while a recipient is opted out, every send to them is rejected with `403` (error code `2024`) before the message is queued, across diff --git a/src/linq/types/chat_create_response.py b/src/linq/types/chat_create_response.py index e1c34ed..6e8b843 100644 --- a/src/linq/types/chat_create_response.py +++ b/src/linq/types/chat_create_response.py @@ -36,9 +36,10 @@ class ChatHealthStatus(BaseModel): part of a longer one: `STOP` counts, `please stop` does not. Most keywords must match exactly, including case. `OPT OUT` is the exception — it matches in any casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and - `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP`, - or if they keep replying on the chat — sustained two-way conversation is treated - as a sign the stop keyword was a false positive. + `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — + these match in any casing — or if they keep replying — replies in any + conversation with you count, the same way the block does — since sustained + two-way conversation is treated as a sign the stop keyword was a false positive. Linq enforces this: while a recipient is opted out, every send to them is rejected with `403` (error code `2024`) before the message is queued, across diff --git a/src/linq/types/chat_created_webhook_event.py b/src/linq/types/chat_created_webhook_event.py index 0522edf..be28803 100644 --- a/src/linq/types/chat_created_webhook_event.py +++ b/src/linq/types/chat_created_webhook_event.py @@ -36,9 +36,10 @@ class DataHealthStatus(BaseModel): part of a longer one: `STOP` counts, `please stop` does not. Most keywords must match exactly, including case. `OPT OUT` is the exception — it matches in any casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and - `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP`, - or if they keep replying on the chat — sustained two-way conversation is treated - as a sign the stop keyword was a false positive. + `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — + these match in any casing — or if they keep replying — replies in any + conversation with you count, the same way the block does — since sustained + two-way conversation is treated as a sign the stop keyword was a false positive. Linq enforces this: while a recipient is opted out, every send to them is rejected with `403` (error code `2024`) before the message is queued, across diff --git a/src/linq/types/message_edited_webhook_event.py b/src/linq/types/message_edited_webhook_event.py index 4b52d49..0cf11ce 100644 --- a/src/linq/types/message_edited_webhook_event.py +++ b/src/linq/types/message_edited_webhook_event.py @@ -34,9 +34,10 @@ class DataChatHealthStatus(BaseModel): part of a longer one: `STOP` counts, `please stop` does not. Most keywords must match exactly, including case. `OPT OUT` is the exception — it matches in any casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and - `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP`, - or if they keep replying on the chat — sustained two-way conversation is treated - as a sign the stop keyword was a false positive. + `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — + these match in any casing — or if they keep replying — replies in any + conversation with you count, the same way the block does — since sustained + two-way conversation is treated as a sign the stop keyword was a false positive. Linq enforces this: while a recipient is opted out, every send to them is rejected with `403` (error code `2024`) before the message is queued, across diff --git a/src/linq/types/message_event_v2.py b/src/linq/types/message_event_v2.py index fa20f95..44acae9 100644 --- a/src/linq/types/message_event_v2.py +++ b/src/linq/types/message_event_v2.py @@ -49,9 +49,10 @@ class ChatHealthStatus(BaseModel): part of a longer one: `STOP` counts, `please stop` does not. Most keywords must match exactly, including case. `OPT OUT` is the exception — it matches in any casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and - `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP`, - or if they keep replying on the chat — sustained two-way conversation is treated - as a sign the stop keyword was a false positive. + `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — + these match in any casing — or if they keep replying — replies in any + conversation with you count, the same way the block does — since sustained + two-way conversation is treated as a sign the stop keyword was a false positive. Linq enforces this: while a recipient is opted out, every send to them is rejected with `403` (error code `2024`) before the message is queued, across diff --git a/uv.lock b/uv.lock index bdb9df0..266f215 100644 --- a/uv.lock +++ b/uv.lock @@ -530,7 +530,7 @@ wheels = [ [[package]] name = "linq-python" -version = "0.19.1" +version = "0.20.0" source = { editable = "." } dependencies = [ { name = "anyio" },