View source  
  <?php
function userpoints_service_help($section) {
  switch ($section) {
    case 'admin/help#services_userpoints':
    case 'admin/modules#description':
      return t('<p>Provides Userpoints XML-RPC service. Requires services.module.</p>');
  }
}
function userpoints_service_service() {
  return array(
    array(
      '#method' => 'userpoints.get',
      '#callback' => 'userpoints_service_get',
      '#args' => array(
        array(
          '#name' => 'uid',
          '#type' => 'int',
          '#description' => t('A valid Drupal User ID.'),
        ),
        array(
          '#name' => 'tid',
          '#type' => 'int',
          '#optional' => TRUE,
          '#description' => t('An optional Term ID for the category.'),
        ),
      ),
      '#return' => 'struct',
      '#help' => t('Retrieves the number of points the user has.'),
    ),
    array(
      '#method' => 'userpoints.points',
      '#callback' => 'userpoints_service_points',
      '#args' => array(
        array(
          '#name' => 'uid',
          '#type' => 'int',
          '#description' => t('A valid Drupal User ID.'),
        ),
        array(
          '#name' => 'points',
          '#type' => 'int',
          '#description' => t('Number of points to add/subtract.'),
        ),
        array(
          '#name' => 'tid',
          '#type' => 'int',
          '#optional' => TRUE,
          '#description' => t('An optional Term ID for the category.'),
        ),
        array(
          '#name' => 'event',
          '#type' => 'string',
          '#optional' => TRUE,
          '#description' => t('An optional event ID for this transaction.'),
        ),
        array(
          '#name' => 'description',
          '#type' => 'string',
          '#optional' => TRUE,
          '#description' => t('An optional description of this transaction.'),
        ),
      ),
      '#return' => 'struct',
      '#help' => t('Adds/subtracts points to a user.'),
    ),
  );
}
function userpoints_service_get($uid, $tid = NULL) {
  if (!$uid) {
    return services_error(t('User ID parameter is required.'));
  }
  $points = userpoints_get_current_points($uid, $tid);
  $return = new stdClass();
  $return->points = $points;
  return $return;
}
function userpoints_service_points($uid, $points, $tid = NULL, $event = 'userpoints service', $description = NULL) {
  if (!$uid) {
    return services_error(t('User ID parameter is required.'));
  }
  if (!$points) {
    return services_error(t('Points parameter must be a negative or positive number.'));
  }
  $params = array(
    'uid' => $uid,
    'points' => $points,
    'tid' => $tid,
    'event' => $event,
    'description' => $description,
    'display' => FALSE,
    'moderate' => FALSE,
  );
  $result = userpoints_userpointsapi($params);
  $return = new stdClass();
  if (!$result['status']) {
    $return->reason = $result['reason'];
    $return->status = FALSE;
  }
  else {
    $return->status = TRUE;
  }
  return $return;
}