@linqapp/sdk 0.1.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/README.md +31 -0
- package/client.d.mts +299 -7
- package/client.d.mts.map +1 -1
- package/client.d.ts +299 -7
- package/client.d.ts.map +1 -1
- package/client.js +294 -12
- package/client.js.map +1 -1
- package/client.mjs +294 -12
- package/client.mjs.map +1 -1
- package/core/pagination.d.mts +69 -0
- package/core/pagination.d.mts.map +1 -0
- package/core/pagination.d.ts +69 -0
- package/core/pagination.d.ts.map +1 -0
- package/core/pagination.js +125 -0
- package/core/pagination.js.map +1 -0
- package/core/pagination.mjs +118 -0
- package/core/pagination.mjs.map +1 -0
- package/index.d.mts +1 -0
- package/index.d.mts.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +3 -1
- package/index.js.map +1 -1
- package/index.mjs +1 -0
- package/index.mjs.map +1 -1
- package/internal/tslib.js +18 -18
- package/internal/utils/query.d.mts +5 -0
- package/internal/utils/query.d.mts.map +1 -0
- package/internal/utils/query.d.ts +5 -0
- package/internal/utils/query.d.ts.map +1 -0
- package/internal/utils/query.js +23 -0
- package/internal/utils/query.js.map +1 -0
- package/internal/utils/query.mjs +20 -0
- package/internal/utils/query.mjs.map +1 -0
- package/internal/utils.d.mts +1 -0
- package/internal/utils.d.ts +1 -0
- package/internal/utils.js +1 -0
- package/internal/utils.js.map +1 -1
- package/internal/utils.mjs +1 -0
- package/package.json +11 -1
- package/pagination.d.mts +2 -0
- package/pagination.d.mts.map +1 -0
- package/pagination.d.ts +2 -0
- package/pagination.d.ts.map +1 -0
- package/pagination.js +6 -0
- package/pagination.js.map +1 -0
- package/pagination.mjs +2 -0
- package/pagination.mjs.map +1 -0
- package/resources/attachments.d.mts +64 -0
- package/resources/attachments.d.mts.map +1 -1
- package/resources/attachments.d.ts +64 -0
- package/resources/attachments.d.ts.map +1 -1
- package/resources/attachments.js +64 -0
- package/resources/attachments.js.map +1 -1
- package/resources/attachments.mjs +64 -0
- package/resources/attachments.mjs.map +1 -1
- package/resources/capability.d.mts +12 -9
- package/resources/capability.d.mts.map +1 -1
- package/resources/capability.d.ts +12 -9
- package/resources/capability.d.ts.map +1 -1
- package/resources/capability.js +7 -4
- package/resources/capability.js.map +1 -1
- package/resources/capability.mjs +7 -4
- package/resources/capability.mjs.map +1 -1
- package/resources/chats/chats.d.mts +76 -97
- package/resources/chats/chats.d.mts.map +1 -1
- package/resources/chats/chats.d.ts +76 -97
- package/resources/chats/chats.d.ts.map +1 -1
- package/resources/chats/chats.js +8 -4
- package/resources/chats/chats.js.map +1 -1
- package/resources/chats/chats.mjs +9 -5
- package/resources/chats/chats.mjs.map +1 -1
- package/resources/chats/index.d.mts +2 -2
- package/resources/chats/index.d.mts.map +1 -1
- package/resources/chats/index.d.ts +2 -2
- package/resources/chats/index.d.ts.map +1 -1
- package/resources/chats/index.js.map +1 -1
- package/resources/chats/index.mjs.map +1 -1
- package/resources/chats/messages.d.mts +21 -25
- package/resources/chats/messages.d.mts.map +1 -1
- package/resources/chats/messages.d.ts +21 -25
- package/resources/chats/messages.d.ts.map +1 -1
- package/resources/chats/messages.js +16 -3
- package/resources/chats/messages.js.map +1 -1
- package/resources/chats/messages.mjs +16 -3
- package/resources/chats/messages.mjs.map +1 -1
- package/resources/chats/participants.d.mts +18 -0
- package/resources/chats/participants.d.mts.map +1 -1
- package/resources/chats/participants.d.ts +18 -0
- package/resources/chats/participants.d.ts.map +1 -1
- package/resources/chats/participants.js +18 -0
- package/resources/chats/participants.js.map +1 -1
- package/resources/chats/participants.mjs +18 -0
- package/resources/chats/participants.mjs.map +1 -1
- package/resources/chats/typing.d.mts +18 -0
- package/resources/chats/typing.d.mts.map +1 -1
- package/resources/chats/typing.d.ts +18 -0
- package/resources/chats/typing.d.ts.map +1 -1
- package/resources/chats/typing.js +18 -0
- package/resources/chats/typing.js.map +1 -1
- package/resources/chats/typing.mjs +18 -0
- package/resources/chats/typing.mjs.map +1 -1
- package/resources/index.d.mts +4 -3
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +4 -3
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js +3 -1
- package/resources/index.js.map +1 -1
- package/resources/index.mjs +1 -0
- package/resources/index.mjs.map +1 -1
- package/resources/messages.d.mts +37 -72
- package/resources/messages.d.mts.map +1 -1
- package/resources/messages.d.ts +37 -72
- package/resources/messages.d.ts.map +1 -1
- package/resources/messages.js +34 -4
- package/resources/messages.js.map +1 -1
- package/resources/messages.mjs +34 -4
- package/resources/messages.mjs.map +1 -1
- package/resources/phone-numbers.d.mts +9 -0
- package/resources/phone-numbers.d.mts.map +1 -1
- package/resources/phone-numbers.d.ts +9 -0
- package/resources/phone-numbers.d.ts.map +1 -1
- package/resources/phone-numbers.js +9 -0
- package/resources/phone-numbers.js.map +1 -1
- package/resources/phone-numbers.mjs +9 -0
- package/resources/phone-numbers.mjs.map +1 -1
- package/resources/phonenumbers.d.mts +9 -0
- package/resources/phonenumbers.d.mts.map +1 -1
- package/resources/phonenumbers.d.ts +9 -0
- package/resources/phonenumbers.d.ts.map +1 -1
- package/resources/phonenumbers.js +9 -0
- package/resources/phonenumbers.js.map +1 -1
- package/resources/phonenumbers.mjs +9 -0
- package/resources/phonenumbers.mjs.map +1 -1
- package/resources/shared.d.mts +51 -0
- package/resources/shared.d.mts.map +1 -1
- package/resources/shared.d.ts +51 -0
- package/resources/shared.d.ts.map +1 -1
- package/resources/webhook-events.d.mts +90 -1
- package/resources/webhook-events.d.mts.map +1 -1
- package/resources/webhook-events.d.ts +90 -1
- package/resources/webhook-events.d.ts.map +1 -1
- package/resources/webhook-events.js +89 -0
- package/resources/webhook-events.js.map +1 -1
- package/resources/webhook-events.mjs +89 -0
- package/resources/webhook-events.mjs.map +1 -1
- package/resources/webhook-subscriptions.d.mts +89 -0
- package/resources/webhook-subscriptions.d.mts.map +1 -1
- package/resources/webhook-subscriptions.d.ts +89 -0
- package/resources/webhook-subscriptions.d.ts.map +1 -1
- package/resources/webhook-subscriptions.js +89 -0
- package/resources/webhook-subscriptions.js.map +1 -1
- package/resources/webhook-subscriptions.mjs +89 -0
- package/resources/webhook-subscriptions.mjs.map +1 -1
- package/resources/webhooks.d.mts +2506 -0
- package/resources/webhooks.d.mts.map +1 -0
- package/resources/webhooks.d.ts +2506 -0
- package/resources/webhooks.d.ts.map +1 -0
- package/resources/webhooks.js +12 -0
- package/resources/webhooks.js.map +1 -0
- package/resources/webhooks.mjs +8 -0
- package/resources/webhooks.mjs.map +1 -0
- package/src/client.ts +443 -37
- package/src/core/pagination.ts +212 -0
- package/src/index.ts +1 -0
- package/src/internal/utils/query.ts +23 -0
- package/src/internal/utils.ts +1 -0
- package/src/pagination.ts +2 -0
- package/src/resources/attachments.ts +64 -0
- package/src/resources/capability.ts +17 -14
- package/src/resources/chats/chats.ts +86 -115
- package/src/resources/chats/index.ts +4 -3
- package/src/resources/chats/messages.ts +30 -30
- package/src/resources/chats/participants.ts +18 -0
- package/src/resources/chats/typing.ts +18 -0
- package/src/resources/index.ts +55 -10
- package/src/resources/messages.ts +49 -90
- package/src/resources/phone-numbers.ts +9 -0
- package/src/resources/phonenumbers.ts +9 -0
- package/src/resources/shared.ts +62 -0
- package/src/resources/webhook-events.ts +90 -0
- package/src/resources/webhook-subscriptions.ts +89 -0
- package/src/resources/webhooks.ts +3089 -0
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.0 (2026-03-05)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.3.0...v0.4.0](https://github.com/linq-team/linq-node/compare/v0.3.0...v0.4.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** add new endpoint ([feaa645](https://github.com/linq-team/linq-node/commit/feaa645c6c2a9be7c596327f8ec25ac16f8ad352))
|
|
10
|
+
|
|
11
|
+
## 0.3.0 (2026-03-05)
|
|
12
|
+
|
|
13
|
+
Full Changelog: [v0.2.0...v0.3.0](https://github.com/linq-team/linq-node/compare/v0.2.0...v0.3.0)
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **api:** manual updates ([d22c7b7](https://github.com/linq-team/linq-node/commit/d22c7b7e2d9c50490831361d43320d050a103cdf))
|
|
18
|
+
|
|
19
|
+
## 0.2.0 (2026-03-05)
|
|
20
|
+
|
|
21
|
+
Full Changelog: [v0.1.5...v0.2.0](https://github.com/linq-team/linq-node/compare/v0.1.5...v0.2.0)
|
|
22
|
+
|
|
23
|
+
### Features
|
|
24
|
+
|
|
25
|
+
* Allow 100 presigned URL or uploaded attachments (URL + ID) in a message ([adb1e81](https://github.com/linq-team/linq-node/commit/adb1e812c68ab101e2f1362a3c53602dc9c589af))
|
|
26
|
+
* Plt 361 synapse support editing messages in v3 ([68d7b8a](https://github.com/linq-team/linq-node/commit/68d7b8afbc158ecb3fd0ce85e9ca8c0ad324b6bc))
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
* remove unused part-level idempotency_key from OpenAPI spec ([24df345](https://github.com/linq-team/linq-node/commit/24df345db930e173b4618ce04819dd9dc021aa02))
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### Chores
|
|
35
|
+
|
|
36
|
+
* **internal:** codegen related update ([3c28377](https://github.com/linq-team/linq-node/commit/3c283771a2d2ff459ed32f289d2e03fa379278af))
|
|
37
|
+
* **internal:** move stringifyQuery implementation to internal function ([b86f2c0](https://github.com/linq-team/linq-node/commit/b86f2c05a2c2e2b2ea4fe1df03c70b27f35def30))
|
|
38
|
+
|
|
3
39
|
## 0.1.5 (2026-02-24)
|
|
4
40
|
|
|
5
41
|
Full Changelog: [v0.1.4...v0.1.5](https://github.com/linq-team/linq-node/compare/v0.1.4...v0.1.5)
|
package/README.md
CHANGED
|
@@ -145,6 +145,37 @@ On timeout, an `APIConnectionTimeoutError` is thrown.
|
|
|
145
145
|
|
|
146
146
|
Note that requests which time out will be [retried twice by default](#retries).
|
|
147
147
|
|
|
148
|
+
## Auto-pagination
|
|
149
|
+
|
|
150
|
+
List methods in the LinqAPIV3 API are paginated.
|
|
151
|
+
You can use the `for await … of` syntax to iterate through items across all pages:
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
async function fetchAllChats(params) {
|
|
155
|
+
const allChats = [];
|
|
156
|
+
// Automatically fetches more pages as needed.
|
|
157
|
+
for await (const chat of client.chats.listChats({ from: '+13343284472' })) {
|
|
158
|
+
allChats.push(chat);
|
|
159
|
+
}
|
|
160
|
+
return allChats;
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Alternatively, you can request a single page at a time:
|
|
165
|
+
|
|
166
|
+
```ts
|
|
167
|
+
let page = await client.chats.listChats({ from: '+13343284472' });
|
|
168
|
+
for (const chat of page.chats) {
|
|
169
|
+
console.log(chat);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Convenience methods are provided for manually paginating:
|
|
173
|
+
while (page.hasNextPage()) {
|
|
174
|
+
page = await page.getNextPage();
|
|
175
|
+
// ...
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
148
179
|
## Advanced Usage
|
|
149
180
|
|
|
150
181
|
### Accessing raw Response data (e.g., headers)
|
package/client.d.mts
CHANGED
|
@@ -3,17 +3,20 @@ import type { PromiseOrValue, MergedRequestInit, FinalizedRequestInit } from "./
|
|
|
3
3
|
export type { Logger, LogLevel } from "./internal/utils/log.mjs";
|
|
4
4
|
import * as Opts from "./internal/request-options.mjs";
|
|
5
5
|
import * as Errors from "./core/error.mjs";
|
|
6
|
+
import * as Pagination from "./core/pagination.mjs";
|
|
7
|
+
import { type ListChatsPaginationParams, ListChatsPaginationResponse, type ListMessagesPaginationParams, ListMessagesPaginationResponse } from "./core/pagination.mjs";
|
|
6
8
|
import * as Uploads from "./core/uploads.mjs";
|
|
7
9
|
import * as API from "./resources/index.mjs";
|
|
8
10
|
import { APIPromise } from "./core/api-promise.mjs";
|
|
9
11
|
import { AttachmentCreateParams, AttachmentCreateResponse, AttachmentRetrieveResponse, Attachments, SupportedContentType } from "./resources/attachments.mjs";
|
|
10
|
-
import { Capability,
|
|
11
|
-
import { ChatHandle,
|
|
12
|
+
import { Capability, CapabilityCheckRCSParams, CapabilityCheckRCSResponse, CapabilityCheckiMessageParams, CapabilityCheckiMessageResponse } from "./resources/capability.mjs";
|
|
13
|
+
import { ChatHandle, Message, MessageAddReactionParams, MessageAddReactionResponse, MessageDeleteParams, MessageEffect, MessageListMessagesThreadParams, MessageUpdateParams, Messages, MessagesListMessagesPagination, Reaction, ReactionType, ReplyTo } from "./resources/messages.mjs";
|
|
12
14
|
import { PhoneNumberListResponse, PhoneNumbers } from "./resources/phone-numbers.mjs";
|
|
13
15
|
import { PhonenumberListResponse, Phonenumbers } from "./resources/phonenumbers.mjs";
|
|
14
16
|
import { WebhookEventListResponse, WebhookEventType, WebhookEvents } from "./resources/webhook-events.mjs";
|
|
15
17
|
import { WebhookSubscription, WebhookSubscriptionCreateParams, WebhookSubscriptionCreateResponse, WebhookSubscriptionListResponse, WebhookSubscriptionUpdateParams, WebhookSubscriptions } from "./resources/webhook-subscriptions.mjs";
|
|
16
|
-
import {
|
|
18
|
+
import { ChatCreatedV2025WebhookEvent, ChatCreatedV2026WebhookEvent, ChatGroupIconUpdateFailedV2025WebhookEvent, ChatGroupIconUpdateFailedV2026WebhookEvent, ChatGroupIconUpdatedV2025WebhookEvent, ChatGroupIconUpdatedV2026WebhookEvent, ChatGroupNameUpdateFailedV2025WebhookEvent, ChatGroupNameUpdateFailedV2026WebhookEvent, ChatGroupNameUpdatedV2025WebhookEvent, ChatGroupNameUpdatedV2026WebhookEvent, ChatTypingIndicatorStartedV2025WebhookEvent, ChatTypingIndicatorStartedV2026WebhookEvent, ChatTypingIndicatorStoppedV2025WebhookEvent, ChatTypingIndicatorStoppedV2026WebhookEvent, EventsWebhookEvent, MessageDeliveredV2025WebhookEvent, MessageDeliveredV2026WebhookEvent, MessageEventV2, MessageFailedV2025WebhookEvent, MessageFailedV2026WebhookEvent, MessagePayload, MessageReadV2025WebhookEvent, MessageReadV2026WebhookEvent, MessageReceivedV2025WebhookEvent, MessageReceivedV2026WebhookEvent, MessageSentV2025WebhookEvent, MessageSentV2026WebhookEvent, ParticipantAddedV2025WebhookEvent, ParticipantAddedV2026WebhookEvent, ParticipantRemovedV2025WebhookEvent, ParticipantRemovedV2026WebhookEvent, PhoneNumberStatusUpdatedV2025WebhookEvent, PhoneNumberStatusUpdatedV2026WebhookEvent, ReactionAddedV2025WebhookEvent, ReactionAddedV2026WebhookEvent, ReactionEventBase, ReactionRemovedV2025WebhookEvent, ReactionRemovedV2026WebhookEvent, SchemasMediaPartResponse, SchemasMessageEffect, SchemasTextPartResponse, Webhooks } from "./resources/webhooks.mjs";
|
|
19
|
+
import { Chat, ChatCreateParams, ChatCreateResponse, ChatListChatsParams, ChatSendVoicememoParams, ChatSendVoicememoResponse, ChatUpdateParams, Chats, ChatsListChatsPagination, MediaPart, MessageContent, TextPart } from "./resources/chats/chats.mjs";
|
|
17
20
|
import { type Fetch } from "./internal/builtin-types.mjs";
|
|
18
21
|
import { HeadersLike, NullableHeaders } from "./internal/headers.mjs";
|
|
19
22
|
import { FinalRequestOptions, RequestOptions } from "./internal/request-options.mjs";
|
|
@@ -125,7 +128,7 @@ export declare class LinqAPIV3 {
|
|
|
125
128
|
/**
|
|
126
129
|
* Basic re-implementation of `qs.stringify` for primitive types.
|
|
127
130
|
*/
|
|
128
|
-
protected stringifyQuery(query: Record<string, unknown>): string;
|
|
131
|
+
protected stringifyQuery(query: object | Record<string, unknown>): string;
|
|
129
132
|
private getUserAgent;
|
|
130
133
|
protected defaultIdempotencyKey(): string;
|
|
131
134
|
protected makeStatusError(status: number, error: Object, message: string | undefined, headers: Headers): Errors.APIError;
|
|
@@ -152,6 +155,8 @@ export declare class LinqAPIV3 {
|
|
|
152
155
|
private methodRequest;
|
|
153
156
|
request<Rsp>(options: PromiseOrValue<FinalRequestOptions>, remainingRetries?: number | null): APIPromise<Rsp>;
|
|
154
157
|
private makeRequest;
|
|
158
|
+
getAPIList<Item, PageClass extends Pagination.AbstractPage<Item> = Pagination.AbstractPage<Item>>(path: string, Page: new (...args: any[]) => PageClass, opts?: PromiseOrValue<RequestOptions>): Pagination.PagePromise<PageClass, Item>;
|
|
159
|
+
requestAPIList<Item = unknown, PageClass extends Pagination.AbstractPage<Item> = Pagination.AbstractPage<Item>>(Page: new (...args: ConstructorParameters<typeof Pagination.AbstractPage>) => PageClass, options: PromiseOrValue<FinalRequestOptions>): Pagination.PagePromise<PageClass, Item>;
|
|
155
160
|
fetchWithTimeout(url: RequestInfo, init: RequestInit | undefined, ms: number, controller: AbortController): Promise<Response>;
|
|
156
161
|
private shouldRetry;
|
|
157
162
|
private retryRequest;
|
|
@@ -183,24 +188,311 @@ export declare class LinqAPIV3 {
|
|
|
183
188
|
static UnprocessableEntityError: typeof Errors.UnprocessableEntityError;
|
|
184
189
|
static toFile: typeof Uploads.toFile;
|
|
185
190
|
chats: API.Chats;
|
|
191
|
+
/**
|
|
192
|
+
* Messages are individual text or multimedia communications within a chat thread.
|
|
193
|
+
*
|
|
194
|
+
* Messages can include text, attachments, special effects (like confetti or fireworks),
|
|
195
|
+
* and reactions. All messages are associated with a specific chat and sent from a
|
|
196
|
+
* phone number you own.
|
|
197
|
+
*
|
|
198
|
+
* Messages support delivery status tracking, read receipts, and editing capabilities.
|
|
199
|
+
*
|
|
200
|
+
*/
|
|
186
201
|
messages: API.Messages;
|
|
202
|
+
/**
|
|
203
|
+
* Send files (images, videos, documents, audio) with messages by providing a URL in a media part.
|
|
204
|
+
* Pre-uploading via `POST /v3/attachments` is **optional** and only needed for specific optimization scenarios.
|
|
205
|
+
*
|
|
206
|
+
* ## Sending Media via URL (up to 10MB)
|
|
207
|
+
*
|
|
208
|
+
* Provide a publicly accessible HTTPS URL with a [supported media type](#supported-file-types) in the `url` field of a media part.
|
|
209
|
+
*
|
|
210
|
+
* ```json
|
|
211
|
+
* {
|
|
212
|
+
* "parts": [
|
|
213
|
+
* { "type": "media", "url": "https://your-cdn.com/images/photo.jpg" }
|
|
214
|
+
* ]
|
|
215
|
+
* }
|
|
216
|
+
* ```
|
|
217
|
+
*
|
|
218
|
+
* This works with any URL you already host — no pre-upload step required. **Maximum file size: 10MB.**
|
|
219
|
+
*
|
|
220
|
+
* ## Pre-Upload (required for files over 10MB)
|
|
221
|
+
*
|
|
222
|
+
* Use `POST /v3/attachments` when you want to:
|
|
223
|
+
* - **Send files larger than 10MB** (up to 100MB) — URL-based downloads are limited to 10MB
|
|
224
|
+
* - **Send the same file to many recipients** — upload once, reuse the `attachment_id` without re-downloading each time
|
|
225
|
+
* - **Reduce message send latency** — the file is already stored, so sending is faster
|
|
226
|
+
*
|
|
227
|
+
* **How it works:**
|
|
228
|
+
* 1. `POST /v3/attachments` with file metadata → returns a presigned `upload_url` (valid for **15 minutes**) and a permanent `attachment_id`
|
|
229
|
+
* 2. PUT the raw file bytes to the `upload_url` with the `required_headers` (no JSON or multipart — just the binary content)
|
|
230
|
+
* 3. Reference the `attachment_id` in your media part when sending messages (no expiration)
|
|
231
|
+
*
|
|
232
|
+
* **Key difference:** When you provide an external `url`, we download and process the file on every send.
|
|
233
|
+
* When you use a pre-uploaded `attachment_id`, the file is already stored — so repeated sends skip the download step entirely.
|
|
234
|
+
*
|
|
235
|
+
* ## Domain Allowlisting
|
|
236
|
+
*
|
|
237
|
+
* Attachment URLs in API responses are served from `cdn.linqapp.com`. This includes:
|
|
238
|
+
* - `url` fields in media and voice memo message parts
|
|
239
|
+
* - `download_url` fields in attachment and upload response objects
|
|
240
|
+
*
|
|
241
|
+
* If your application enforces domain allowlists (e.g., for SSRF protection), add:
|
|
242
|
+
*
|
|
243
|
+
* ```
|
|
244
|
+
* cdn.linqapp.com
|
|
245
|
+
* ```
|
|
246
|
+
*
|
|
247
|
+
* ## Supported File Types
|
|
248
|
+
*
|
|
249
|
+
* - **Images:** JPEG, PNG, GIF, HEIC, HEIF, TIFF, BMP
|
|
250
|
+
* - **Videos:** MP4, MOV, M4V
|
|
251
|
+
* - **Audio:** M4A, AAC, MP3, WAV, AIFF, CAF, AMR
|
|
252
|
+
* - **Documents:** PDF, TXT, RTF, CSV, Office formats, ZIP
|
|
253
|
+
* - **Contact & Calendar:** VCF, ICS
|
|
254
|
+
*
|
|
255
|
+
* ## Audio: Attachment vs Voice Memo
|
|
256
|
+
*
|
|
257
|
+
* Audio files sent as media parts appear as **downloadable file attachments** in iMessage.
|
|
258
|
+
* To send audio as an **iMessage voice memo bubble** (with native inline playback UI),
|
|
259
|
+
* use the dedicated `POST /v3/chats/{chatId}/voicememo` endpoint instead.
|
|
260
|
+
*
|
|
261
|
+
* ## File Size Limits
|
|
262
|
+
*
|
|
263
|
+
* - **URL-based (`url` field):** 10MB maximum
|
|
264
|
+
* - **Pre-upload (`attachment_id`):** 100MB maximum
|
|
265
|
+
*
|
|
266
|
+
*/
|
|
187
267
|
attachments: API.Attachments;
|
|
268
|
+
/**
|
|
269
|
+
* Phone Numbers represent the phone numbers assigned to your partner account.
|
|
270
|
+
*
|
|
271
|
+
* Use the list phone numbers endpoint to discover which phone numbers are available
|
|
272
|
+
* for sending messages.
|
|
273
|
+
*
|
|
274
|
+
* When creating chats, listing chats, or sending a voice memo, use one of your assigned phone numbers
|
|
275
|
+
* in the `from` field.
|
|
276
|
+
*
|
|
277
|
+
*/
|
|
188
278
|
phonenumbers: API.Phonenumbers;
|
|
279
|
+
/**
|
|
280
|
+
* Phone Numbers represent the phone numbers assigned to your partner account.
|
|
281
|
+
*
|
|
282
|
+
* Use the list phone numbers endpoint to discover which phone numbers are available
|
|
283
|
+
* for sending messages.
|
|
284
|
+
*
|
|
285
|
+
* When creating chats, listing chats, or sending a voice memo, use one of your assigned phone numbers
|
|
286
|
+
* in the `from` field.
|
|
287
|
+
*
|
|
288
|
+
*/
|
|
189
289
|
phoneNumbers: API.PhoneNumbers;
|
|
290
|
+
/**
|
|
291
|
+
* Webhook Subscriptions allow you to receive real-time notifications when events
|
|
292
|
+
* occur on your account.
|
|
293
|
+
*
|
|
294
|
+
* Configure webhook endpoints to receive events such as messages sent/received,
|
|
295
|
+
* delivery status changes, reactions, typing indicators, and more.
|
|
296
|
+
*
|
|
297
|
+
* Failed deliveries (5xx, 429, network errors) are retried up to 10 times over
|
|
298
|
+
* ~2 hours with exponential backoff. Each event includes a unique ID for
|
|
299
|
+
* deduplication.
|
|
300
|
+
*
|
|
301
|
+
* ## Webhook Headers
|
|
302
|
+
*
|
|
303
|
+
* Each webhook request includes the following headers:
|
|
304
|
+
*
|
|
305
|
+
* | Header | Description |
|
|
306
|
+
* |--------|-------------|
|
|
307
|
+
* | `X-Webhook-Event` | The event type (e.g., `message.sent`, `message.received`) |
|
|
308
|
+
* | `X-Webhook-Subscription-ID` | Your webhook subscription ID |
|
|
309
|
+
* | `X-Webhook-Timestamp` | Unix timestamp (seconds) when the webhook was sent |
|
|
310
|
+
* | `X-Webhook-Signature` | HMAC-SHA256 signature for verification |
|
|
311
|
+
*
|
|
312
|
+
* ## Verifying Webhook Signatures
|
|
313
|
+
*
|
|
314
|
+
* All webhooks are signed using HMAC-SHA256. You should always verify the signature
|
|
315
|
+
* to ensure the webhook originated from Linq and hasn't been tampered with.
|
|
316
|
+
*
|
|
317
|
+
* **Signature Construction:**
|
|
318
|
+
*
|
|
319
|
+
* The signature is computed over a concatenation of the timestamp and payload:
|
|
320
|
+
*
|
|
321
|
+
* ```
|
|
322
|
+
* {timestamp}.{payload}
|
|
323
|
+
* ```
|
|
324
|
+
*
|
|
325
|
+
* Where:
|
|
326
|
+
* - `timestamp` is the value from the `X-Webhook-Timestamp` header
|
|
327
|
+
* - `payload` is the raw JSON request body (exact bytes, not re-serialized)
|
|
328
|
+
*
|
|
329
|
+
* **Verification Steps:**
|
|
330
|
+
*
|
|
331
|
+
* 1. Extract the `X-Webhook-Timestamp` and `X-Webhook-Signature` headers
|
|
332
|
+
* 2. Get the raw request body bytes (do not parse and re-serialize)
|
|
333
|
+
* 3. Concatenate: `"{timestamp}.{payload}"`
|
|
334
|
+
* 4. Compute HMAC-SHA256 using your signing secret as the key
|
|
335
|
+
* 5. Hex-encode the result and compare with `X-Webhook-Signature`
|
|
336
|
+
* 6. Use constant-time comparison to prevent timing attacks
|
|
337
|
+
*
|
|
338
|
+
* **Example (Python):**
|
|
339
|
+
*
|
|
340
|
+
* ```python
|
|
341
|
+
* import hmac
|
|
342
|
+
* import hashlib
|
|
343
|
+
*
|
|
344
|
+
* def verify_webhook(signing_secret, payload, timestamp, signature):
|
|
345
|
+
* message = f"{timestamp}.{payload.decode('utf-8')}"
|
|
346
|
+
* expected = hmac.new(
|
|
347
|
+
* signing_secret.encode('utf-8'),
|
|
348
|
+
* message.encode('utf-8'),
|
|
349
|
+
* hashlib.sha256
|
|
350
|
+
* ).hexdigest()
|
|
351
|
+
* return hmac.compare_digest(expected, signature)
|
|
352
|
+
* ```
|
|
353
|
+
*
|
|
354
|
+
* **Example (Node.js):**
|
|
355
|
+
*
|
|
356
|
+
* ```javascript
|
|
357
|
+
* const crypto = require('crypto');
|
|
358
|
+
*
|
|
359
|
+
* function verifyWebhook(signingSecret, payload, timestamp, signature) {
|
|
360
|
+
* const message = `${timestamp}.${payload}`;
|
|
361
|
+
* const expected = crypto
|
|
362
|
+
* .createHmac('sha256', signingSecret)
|
|
363
|
+
* .update(message)
|
|
364
|
+
* .digest('hex');
|
|
365
|
+
* return crypto.timingSafeEqual(
|
|
366
|
+
* Buffer.from(expected),
|
|
367
|
+
* Buffer.from(signature)
|
|
368
|
+
* );
|
|
369
|
+
* }
|
|
370
|
+
* ```
|
|
371
|
+
*
|
|
372
|
+
* **Security Best Practices:**
|
|
373
|
+
*
|
|
374
|
+
* - Reject webhooks with timestamps older than 5 minutes to prevent replay attacks
|
|
375
|
+
* - Always use constant-time comparison for signature verification
|
|
376
|
+
* - Store your signing secret securely (e.g., environment variable, secrets manager)
|
|
377
|
+
* - Return a 2xx status code quickly, then process the webhook asynchronously
|
|
378
|
+
*
|
|
379
|
+
*/
|
|
190
380
|
webhookEvents: API.WebhookEvents;
|
|
381
|
+
/**
|
|
382
|
+
* Webhook Subscriptions allow you to receive real-time notifications when events
|
|
383
|
+
* occur on your account.
|
|
384
|
+
*
|
|
385
|
+
* Configure webhook endpoints to receive events such as messages sent/received,
|
|
386
|
+
* delivery status changes, reactions, typing indicators, and more.
|
|
387
|
+
*
|
|
388
|
+
* Failed deliveries (5xx, 429, network errors) are retried up to 10 times over
|
|
389
|
+
* ~2 hours with exponential backoff. Each event includes a unique ID for
|
|
390
|
+
* deduplication.
|
|
391
|
+
*
|
|
392
|
+
* ## Webhook Headers
|
|
393
|
+
*
|
|
394
|
+
* Each webhook request includes the following headers:
|
|
395
|
+
*
|
|
396
|
+
* | Header | Description |
|
|
397
|
+
* |--------|-------------|
|
|
398
|
+
* | `X-Webhook-Event` | The event type (e.g., `message.sent`, `message.received`) |
|
|
399
|
+
* | `X-Webhook-Subscription-ID` | Your webhook subscription ID |
|
|
400
|
+
* | `X-Webhook-Timestamp` | Unix timestamp (seconds) when the webhook was sent |
|
|
401
|
+
* | `X-Webhook-Signature` | HMAC-SHA256 signature for verification |
|
|
402
|
+
*
|
|
403
|
+
* ## Verifying Webhook Signatures
|
|
404
|
+
*
|
|
405
|
+
* All webhooks are signed using HMAC-SHA256. You should always verify the signature
|
|
406
|
+
* to ensure the webhook originated from Linq and hasn't been tampered with.
|
|
407
|
+
*
|
|
408
|
+
* **Signature Construction:**
|
|
409
|
+
*
|
|
410
|
+
* The signature is computed over a concatenation of the timestamp and payload:
|
|
411
|
+
*
|
|
412
|
+
* ```
|
|
413
|
+
* {timestamp}.{payload}
|
|
414
|
+
* ```
|
|
415
|
+
*
|
|
416
|
+
* Where:
|
|
417
|
+
* - `timestamp` is the value from the `X-Webhook-Timestamp` header
|
|
418
|
+
* - `payload` is the raw JSON request body (exact bytes, not re-serialized)
|
|
419
|
+
*
|
|
420
|
+
* **Verification Steps:**
|
|
421
|
+
*
|
|
422
|
+
* 1. Extract the `X-Webhook-Timestamp` and `X-Webhook-Signature` headers
|
|
423
|
+
* 2. Get the raw request body bytes (do not parse and re-serialize)
|
|
424
|
+
* 3. Concatenate: `"{timestamp}.{payload}"`
|
|
425
|
+
* 4. Compute HMAC-SHA256 using your signing secret as the key
|
|
426
|
+
* 5. Hex-encode the result and compare with `X-Webhook-Signature`
|
|
427
|
+
* 6. Use constant-time comparison to prevent timing attacks
|
|
428
|
+
*
|
|
429
|
+
* **Example (Python):**
|
|
430
|
+
*
|
|
431
|
+
* ```python
|
|
432
|
+
* import hmac
|
|
433
|
+
* import hashlib
|
|
434
|
+
*
|
|
435
|
+
* def verify_webhook(signing_secret, payload, timestamp, signature):
|
|
436
|
+
* message = f"{timestamp}.{payload.decode('utf-8')}"
|
|
437
|
+
* expected = hmac.new(
|
|
438
|
+
* signing_secret.encode('utf-8'),
|
|
439
|
+
* message.encode('utf-8'),
|
|
440
|
+
* hashlib.sha256
|
|
441
|
+
* ).hexdigest()
|
|
442
|
+
* return hmac.compare_digest(expected, signature)
|
|
443
|
+
* ```
|
|
444
|
+
*
|
|
445
|
+
* **Example (Node.js):**
|
|
446
|
+
*
|
|
447
|
+
* ```javascript
|
|
448
|
+
* const crypto = require('crypto');
|
|
449
|
+
*
|
|
450
|
+
* function verifyWebhook(signingSecret, payload, timestamp, signature) {
|
|
451
|
+
* const message = `${timestamp}.${payload}`;
|
|
452
|
+
* const expected = crypto
|
|
453
|
+
* .createHmac('sha256', signingSecret)
|
|
454
|
+
* .update(message)
|
|
455
|
+
* .digest('hex');
|
|
456
|
+
* return crypto.timingSafeEqual(
|
|
457
|
+
* Buffer.from(expected),
|
|
458
|
+
* Buffer.from(signature)
|
|
459
|
+
* );
|
|
460
|
+
* }
|
|
461
|
+
* ```
|
|
462
|
+
*
|
|
463
|
+
* **Security Best Practices:**
|
|
464
|
+
*
|
|
465
|
+
* - Reject webhooks with timestamps older than 5 minutes to prevent replay attacks
|
|
466
|
+
* - Always use constant-time comparison for signature verification
|
|
467
|
+
* - Store your signing secret securely (e.g., environment variable, secrets manager)
|
|
468
|
+
* - Return a 2xx status code quickly, then process the webhook asynchronously
|
|
469
|
+
*
|
|
470
|
+
*/
|
|
191
471
|
webhookSubscriptions: API.WebhookSubscriptions;
|
|
472
|
+
/**
|
|
473
|
+
* Check whether a recipient address supports iMessage or RCS before sending a message.
|
|
474
|
+
*
|
|
475
|
+
*/
|
|
192
476
|
capability: API.Capability;
|
|
477
|
+
webhooks: API.Webhooks;
|
|
193
478
|
}
|
|
194
479
|
export declare namespace LinqAPIV3 {
|
|
195
480
|
export type RequestOptions = Opts.RequestOptions;
|
|
196
|
-
export
|
|
197
|
-
export {
|
|
481
|
+
export import ListChatsPagination = Pagination.ListChatsPagination;
|
|
482
|
+
export { type ListChatsPaginationParams as ListChatsPaginationParams, type ListChatsPaginationResponse as ListChatsPaginationResponse, };
|
|
483
|
+
export import ListMessagesPagination = Pagination.ListMessagesPagination;
|
|
484
|
+
export { type ListMessagesPaginationParams as ListMessagesPaginationParams, type ListMessagesPaginationResponse as ListMessagesPaginationResponse, };
|
|
485
|
+
export { Chats as Chats, type Chat as Chat, type MediaPart as MediaPart, type MessageContent as MessageContent, type TextPart as TextPart, type ChatCreateResponse as ChatCreateResponse, type ChatSendVoicememoResponse as ChatSendVoicememoResponse, type ChatsListChatsPagination as ChatsListChatsPagination, type ChatCreateParams as ChatCreateParams, type ChatUpdateParams as ChatUpdateParams, type ChatListChatsParams as ChatListChatsParams, type ChatSendVoicememoParams as ChatSendVoicememoParams, };
|
|
486
|
+
export { Messages as Messages, type ChatHandle as ChatHandle, type Message as Message, type MessageEffect as MessageEffect, type Reaction as Reaction, type ReactionType as ReactionType, type ReplyTo as ReplyTo, type MessageAddReactionResponse as MessageAddReactionResponse, type MessagesListMessagesPagination as MessagesListMessagesPagination, type MessageUpdateParams as MessageUpdateParams, type MessageDeleteParams as MessageDeleteParams, type MessageAddReactionParams as MessageAddReactionParams, type MessageListMessagesThreadParams as MessageListMessagesThreadParams, };
|
|
198
487
|
export { Attachments as Attachments, type SupportedContentType as SupportedContentType, type AttachmentCreateResponse as AttachmentCreateResponse, type AttachmentRetrieveResponse as AttachmentRetrieveResponse, type AttachmentCreateParams as AttachmentCreateParams, };
|
|
199
488
|
export { Phonenumbers as Phonenumbers, type PhonenumberListResponse as PhonenumberListResponse };
|
|
200
489
|
export { PhoneNumbers as PhoneNumbers, type PhoneNumberListResponse as PhoneNumberListResponse };
|
|
201
490
|
export { WebhookEvents as WebhookEvents, type WebhookEventType as WebhookEventType, type WebhookEventListResponse as WebhookEventListResponse, };
|
|
202
491
|
export { WebhookSubscriptions as WebhookSubscriptions, type WebhookSubscription as WebhookSubscription, type WebhookSubscriptionCreateResponse as WebhookSubscriptionCreateResponse, type WebhookSubscriptionListResponse as WebhookSubscriptionListResponse, type WebhookSubscriptionCreateParams as WebhookSubscriptionCreateParams, type WebhookSubscriptionUpdateParams as WebhookSubscriptionUpdateParams, };
|
|
203
|
-
export { Capability as Capability, type
|
|
492
|
+
export { Capability as Capability, type CapabilityCheckiMessageResponse as CapabilityCheckiMessageResponse, type CapabilityCheckRCSResponse as CapabilityCheckRCSResponse, type CapabilityCheckiMessageParams as CapabilityCheckiMessageParams, type CapabilityCheckRCSParams as CapabilityCheckRCSParams, };
|
|
493
|
+
export { Webhooks as Webhooks, type MessageEventV2 as MessageEventV2, type MessagePayload as MessagePayload, type ReactionEventBase as ReactionEventBase, type SchemasMediaPartResponse as SchemasMediaPartResponse, type SchemasMessageEffect as SchemasMessageEffect, type SchemasTextPartResponse as SchemasTextPartResponse, type MessageSentV2026WebhookEvent as MessageSentV2026WebhookEvent, type MessageReceivedV2026WebhookEvent as MessageReceivedV2026WebhookEvent, type MessageReadV2026WebhookEvent as MessageReadV2026WebhookEvent, type MessageDeliveredV2026WebhookEvent as MessageDeliveredV2026WebhookEvent, type MessageFailedV2026WebhookEvent as MessageFailedV2026WebhookEvent, type ReactionAddedV2026WebhookEvent as ReactionAddedV2026WebhookEvent, type ReactionRemovedV2026WebhookEvent as ReactionRemovedV2026WebhookEvent, type ParticipantAddedV2026WebhookEvent as ParticipantAddedV2026WebhookEvent, type ParticipantRemovedV2026WebhookEvent as ParticipantRemovedV2026WebhookEvent, type ChatGroupNameUpdatedV2026WebhookEvent as ChatGroupNameUpdatedV2026WebhookEvent, type ChatGroupIconUpdatedV2026WebhookEvent as ChatGroupIconUpdatedV2026WebhookEvent, type ChatGroupNameUpdateFailedV2026WebhookEvent as ChatGroupNameUpdateFailedV2026WebhookEvent, type ChatGroupIconUpdateFailedV2026WebhookEvent as ChatGroupIconUpdateFailedV2026WebhookEvent, type ChatCreatedV2026WebhookEvent as ChatCreatedV2026WebhookEvent, type ChatTypingIndicatorStartedV2026WebhookEvent as ChatTypingIndicatorStartedV2026WebhookEvent, type ChatTypingIndicatorStoppedV2026WebhookEvent as ChatTypingIndicatorStoppedV2026WebhookEvent, type PhoneNumberStatusUpdatedV2026WebhookEvent as PhoneNumberStatusUpdatedV2026WebhookEvent, type MessageSentV2025WebhookEvent as MessageSentV2025WebhookEvent, type MessageReceivedV2025WebhookEvent as MessageReceivedV2025WebhookEvent, type MessageReadV2025WebhookEvent as MessageReadV2025WebhookEvent, type MessageDeliveredV2025WebhookEvent as MessageDeliveredV2025WebhookEvent, type MessageFailedV2025WebhookEvent as MessageFailedV2025WebhookEvent, type ReactionAddedV2025WebhookEvent as ReactionAddedV2025WebhookEvent, type ReactionRemovedV2025WebhookEvent as ReactionRemovedV2025WebhookEvent, type ParticipantAddedV2025WebhookEvent as ParticipantAddedV2025WebhookEvent, type ParticipantRemovedV2025WebhookEvent as ParticipantRemovedV2025WebhookEvent, type ChatGroupNameUpdatedV2025WebhookEvent as ChatGroupNameUpdatedV2025WebhookEvent, type ChatGroupIconUpdatedV2025WebhookEvent as ChatGroupIconUpdatedV2025WebhookEvent, type ChatGroupNameUpdateFailedV2025WebhookEvent as ChatGroupNameUpdateFailedV2025WebhookEvent, type ChatGroupIconUpdateFailedV2025WebhookEvent as ChatGroupIconUpdateFailedV2025WebhookEvent, type ChatCreatedV2025WebhookEvent as ChatCreatedV2025WebhookEvent, type ChatTypingIndicatorStartedV2025WebhookEvent as ChatTypingIndicatorStartedV2025WebhookEvent, type ChatTypingIndicatorStoppedV2025WebhookEvent as ChatTypingIndicatorStoppedV2025WebhookEvent, type PhoneNumberStatusUpdatedV2025WebhookEvent as PhoneNumberStatusUpdatedV2025WebhookEvent, type EventsWebhookEvent as EventsWebhookEvent, };
|
|
494
|
+
export type MediaPartResponse = API.MediaPartResponse;
|
|
204
495
|
export type ServiceType = API.ServiceType;
|
|
496
|
+
export type TextPartResponse = API.TextPartResponse;
|
|
205
497
|
}
|
|
206
498
|
//# sourceMappingURL=client.d.mts.map
|
package/client.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.mts","sourceRoot":"","sources":["src/client.ts"],"names":[],"mappings":"OAEO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAY;OAC3C,KAAK,EAAc,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE;YAIvE,EAAE,MAAM,EAAE,QAAQ,EAAE;OAKzB,KAAK,IAAI;
|
|
1
|
+
{"version":3,"file":"client.d.mts","sourceRoot":"","sources":["src/client.ts"],"names":[],"mappings":"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"}
|