0

Clio seems to have no solution but to ask it here. So here I go.

I have the display number and I want to query the Matter ID. This does not seem to be possible unless I do I x-bulk query the loop throw the results.

Does anyone have a simple query to do this?

here is what I have for PHP so far.

function matter_one ( $token,$refresh_toke ) {
    $header = 'Authorization: bearer '.$token."\r\n";
    //echo $header."\r\n";
    $offset = 0;
    $url = 'https://app.clio.com/api/v4/matters.json?&fields=id,description,display_number';
    //echo $url."\r\n";
    $ch = curl_init();
    //curl_setopt($ch, CURLOPT_VERBOSE, true); //used for trouble shooting.
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $resp = curl_exec($ch);
    print "curl response is:" . $resp;
    die();
jbalter
  • 59
  • 6

3 Answers3

1

There is a better way, use https://app.clio.com/api/v4/matters?fields=id,display_number&query=100140

you will need to loop and check the display number does actualy match as 100140 and 100140B and 10014000 would be returned also.

Rincewind
  • 26
  • 2
0

If the issue is you do not want to do the x-bulk here is code that will pull all the info, you can either modify the code to find the item in the data returned for each page or find in the final array.

    function performListRequestAllMatters()
{
    $header = 'Authorization: bearer ' . $this->token;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $this->base . $this->API_version . 'matters' . '?fields=id,display_number');
    curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $response = curl_exec($ch);

    if (!$response) {
        die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
    } elseif (200 != curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
        echo "Bad Response Code!";
        echo "\n";
        echo "Response HTTP Status Code : " . curl_getinfo($ch, CURLINFO_HTTP_CODE);
        echo "\n";
        echo "Response HTTP Body : " . $response;
    } else {

        $json = json_decode($response, true);
        $list = $json['data'];

        while (isset($json['meta']['paging']['next'])) {
            // process a new request until all pages have been retrieved
            curl_setopt($ch, CURLOPT_URL, $json['meta']['paging']['next']);

            $response = curl_exec($ch);
            $json = json_decode($response, true);
            $newList = $json['data'];

            $list = array_merge($list, $newList);
        }

    }
    curl_close($ch);

    return $list;
}
Rincewind
  • 26
  • 2
  • I am getting an error. Notice: Undefined index: data in C:\Sites\PHP\lib\cliov4.php on line 399 This is $newList = $json['data']; and Warning: array_merge(): Argument #2 is not an array in C:\Sites\PHP\lib\cliov4.php on line 401 which is $list = array_merge($list, $newList); – jbalter Nov 29 '17 at 14:29
  • So I figured it out. You can only do so many requests. and it runs out so then it errors and dies. That is why I had to do BULK. CLIO API sucks. I should be able to request one record based on display name – jbalter Nov 29 '17 at 15:01
0

if have 10,000 plus records you have to use bulk. this function works great at getting all the records. Then you can find what ever number you need.

function matter_ID_display ( $token,$refresh_toke ) {
            // this returns all the matter ID and display name

            //adding X-BULK
            $header = 'Authorization: bearer '.$token."\r\n"."X-BULK: true";
            //echo $header."\r\n";
            $offset = 0;
            $url = 'https://app.clio.com/api/v4/matters.json?offset='.$offset.'&fields=id,display_number';
            $cookie_jar = 'C:\Sites\Project for simmons and flecter\PHP\tmp\cookies.txt';
            $cookie_jar2 = 'C:\Sites\Project for simmons and flecter\PHP\tmp\cookies2.txt';
            //echo $url."\r\n";
            $ch = curl_init();
            //curl_setopt($ch, CURLOPT_VERBOSE, true); //used for trouble shooting.
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_HEADER, true);
            curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $resp = curl_exec($ch);
            //print "curl response is:" . $resp;
            if( !$resp ) {
                die('Error: "' . curl_error( $ch ) . '" - Code: ' . curl_errno( $ch ) );
            }

            else if ( 200 != curl_getinfo( $ch, CURLINFO_HTTP_CODE ) ) {
                echo "Expected code 202";
                echo "\n";
                echo "Response HTTP Status Code : " . curl_getinfo( $ch, CURLINFO_HTTP_CODE );
                echo "\n";
                //echo "Response HTTP Body : " . $resp;
            }

            //$resp = json_encode($resp);
            $headers = get_headers_from_curl_response($resp);
            //$headers = json_encode($headers);
            //print_r ($headers);
            $url = $headers["Location"];
            echo "url for getting the bulk data\r\n";
            echo $url."\r\n";
            echo "\n";

            curl_close($ch);
            //sleep for x seconds
            //have to sleep due to processing at clio
                $seconds = 20;
                echo "Sleeping for ".$seconds." seconds\r\n";
                sleep($seconds);
                echo "\n";  
        // seperate curl_
                $curl = curl_init();

                curl_setopt_array($curl, array(
                  CURLOPT_URL => $url,
                  CURLOPT_COOKIEJAR => $cookie_jar2,    
                  CURLOPT_COOKIEFILE=> $cookie_jar2,
                  CURLOPT_CUSTOMREQUEST => "GET",
                  CURLOPT_HTTPHEADER => array("authorization: Bearer ".$token),
                  CURLOPT_SSL_VERIFYPEER => false,     // Disabled SSL Cert checks
                  CURLOPT_AUTOREFERER    => true,     // set referer on redirect
                  CURLOPT_FOLLOWLOCATION => true,     // follow redirects
                  CURLOPT_ENCODING => "",  // handle all encodings
                  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                  CURLOPT_RETURNTRANSFER => true, // return web page
                 ));

                $response = curl_exec($curl);
                $err = curl_error($curl);

                curl_close($curl);
                if ($err) {
                  echo "cURL Error #:" . $err;
                } else {
                      echo 'Curled first time';
                      echo "\n";
                      // have to curl two times one without authorization
                        echo "\n";
                        Echo "cURL repeat";
                        echo "\n";
                        $curl = curl_init();

                            curl_setopt_array($curl, array(
                            CURLOPT_URL => $url,
                            CURLOPT_COOKIEJAR => $cookie_jar2,  
                            CURLOPT_COOKIEFILE=> $cookie_jar2,
                            CURLOPT_CUSTOMREQUEST => "GET",
                            //CURLOPT_HTTPHEADER => array("authorization: Bearer ".$token),
                            CURLOPT_SSL_VERIFYPEER => false,     // Disabled SSL Cert checks
                            CURLOPT_AUTOREFERER    => true,     // set referer on redirect
                            CURLOPT_FOLLOWLOCATION => true,     // follow redirects
                            CURLOPT_ENCODING => "",  // handle all encodings
                            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                            CURLOPT_RETURNTRANSFER => true, // return web page
                            ));

                            $response = curl_exec($curl);
                            $err = curl_error($curl);
                        curl_close($curl);
                        if ($err) {
                            echo "cURL Error #:" . $err;
                        } else 
                            {echo 'Good Reponse from Curl second time';
                            echo "\n";}
                    }

                $response_Decode = json_decode($response);
                //print_r ($response_Decode);

                    // got the data. Now just need to turn to a clean array and save to file.
                    //die('Before Array clean up');

            //clean and make into an array
                $response_Decode=$response_Decode->data;
                $response_Decode=$response_Decode[0];
                //print_r ($response_Decode);
                //die(); //For testing
                $matter_array = array();     
                if(!empty($response_Decode->data) && is_array($response_Decode->data)) {
                    foreach ($response_Decode->data as $info) {
                        $d = array();
                        $d[] = $info->display_number;
                        $d[] = $info->id;
                        $matter_array[] = $d;
                    }
                }

                print_r($matter_array);  //For testing
                die(); //For testing

            //matter_array is a full array of all matter ID and Matter Display numbers  
            return $matter_array; }
jbalter
  • 59
  • 6