code: private function renewAuthToken(): self
      {
          $request = new \GuzzleHttp\Psr7\Request(
              'POST',
              self::AUTHENTICATION,
              $this->options->get('default_headers'),
              $this->createBodyForRequest([
                  ['name' => 'grant_type',
                      'contents' => 'client_credentials', ],
                  ['name' => 'client_id',
                      'contents' => $this->clientId, ],
                  ['name' => 'client_secret',
                      'contents' => $this->clientSecret, ],
              ])
          );
  
          $token = (string) $this->sendRequest($request);
  
          $token = json_decode($token, true);
  
          if (empty($token)) {
              throw new \Exception('Access token request return empty response');
          }
  
          if (! empty($this->tokenSaver)) {
              $this->getTokenSaver()(
                  $token['access_token']
              );
          }
  
          return $this->setAuthorizationHeader(
              $token['access_token']
          );
      }
docs: renewing access_token
  
  @throws \Exception