http = $http; } /** @return array */ public function info(string $sessionId): array { return $this->http->request('GET', "/api/sessions/{$this->http->encodeSegment($sessionId)}/catalog"); } /** * List catalog products (paginated). Returns a page shaped * {products: list, pagination: {page, limit, total, totalPages}} — iterate over the `products` * field, not the result itself. Consistent with the JavaScript, Python, and Java SDKs. * * @param array $query e.g. ['page' => 1, 'limit' => 20]. * @return array{products: array>, pagination: array} */ public function products(string $sessionId, array $query = []): array { return $this->http->request('GET', "/api/sessions/{$this->http->encodeSegment($sessionId)}/catalog/products", $query) ?? ['products' => [], 'pagination' => []]; } /** @return array */ public function product(string $sessionId, string $productId): array { return $this->http->request('GET', "/api/sessions/{$this->http->encodeSegment($sessionId)}/catalog/products/{$this->http->encodeSegment($productId)}"); } /** * Send a product message. Requires an OPERATOR-level key. Shares the messages path. * * @param array $body chatId + productId required; body optional. * @return array */ public function sendProduct(string $sessionId, array $body): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/send-product", [], $body); } /** * Send a catalog link message. Requires an OPERATOR-level key. Shares the messages path. * * @param array $body chatId required; body optional. * @return array */ public function sendCatalog(string $sessionId, array $body): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/send-catalog", [], $body); } }