SaaS Post-Processors
Post-processors are, in essence, data transformers. Given data from an endpoint, we can add specific processors to transform the data into a format we need for subject requests.
Configuration
Post-processors are configured within the endpoints
section of a saas_config
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Note: Order matters as it's defined in the config. In the above example, unwrap will be run first, then the output of unwrap will be used in the filter strategy.
Format subsequent requests
Post-processors can format the results of your access requests for use in subsequent update or delete statements.
For example, if we need to return the following in an access request:
1 2 3 4 5 |
|
And we needed to perform an update request for each item within subscriptions
, where subscribed
= TRUE
, then we'd need the following config for our update request:
1 2 3 4 5 6 7 8 |
|
Supported Strategies
unwrap
: Gets object at given data path.filter
: Removes data that does not match a given field and value.
Filter
Filters object or array given field name and value. Value can reference a dynamic identity passed in through the request OR be a hard-coded value.
Configuration details
strategy
: filter
configuration
:
field
(str): Corresponds to the field on which to filter. For example, we wish to filter whereemail_contact == "bob@mail.com"
, thenfield
will beemail_contact
.value
(str): Value to search for when filtering (e.g. hard-codedbob@mail.com
) or Dict of identity path:identity
(str): Identity object from subject request (e.g.email
orphone_number
)
exact
(optional bool defaults to True):value
andfield
value must be the same length (no extra characters).case_sensitive
(optional bool defaults to True): Cases must match betweenvalue
andfield
value.
Examples
Post-Processor Config:
1 2 3 4 5 |
|
Identity data passed in through request:
1 2 3 |
|
Data to be processed:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Result:
1 2 3 4 5 6 7 |
|
Post-Processor Config:
1 2 3 4 5 6 7 |
|
Identity data passed in through request:
1 2 3 |
|
Data to be processed:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Result:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
exact
and case_sensitive
both to False. This allows our value to be a substring of a longer string, and to ignore case (upper vs lower case).
Note: Type casting is not supported at this time. We currently only support filtering by string values. e.g. bob@mail.com
and not 12344245
.
Unwrap
Given a path to a dict/list, returns the dict/list at that location.
Configuration details
strategy
: unwrap
configuration
:
data_path
(str): Gives the path to desired object. E.g.exact_matches.members
will attempt to get themembers
object on theexact_matches
object.
Example
Post-Processor Config:
1 2 3 |
|
Data to be processed:
1 2 3 4 5 6 7 8 |
|
1 2 3 4 |
|