3.4 KiB
3.4 KiB
VK Client Architecture & Official API Specification
The VK Integration layer is structured into decoupled components located under src/integrations/vk/.
Architecture Overview
[SocialMediaProvider Interface]
│
▼
[VkProvider]
│
▼
[VkClient]
┌────────┼────────┐
│ │ │
▼ ▼ ▼
[VkAuth] [VkRateLimit] [VkRetry]
│ │ │
└────────┼────────┘
│ (POST https://api.vk.com/method/*)
▼
[VK API]
Verified VK API Specifications (v5.199)
1. wall.getById
- Official Docs:
https://dev.vk.com/ru/method/wall.getById - Method: POST/GET
https://api.vk.com/method/wall.getById - Parameters:
posts(e.g."-100_12345"),extended=1. - Response:
{ items: VkWallPost[], profiles?: VkUserProfile[], groups?: VkGroupProfile[] }. - Behavior: Returns empty
items: []or error 210 if post is deleted or wall is private.
2. likes.getList
- Official Docs:
https://dev.vk.com/ru/method/likes.getList - Method: POST/GET
https://api.vk.com/method/likes.getList - Parameters:
type="post",owner_id,item_id,filter="likes",extended=1,count(max 100),offset. - Response:
{ count: number, items: VkUserProfile[] }.
3. wall.getComments
- Official Docs:
https://dev.vk.com/ru/method/wall.getComments - Method: POST/GET
https://api.vk.com/method/wall.getComments - Parameters:
owner_id,post_id,extended=1,count(max 100),offset,fields="photo_100,photo_200,screen_name". - Response:
{ count: number, items: VkCommentItem[], profiles?: VkUserProfile[] }.
4. groups.isMember
- Official Docs:
https://dev.vk.com/ru/method/groups.isMember - Method: POST/GET
https://api.vk.com/method/groups.isMember - Parameters:
group_id,user_ids(comma-separated list of IDs up to 500 max per batch call). - Response:
Array<{ user_id: number, member: 1 | 0 }>.
5. Reposts Limitation [CONFIRMED_LIMITATION]
- Official Status: VK API does not provide a public method to list all users who reposted an arbitrary third-party post due to user privacy settings.
wall.getRepostsonly works for community managers on their own wall posts. - Provider Flag:
capabilities.reposts = false.
6. Admin Detection [UNVERIFIED]
- Official Status: Checking if a user is an administrator of a target community requires
groups.getMemberswithfilter=managers, which requires community admin rights. - Provider Flag:
capabilities.adminDetection = false.
Cancellation vs Timeout Lifecycle
| Failure Mode | Error Class | Retryable? | Behavior |
|---|---|---|---|
Caller AbortSignal fires |
VkCancelledError |
No | Request aborted immediately; retry engine halts without retry. |
| Client timeout timer expires | VkTimeoutError |
Yes | Attempt aborted; backoff delay computed and retry initiated up to maxRetries. |
| HTTP 429 Too Many Requests | VkRateLimitError |
Yes | Retryable with backoff. |
| HTTP 500..504 Server Error | VkTemporaryError |
Yes | Retryable with backoff. |
| HTTP 400/401/403/404 | VkClientError subclasses |
No | Fast fail. |