public function post($object, $operation, $parameters)
    {
        if (null === $this->apiKey) {
            $this->authenticate();
        }

        $url = sprintf('/api/%s/version/%s/do/%s', $object, $this->version, $operation);
        $parameters = array_merge(
            array(
                'api_key'  => $this->apiKey,
                'user_key' => $this->userKey,
                'format'   => $this->format,
                'output'   => $this->output
            ),
            $parameters
        );

        try {
            return $this->doPost($object, $url, $parameters);
        } catch (AuthenticationErrorException $e) {
            $this->authenticate();
            $parameters['api_key'] = $this->apiKey;

            return $this->doPost($object, $url, $parameters);
        }
    }