ZimbraWsdl
ZimbraWsdl just provides a valid WSDL document for the VMware Zimbra Soap API that can be used with any soap library.
The gem just provides a valid document and a method that returns the path to it, so you can just require this gem in your Gemfile and you get a (hopefully) updated and community backed version of the Zimbra API WSDL.
Status
Currently implemented:
Authentication
- AuthRequest
- DelegateAuthRequest
- NoOpRequest
Accounts
- CreateAccountRequest
- DeleteAccountRequest
- GetAccountRequest
- GetAllAccountsRequest
- GetAllAdminAccountsRequest
- ModifyAccountRequest
- RenameAccountRequest
- SetPasswordRequest
Account Aliases
- AddAccountAliasRequest
- RemoveAccountAliasRequest
Distribution Lists
- AddDistributionListMemberRequest
- GetAllDistributionListsRequest
- GetDistributionListRequest
Class of Service (COS)
- CreateCosRequest
- DeleteCosRequest
- GetAllCosRequest
- ModifyCosRequest
- RenameCosRequest
Domains
- CreateDomainRequest
- DeleteDomainRequest
- GetAllDomainsRequest
- GetDomainRequest
- ModifyDomainRequest
Directory
- SearchDirectoryRequest
Installation
Add this line to your application's Gemfile:
gem 'zimbra_wsdl'
And then execute:
$ bundle
Or install it yourself as:
$ gem install zimbra_wsdl
Usage
The only method provided is ZimbraWsdl.admin_wsdl
and returns the absolute path to the wsdl document. You can then use the document however you want.
Example usage with savon:
require 'savon'
require 'zimbra_wsdl'
ZIMBRA_SERVER = "zimbra.example.com"
ZIMBRA_ADMIN_USERNAME = "[email protected]"
ZIMBRA_ADMIN_PASSWORD = "YOUR_PASSWORD"
Savon.configure do |config|
config.log = false
config.log_level = :info
# config.logger = Logger.new('/tmp/zimbra_wsdl_savon_example.log')
end
client = Savon::Client.new do
wsdl.document = ZimbraWsdl.admin_wsdl
wsdl.endpoint = "https://#{ZIMBRA_SERVER}:7071/service/admin/soap"
http.auth.ssl.verify_mode = :none
end
# Authenticate your client (NOTICE: ruby 1.9 hash syntax)
client.request :auth_request, body: { name: ZIMBRA_ADMIN_USERNAME, password: ZIMBRA_ADMIN_PASSWORD }
# Once authenticated you can call any api method
accounts_response = client.request :get_all_accounts_request
accounts = accounts_response.to_array(:get_all_accounts_response, :account)
accounts.each do |account|
puts account[:@name]
end
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request