code: def attempt_sync_with_master(pr: PullRequestDetails
                               ) -> Union[bool, CannotAutomergeError]:
      
      master_sha = get_master_sha(pr.repo)
      remote = pr.remote_repo
      url = ("https://api.github.com/repos/{}/{}/merges"
             "?access_token={}".format(remote.organization,
                                       remote.name,
                                       remote.access_token))
      data = {
          'base': pr.branch_name,
          'head': master_sha,
          'commit_message': 'Update branch (automerge)'.format(pr.branch_name)
      }
      response = requests.post(url, json=data)
  
      if response.status_code == 201:
          # Merge succeeded.
          log('Synced #{} ({!r}) with master.'.format(pr.pull_id, pr.title))
          return True
  
      if response.status_code == 204:
          # Already merged.
          return False
  
      if response.status_code == 409:
          # Merge conflict.
          return CannotAutomergeError("There's a merge conflict.")
  
      if response.status_code == 403:
          # Permission denied.
          return CannotAutomergeError(
              "Spurious failure. Github API requires me to be an admin on the "
              "fork repository to merge master into the PR branch. Hit "
              "'Update Branch' for me before trying again.")
  
      raise RuntimeError('Sync with master failed for unknown reason. '
                         'Code: {}. Content: {}.'.format(response.status_code,
                                                         response.content))
docs: References:
          https://developer.github.com/v3/repos/merging/#perform-a-merge