public function setConfiguration(array $configuration)
    {
        // Setting action requests array
        $this->actions = array();

        // Setting Http client object
        $this->client = new Client();

        // Checking if configuration matrix contains a parameters array
        if (!isset($configuration['parameters'])) {
            throw new BadApiConfigurationException(sprintf(
                    '[%s] Missing parameters array for api configuration', $this->getApiName())
            );
        } else {
            // Setting general api call parameters
            $this->setGeneralApiCallParameters($configuration['parameters']);
        }

        // Getting common actions parameters
        $actionConfiguration = array();
        if (isset($configuration['actions_parameters'])) {
            $actionConfiguration = $configuration['actions_parameters'];
        }

        // Checking if configuration matrix contains an actions array
        if (!isset($configuration['actions'])) {
            throw new BadApiConfigurationException(sprintf(
                '[%s] Missing actions array for api configuration', $this->getApiName())
            );
        } else {
            if ($this->getInitAllActions()) {
                // Setting api call actions (this method should always be defined in the child class)
                $this->setActionRequests($configuration['actions'], $actionConfiguration);
            } else {
                $this->actionsCommonConfig = $actionConfiguration;
                $this->actionsConfig       = $configuration['actions'];
            }
        }

        // Configuring client
        if (isset($configuration['config'])) {
            $configs = $configuration['config'];
            if (is_array($configs)) {
                $this->configureClientConfig($configs);
            }
        }
    }