code: func (u *Client) RevokeToken(accessToken string) error {
  	segments := strings.Split(accessToken, ".")
  
  	if len(segments) < 2 {
  		return errors.New("access token missing segments")
  	}
  
  	jsonPayload, err := base64.RawURLEncoding.DecodeString(segments[1])
  
  	if err != nil {
  		return errors.New("could not base64 decode token payload")
  	}
  
  	payload := make(map[string]interface{})
  	json.Unmarshal(jsonPayload, &payload)
  	jti, ok := payload["jti"].(string)
  
  	if !ok {
  		return errors.New("could not parse jti from payload")
  	}
  
  	request, err := http.NewRequest(http.MethodDelete, u.AuthURL+"/oauth/token/revoke/"+jti, nil)
  	if err != nil {
  		return err
  	}
  	request.Header.Set("Authorization", "Bearer "+accessToken)
  	resp, err := u.Client.Do(request)
  	if err != nil {
  		return err
  	}
  	defer resp.Body.Close()
  
  	if resp.StatusCode >= http.StatusBadRequest {
  		body, err := ioutil.ReadAll(resp.Body)
  		if err != nil {
  			return err
  		}
  		return fmt.Errorf("Received HTTP %d error while revoking token from auth server: %q", resp.StatusCode, body)
  	}
  
  	return nil
  }
docs: // RevokeToken revokes the given access token