Collection Tools Component
Common collection operations
Component key: collection-tools#
Description#
Actions#
AggregateApply aggregate function to list | key: aggregate
Input | Default | Notes | Example |
---|---|---|---|
Input Aggregate Function string | Default | Notes Aggregate function to apply | Example sum |
Input Filter Function code | Default
| Notes Filter out any elements that do not return true | Example (value) => value.someProperty === 17 |
Input List data / Required | Default | Notes Reference to a list of data to operate on | Example |
#
Output Example Payload{ "data": 117}
#
AppendAppend element to the end of the list | key: append
Input | Notes |
---|---|
Input Element data / Required | Notes Reference to an element to look for |
Input List data / Required | Notes Reference to a list of data to operate on |
#
Output Example Payload{ "data": [ 1, 2, 3, 4 ]}
#
ChunksChunk the list into lists of the specified number of elements | key: chunks
Input | Default | Notes |
---|---|---|
Input List data / Required | Default | Notes Reference to a list of data to operate on |
Input Number of Elements string / Required | Default 1 | Notes Number of Elements to take |
#
Output Example Payload{ "data": [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]}
#
Combine CollectionCombine multiple collections into a single object. | key: combineCollections
Input | Notes | Example |
---|---|---|
Input Collections string / Required Key Value List | Notes Returns an object with the specified key and corresponding collection as the value | Example [
{"key": "CustomerQueryResult", "value": { Customer: { Name: "Acme Contracting" } }},
{"key": "AccountQueryResult", "value": { Account: { AccountId: "123123123" } }},
] |
#
Output Example Payload{ "data": { "CustomerQueryResult": { "Customer": { "Name": "Acme Contracting" } }, "AccountQueryResult": { "Account": { "AccountId": "123123123" } } }}
#
ConcatenateConcatenate two lists together into a single list | key: concatenate
Input | Notes |
---|---|
Input List data / Required | Notes Reference to a list of data to operate on |
Input List data / Required | Notes Reference to a list of data to operate on |
#
Output Example Payload{ "data": [ 1, 2, 3, 4, 5, 6 ]}
#
CountCount the number of occurrences of element in list | key: count
Input | Notes |
---|---|
Input Element data / Required | Notes Reference to an element to look for |
Input List data / Required | Notes Reference to a list of data to operate on |
#
Output Example Payload{ "data": 3}
#
Create ObjectCreates a new object from provided key/value pairs | key: createObject
Input | Notes |
---|---|
Input Key & Value Pairs data / Required Key Value List | Notes Key and value pairs |
#
Output Example Payload{ "data": { "first": "value", "second": 17 }}
#
De-duplicateDe-duplicate the elements of the list | key: deduplicate
Input | Notes |
---|---|
Input List data / Required | Notes Reference to a list of data to operate on |
#
Output Example Payload{ "data": [ 1, 2, 3 ]}
#
Field Value MappingMaps the values from two different collections and returns a key/value list where the 'key' is the value of the Key Mappings input and the 'value' is the value of the Value Mappings input | key: fieldValueMapping
Input | Notes | Example |
---|---|---|
Input Key Mappings data | Notes | Example [{"key":"AccountName","value":"Deploy_Time_Specified_Account_Name__c"},{"key":"AccountValue","value":"Deploy_Time_Specified_Account_Value__c"}] |
Input Value Mappings string Key Value List | Notes | Example [{"key":"AccountName","value":"bar"},{"key":"AccountValue","value":"baz"}] |
#
Output Example Payload{ "data": [ { "key": "Deploy_Time_Specified_Account_Name__c", "value": "bar" }, { "key": "Deploy_Time_Specified_Account_Value__c", "value": "baz" } ]}
#
FilterFilter elements of a list | key: filter
Input | Default | Notes | Example |
---|---|---|---|
Input Filter Function code | Default
| Notes Filter out any elements that do not return true | Example (value) => value.someProperty === 17 |
Input List data / Required | Default | Notes Reference to a list of data to operate on | Example |
#
FirstGet first element from a list | key: first
Input | Notes |
---|---|
Input List data / Required | Notes Reference to a list of data to operate on |
#
LastGet last element from a list | key: last
Input | Notes |
---|---|
Input List data / Required | Notes Reference to a list of data to operate on |
#
LengthCount the number of elements in list | key: length
Input | Notes |
---|---|
Input List data / Required | Notes Reference to a list of data to operate on |
#
Output Example Payload{ "data": 7}
#
MapTransform a list and its elements | key: map
Input | Default | Notes | Example |
---|---|---|---|
Input Context Data data | Default | Notes Additional contextual data to supply to the Transform Function | Example |
Input Filter Function code | Default
| Notes Filter out any elements that do not return true | Example (value) => value.someProperty === 17 |
Input List data / Required | Default | Notes Reference to a list of data to operate on | Example |
Input Transform Function code | Default
| Notes Function to transform each element | Example (value) => value.someProperty |
#
Process In OrderEnsures that payloads are processed in order across executions according to an ordering specified by a payload attribute. Returns the largest possible set of ordered payloads on the Process branch, and otherwise follows the Skip branch and returns the current item. | key: processInOrder
Input | Notes | Example |
---|---|---|
Input Collection ID string / Required | Notes A value that uniquely identifies the collection that is being processed out of order. | Example da41e39f-ea4d-435a-b922-c6aae3915ebe |
Input Collection Length data / Required | Notes The number of items in the collection. When processing is finished the interim data for the collection is removed. | Example 100 |
Input Item data / Required | Notes The current item to consider for processing. | Example { Index: 0, Name: "Acme Contracting" } |
Input Item Index data / Required | Notes The integer value to consider as the index for the current item that specifies intended processing order. 0 is the first index value. | Example 10 |
The Process In Order action allows you to send several requests to an instance out of order, and helps to ensure that data runs through your integration in order. Requests with data payloads are collected, and when an ordered set of requests have been received this action processes the requests in the order you specify.
In order to use this action, you will need to know how many total items you are sending ahead of time.
Example: suppose we are updating an inventory system with three updates, and order is important. We want to process widgets first, then gadgets, and finally whatsits. We know that we have three items to import, and due to limitations of our third-party system we can't send them all at once. We're not confident that they'll arrive to Prismatic in any particular order, so we'll use this action to help.

We'll come up with a unique "Collection ID", and begin sending our data in any order:
$ curl 'https://hooks.prismatic.io/trigger/EXAMPLE==' \ --header "Content-Type: application/json" \ --data '{"item": "whatsits", "index": 2}' \ --header 'collectionid: abc-123' \ --header 'collectionlength: 3'
$ curl 'https://hooks.prismatic.io/trigger/EXAMPLE==' \ --header "Content-Type: application/json" \ --data '{"item": "widgets", "index": 0}' \ --header 'collectionid: abc-123' \ --header 'collectionlength: 3'
$ curl 'https://hooks.prismatic.io/trigger/EXAMPLE==' \ --header "Content-Type: application/json" \ --data '{"item": "gadgets", "index": 1}' \ --header 'collectionid: abc-123' \ --header 'collectionlength: 3'
The first time that our integration is invoked, the {"item": "whatsits", "index": 2}
payload will be stored for future processing, since items with index 0
and 1
have not yet been processed.
The second time that our integration is invoked, the {"item": "widgets", "index": 0}
payload will be processed immediately, since it has index 0
, but then our loop will stop since an item with index 1
has not yet been received.
The third time our integration is invoked, the {"item": "gadgets", "index": 1}
will be processed right away, since it has index 1
and an item with index 0
has already been processed.
The {"item": "whatsits", "index": 2}
payload will also be pulled from storage and processed since it is next in line to be processed.
At this point all items will have been processed.
Note: Items must be zero-indexed.
#
Output Example Payload{ "data": [ { "Index": 0, "Name": "Acme Contracting" }, { "Index": 1, "Name": "FooBar Consulting" } ], "instanceState": { "7d577253-3ef0-4a0a-bb7f-8335c2596e70": { "da41e39f-ea4d-435a-b922-c6aae3915ebe": { "lastIndex": 1, "items": [] } } }, "branch": "Process"}
#
RemoveRemove all occurrences of an element from a list | key: remove
Input | Notes |
---|---|
Input Element data / Required | Notes Reference to an element to look for |
Input List data / Required | Notes Reference to a list of data to operate on |
#
Output Example Payload{ "data": [ 1, 3 ]}
#
Take FirstTake first number of elements from a list | key: takeFirst
Input | Default | Notes |
---|---|---|
Input List data / Required | Default | Notes Reference to a list of data to operate on |
Input Number of Elements string / Required | Default 1 | Notes Number of Elements to take |
#
Output Example Payload{ "data": [ 1, 2, 3 ]}
#
Take LastTake last number of elements from a list | key: takeLast
Input | Default | Notes |
---|---|---|
Input List data / Required | Default | Notes Reference to a list of data to operate on |
Input Number of Elements string / Required | Default 1 | Notes Number of Elements to take |
#
Output Example Payload{ "data": [ 7, 8, 9 ]}