Search proposal history by ID
Overview
Use the searchProposalHistoryById method via JSON-RPC API 6.0 to find a specific proposal or retrieve the quote version history.
Request parameters
Parameters | Type | Required/Optional | Description |
---|---|---|---|
sessionId |
String |
Required |
Unique 2Checkout session ID code. |
ProposalId |
String |
Required |
Proposal id. |
Offset |
Integer |
Required |
The offset at which the proposals should be returned. Default value: 0. |
Limit |
Integer |
Required |
The maximum number of proposal versions (history) to return. Default value: 10. |
HasStatusComment | String | Optional |
Filters the history version by statusComment field. It can be “true” or “false”. |
Response
Parameters | Type | Description |
---|---|---|
Versions |
Object |
All versions of a proposal, paginated and ordered by date, newest first. Each element in the collection is a Proposal object. |
Count |
Integer |
The total number of proposal versions. |
Limit |
Integer |
The maximum number of proposal versions history to return. Default value: 10. |
Offset |
Integer |
The offset at which the proposal versions history is returned. |
Request sample
<?php declare(strict_types=1); class Configuration { public const MERCHANT_CODE = ''; public const MERCHANT_KEY = ''; public const URL = 'http://api.avangate.local/rpc/6.0'; public const ACTION = 'searchProposalHistoryById'; public const ADDITIONAL_OPTIONS = 'c0d6955b-f804-4a13-93a0-cb7cd04bc68a'; // existing proposal id //array or JSON public const PAYLOAD = <<<JSON { "Limit": 10, "Offset": 0, } JSON; } class Client { private const LOGIN_METHOD = 'login'; private $calls = 1; private $sessionId; private function generateAuth(): array { $merchantCode = Configuration::MERCHANT_CODE; $key = Configuration::MERCHANT_KEY; $date = gmdate('Y-m-d H:i:s'); $string = strlen($merchantCode) . $merchantCode . strlen($date) . $date; $hash = hash_hmac('md5', $string, $key); return compact('merchantCode', 'date', 'hash'); } public function login(string $url) { $payload = $this->generateAuth(); $response = $this->call($url, array_values($payload), self::LOGIN_METHOD); $this->sessionId = $response['result']; } public function call( string $url = Configuration::URL, $payload = Configuration::PAYLOAD, string $action = Configuration::ACTION ): ?array { if (empty($this->sessionId) && $action !== self::LOGIN_METHOD) { $this->login($url); } if (is_string($payload)) { $payload = json_decode($payload, true); } if (!empty($this->sessionId)) { $payload = [$this->sessionId, Configuration::ADDITIONAL_OPTIONS, $payload]; } $payload = array_filter($payload); $request = json_encode([ 'jsonrpc' => '2.0', 'method' => $action, 'params' => $payload, 'id' => $this->calls++, ]); $curl = curl_init($url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_SSLVERSION, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Accept: application/json', 'Cookie: XDEBUG_SESSION=PHPSTORM')); curl_setopt($curl, CURLOPT_POSTFIELDS, $request); $response = curl_exec($curl); if (empty($response)) { die('Server unavailable'); } echo $response . '</br>'; return json_decode($response, true);; } } $client = new Client(); $result = $client->call(); var_dump($result);