Skip to end of metadata
Go to start of metadata


jira4r is a Ruby client library useful for controlling Atlassian's JIRA issue tracking system. It is currently in uses as part of the Xircles product that manages the Codehaus and other open source development sites. While not under heavy development, it is in heavy use in production systems.

For users


jira4r requires

  • the latest SOAP4R gem. See the Installation Guide for details.
  • a modern JIRA (it is relatively straight-forward to rework the plugin to work against older JIRAs)


See the 2 minute walkthrough

See Examples for more information on how to use the library.

For developers

You can find more information about the project at

  • No labels

1 Comment

  1. I was unable to get "addAttachmentsToIssue" to work from Ruby; I kept getting "java.lang.IllegalArgumentException: argument type mismatch (SOAP::FaultError)".  I eventually followed several threads including and discovered that since JIRA 3.13.3 there is an API method addBase64EncodedAttachmentsToIssue which has a more straight-forward method signature.  So I added code in jira_soap_service_driver.rb so that jira4r would recognize the new API method and now my code works.  Here are the lines I inserted into jira_soap_service_driver.rb:

    [, "addBase64EncodedAttachmentsToIssue"),
              [ ["in", "in0", ["::SOAP::SOAPString"]],
                ["in", "in1", ["::SOAP::SOAPString"]],
                ["in", "in2", ["Jira4R::V2::ArrayOf_xsd_string", "", "ArrayOf_xsd_string"]],
                ["in", "in3", ["Jira4R::V2::ArrayOf_xsd_string", "", "ArrayOf_xsd_string"]],
                ["retval", "addAttachmentsToIssueReturn", ["::SOAP::SOAPBoolean"]] ],
              { :request_style =>  :rpc, :request_use =>  :encoded,
                :response_style => :rpc, :response_use => :encoded,
                :faults => {"Jira4R::V2::RemoteAuthenticationException_"=>{:use=>"encoded", :name=>"RemoteAuthenticationException", :ns=>"", :namespace=>"", :encodingstyle=>""}, "Jira4R::V2::RemotePermissionException_"=>{:use=>"encoded", :name=>"RemotePermissionException", :ns=>"", :namespace=>"", :encodingstyle=>""}, "Jira4R::V2::RemoteValidationException_"=>{:use=>"encoded", :name=>"RemoteValidationException", :ns=>"", :namespace=>"", :encodingstyle=>""}, "Jira4R::V2::RemoteException_"=>{:use=>"encoded", :name=>"RemoteException", :ns=>"", :namespace=>"", :encodingstyle=>""}} }

      I inserted these new lines immediately after the similar lines for "addAttachmentsToIssue" and before the lines for "getAttachmentsFromIssue".

    Here is my example Ruby code that tests this API method: