Skip to content
A Microsoft Sharepoint Web Services library for Ruby.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Viewpoint for Sharepoint Web Services

This is a Ruby client library for Sharepoint Web Services. If you've used my Viewpoint library for Exchange Web Services you will no doubt notice a similar feel to this library. It however cannot be a one-for-one do to the way Sharepoint splits its web services among many different services.

There is still quite a lot that needs to be done with the model layer. However, if you are a more daring personality the web service back-end is fairly complete for the web services I've chosen to expose thus far. I've also tried to document each back-end method to its fullest and to provide links to the Microsoft docs where I fall short. Documentation should be up to date on

Example Usage


require 'viewpoint/spws'
site = 'https://myspsite/site_a/Default.aspx'
# If using GSSAPI and the 'gssapi' gem you do not need to specify a user/pass
scli =
# Otherwise you can specify a user/pass
scli =, user, pass)

Getting Lists

# Retrieve all Lists for this site
lists = scli.get_lists
# Retrieve a specific list
taskl = scli.get_list('Task List')
# Retrieve a specific list by GUID
mylist = scli.get_list('{9202CCD0-2EA7-012F-0C9A-58D3859A6B00}')

Information about a List

# => "Task List" 
# => "Test Task List" 
# => #<DateTime: 2010-02-17T04:44:28+00:00 ((2455245j,17068s,0n),+0s,2299161j)> 
# => #<DateTime: 2012-01-09T06:03:25+00:00 ((2455936j,21805s,0n),+0s,2299161j)> 

Retrieving Items

# Retrieves an Array of Items
tasks = taskl.items

Creating/Renaming/Deleting a Task (other types of ListItems are forthcoming)

t1 = taskl.add_item!(:title => "New Task")
# Set and call #save!
t1.rename  'My New Task'!
# or use the autosave method
t1.rename! "My Really New Task"
# or use an auto-saving transaction
t1.update! do |l|
  l.rename 'New Name'
  l.set_priority :low
  l.set_status :waiting

Upload a file to a DocumentLibrary List

doclib = scli.get_list 'Personal Documents'
doclib.add_file! :file => '/path/to/file'

My Links

You can’t perform that action at this time.