def get_compiled_serving(self, kitchen, recipe_name, variation_name):
        """
        get the compiled version of arecipe with variables applied for a specific variation in a kitchen
        returns a dictionary
        '/v2/servings/compiled/get/<string:kitchenname>/<string:recipename>/<string:variationname>', methods=['GET']
        :param self: DKCloudAPI
        :param kitchen: basestring
        :param recipe_name: basestring  -- kitchen name, basestring
        :param variation_name: basestring message -- name of variation, basestring
        :rtype: dict
        """
        rc = DKReturnCode()
        if kitchen is None or isinstance(kitchen, basestring) is False:
            rc.set(rc.DK_FAIL, 'issue with kitchen')
            return rc
        if recipe_name is None or isinstance(recipe_name, basestring) is False:
            rc.set(rc.DK_FAIL, 'issue with recipe_name')
            return rc
        if variation_name is None or isinstance(variation_name, basestring) is False:
            rc.set(rc.DK_FAIL, 'issue with variation_name')
            return rc
        url = '%s/v2/servings/compiled/get/%s/%s/%s' % (self.get_url_for_direct_rest_call(),
                                                        kitchen, recipe_name, variation_name)
        try:
            response = requests.get(url, headers=self._get_common_headers())
            rdict = self._get_json(response)
            pass
        except (RequestException, ValueError, TypeError), c:
            rc.set(rc.DK_FAIL, "get_compiled_serving: exception: %s" % str(c))
            return rc
        if DKCloudAPI._valid_response(response):
            rc.set(rc.DK_SUCCESS, None, rdict[rdict.keys()[0]])
            return rc
        else:
            arc = DKAPIReturnCode(rdict, response)
            rc.set(rc.DK_FAIL, arc.get_message())
            return rc