Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.3.0"
".": "0.4.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 34
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/linq%2Flinq-api-v3-ff83d38ba9be07068f3eeef202f37fb92cf4b6b6a12f1ad2f258f45de70f5afd.yml
openapi_spec_hash: b15a3d49366346cd2d22a5acc029b03b
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/linq%2Flinq-api-v3-3697760e04d6b16b2250985131d388fa784bebe417ae51729ee764214c40c342.yml
openapi_spec_hash: a7f52a450228a8959ca11ebc5207514e
config_hash: be5410c6c4d8f36a7cd93c8950bc90d6
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# Changelog

## 0.4.0 (2026-04-24)

Full Changelog: [v0.3.0...v0.4.0](https://github.com/linq-team/linq-python/compare/v0.3.0...v0.4.0)

### Features

* make compliance webhooks (message.opt_out/opt_in) GA ([1a5b0e6](https://github.com/linq-team/linq-python/commit/1a5b0e6d75f47b67cb2447e180712d334f7f06d0))


### Documentation

* **api:** add first outbound message link restriction note to POST /v3/chats ([f44e698](https://github.com/linq-team/linq-python/commit/f44e6989ce805821306fb22c62a38c0f251c2846))

## 0.3.0 (2026-04-23)

Full Changelog: [v0.2.5...v0.3.0](https://github.com/linq-team/linq-python/compare/v0.2.5...v0.3.0)
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "linq-python"
version = "0.3.0"
version = "0.4.0"
description = "The official Python library for the linq-api-v3 API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/linq/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "linq"
__version__ = "0.3.0" # x-release-please-version
__version__ = "0.4.0" # x-release-please-version
22 changes: 22 additions & 0 deletions src/linq/resources/chats/chats.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,17 @@ def create(
must not overlap with other animations or styles. Text decorations only render
for iMessage recipients. For SMS/RCS, text decorations are not applied.

## First-Message Link Restriction

To protect sender deliverability, the **first outbound message** of a new chat
cannot be a link. The request is rejected with `400` (error code `1005`) when:

- The message contains a `link` part (explicit rich-preview link), or
- Any `text` part contains a URL.

This rule applies only to `POST /v3/chats`. Follow-up messages on an existing
chat (`POST /v3/chats/{chatId}/messages`) are not subject to this restriction.

Args:
from_: Sender phone number in E.164 format. Must be a phone number that the
authenticated partner has permission to send from.
Expand Down Expand Up @@ -727,6 +738,17 @@ async def create(
must not overlap with other animations or styles. Text decorations only render
for iMessage recipients. For SMS/RCS, text decorations are not applied.

## First-Message Link Restriction

To protect sender deliverability, the **first outbound message** of a new chat
cannot be a link. The request is rejected with `400` (error code `1005`) when:

- The message contains a `link` part (explicit rich-preview link), or
- Any `text` part contains a URL.

This rule applies only to `POST /v3/chats`. Follow-up messages on an existing
chat (`POST /v3/chats/{chatId}/messages`) are not subject to this restriction.

Args:
from_: Sender phone number in E.164 format. Must be a phone number that the
authenticated partner has permission to send from.
Expand Down
2 changes: 2 additions & 0 deletions src/linq/types/phone_number_status_updated_webhook_event.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ class PhoneNumberStatusUpdatedWebhookEvent(BaseModel):
"message.delivered",
"message.failed",
"message.edited",
"message.opt_out",
"message.opt_in",
"reaction.added",
"reaction.removed",
"participant.added",
Expand Down
2 changes: 2 additions & 0 deletions src/linq/types/webhook_event_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
"message.delivered",
"message.failed",
"message.edited",
"message.opt_out",
"message.opt_in",
"reaction.added",
"reaction.removed",
"participant.added",
Expand Down
Loading