Service-Proxy (SP) is a software component, part of the MasterKey suite, that acts as an intermediary between the Pazpar2 meta-search engine, the Torus target and user information store and the user search interface.

SP allows to provide new meta-search related functionality in two ways: by building on top of standard Pazpar2 protocol commands and by introducing new ones.

Building on top of Pazpar2 commands is done by filtering and enriching standard Pazpar2's protocol responses by means of pre- and post-processing. SP has a notion of a chain ("processing pipeline") that can be configured and mapped to a Pazpar2 command via the configuration file. In this scheme, at some stage in the chain client requests are "proxied" (using the 'relay' plugin) to Pazpar2 and the responses, after possible modifications, are passed on to the client. Pazpar2 session management, authorization and record meta-data mangling are examples of functionality that can be introduced in this way.

Addition of new "commands" is done in a similar manner -- all client requests that include the command parameter are internally mapped to a corresponding processing chain. Those chains may be configured to include arbitrary plugins: some of the plugins deal with things related to Pazpar2 (like the mentioned 'relay' plugin), others implement quite custom functionality (e.g storing records persistently or authenticating users). While not fully transparent to the Pazpar2 client, new 'commands' have syntax and semantic very similar to the standard Pazpar2 protocol. All plugins, invoked via a chain, run within the same (authenticated) user session and as such have access to the same resources (e.g current active pazpar2 session or target settings).

Service-Proxy was written with extensibility in mind -- all (even the core 'relay') functionality is implemented via plugins. New plugins are developed easily since they are simple Java classes. SP plugin programming API (SDK) is available as a Maven artifact.

SP is a standard Java web application that can be deployed on a conforming servlet container.