...
- Understand the object model. All grouper-ws services are operations based on simple data structures. The structures support Strings, ints, arrays, and structure references.
- Core web service API
- Example structure (only "getters" and "setters" are applicable properties)
- Each operation has many samples (authmated captures, versioned, and up to date). Here is an example
- Most options has a sensible default (e.g. MemberFilter defaults to All members)
- Lookup objects in various (consistent) ways. e.g. to delete a group, you can pass the name or uuid of the group.
- Decide if you are using SOAP or REST (this is real REST, not Axis HTTP/XML)
- Both SOAP and REST support the same API
- Inside SOAP and REST, each operation has two levels of complexity, the normal one, and the Lite one.
- Normal operation: can usually be batched (support a list of inputs, e.g. add multiple groups at once), supports complex inputs (arrays or structures)
- Lite operation: supports only inputs of scalars (no structures, no arrays... only Strings, ints, etc). In REST this also means that the request can be sent via query string only
- If SOAP:
- Implement based on WSDL. Note, you cant get the 1.4 WSDL out of a 2.0 server, since it has backwards compatible changes from 1.5 and 1.6. You could get this 1.4 WSDL from SVN though...
Grouper client version | v1.4, v1.5, v1.6, v2.0 (server version) Endpoint | WSDL from server | WSDL from SVN |
---|---|---|---|
1.4 | https://server.address/grouperWs/services/GrouperService?wsdl | ||
1.5 | https://server.address/grouperWs/services/GrouperService?wsdl | ||
1.6 | https://server.address/grouperWs/services/GrouperService?wsdl | ||
2.0 | https://server.address/grouperWs/services/GrouperService_v2_0 | https://server.address/grouperWs/services/GrouperService_v2_0?wsdl |
- Note, if your servlet is not grouperWs (e.g. grouper-ws) then adjust accordingly.
- There is a sample Java client with sample calls
- If REST:
- Decide what format you want to send and receive data. grouper-ws supports XHTML, XML, and JSON, as well as query strings for input (in URL or message body)
- For example, in the URL you can set the content type you want back:
...