PIPES - com.phenixidentity~phenix-pipes

The purpose of PIPES module is to centralise all data access. The PIPES module handles all reads and writes to/from any datasource. In addition, data manipulation and validation is also a big part of PIPES.

Within the PIPES module one or more PIPES are configured. Each PIPE has a very specific purpose. Authenticating a user, fetch data from one or more datasources etc. Each PIPE consists of one or more VALVES. A VALVE is the functional building block which has one very small but well defined function. There are VALVES for every common CRUD operation and more. Over 100 different VALVE types are currently available.

Valves address data in RAM using the PhenixID Data model.  



Let's take a closer look on how data is represented. This will give a better understanding of how PIPES function.


	"id": "9a5987e4-5f85-48d6-b7c7-02defab38592", //A unique ID is required
	"description": "Just a description",
	"valves": [{  //A list of VALVES to be performed, top to bottom.
		"name": "InputParameterExistValidatorValve", //The name of the VALVE. This is name is used by the system as a key to find tha actual code delivering functionality 
		"config": { //Each VALVE has a configuration set specific to that particular VALVE. 
			"param_name": "password",
			"skip_if_expr": "request.authenticatedrequest === 'true'" //Possible execution rules
	}, {
		"name": "LDAPSearchValve",
		"config": {
			"connection_ref": "3de8a6f2-223b-4afb-bb95-550cd8aa66c9",
			"base_dn": "o=nordicedge",
			"scope": "SUB",
			"size_limit": "0",
			"filter_template": "uid={{request.username}}", //To make execution dynamic data can be hardcoded or taken from the request by property expansion.
			"attributes": "uid,"
	}, {
		"name": "LDAPBindValve",
		"config": {
			"connection_ref": "3de8a6f2-223b-4afb-bb95-550cd8aa66c9",
			"password_param_name": "password",
			"skip_if_expr": "request.authenticatedrequest === 'true'"
	"created": "2016-08-12T12:22:23.787Z"


Once the last VALVE has executed successfully the PIPES module responds to the requestor with a OK status and potentially additional data.