<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def make_ref(self, branch):
 """ Make a branch on github :param branch: Name of the branch to create :return: Sha of the branch or self.ProxyError """

        master_sha = self.get_ref(self.master_upstream)
        if not isinstance(master_sha, str):
            return self.ProxyError(
                404,
                "The default branch from which to checkout is either not available or does not exist",
                step="make_ref"
            )

        params = {
          "ref": "refs/heads/{branch}".format(branch=branch),
          "sha": master_sha
        }
        uri = "{api}/repos/{origin}/git/refs".format(
            api=self.github_api_url,
            origin=self.origin
        )
        data = self.request("POST", uri, data=params)

        if data.status_code == 201:
            data = json.loads(data.content.decode("utf-8"))
            return data["object"]["sha"]
        else:
            decoded_data = json.loads(data.content.decode("utf-8"))
            return self.ProxyError(
                data.status_code, (decoded_data, "message"),
                step="make_ref", context={
                    "uri": uri,
                    "params": params
                }
            )