Authentication
Generation of an API key must be done on a per account basis. The Redlist Public API doesn't currently support API Keys that span multiple accounts.
How to Generate an API Key
Login to Redlist and Go to Admin > Integration Hub
Click the blue + button at the top of the page
Click the Redlist option in the Connect Integration modal
Give the integration a Description and upload an image if desired - click Next
Choose the permissions desired - click Create
Copy the ApiKey, Secret, and ShardID - these will need to be included on all api requests for this account
Structuring the API Calls
Add the three required headers with their values (provided in the Redlist Integration Hub) to all Public API calls:
apiKey: {{API Key}}
vaultSecret: {{Secret}}
shardID: {{ShardID}}
Public API GETs and PATCHes
Parameter Usages on GET calls All of these functions can be used with the Get requests since they share this functionality. (ex. GET api/Tasks, GET api/ApplicationTypes, etc)
Pagination
Calling Get without any parameters by default will just include the first 25 records. Pagination supports ordering (sorting) and page size manipulation.
Query Parameters:
orderby - Sets the sorting of the pagination. Accepts a comma separated list or single value of the properties of the object (e.g. Name,Description). Use a space then Asc/Desc to determine direction. If no direction is specified then Asc is assumed.
skip - How many records to skip. Defaults to 0.
take - How many records to take. Defaults to 25; max allowed is 1000. Use in conjunction with skip to paginate results for a performant experience querying data.
Example call:
GET api/Tasks?orderby=CompletedOn Desc&take=25&skip=0
- retrieve records 1-25
GET api/Tasks?orderby=CompletedOn Desc&take=25&skip=25
- retrieve records 26-50
Filtering
Filtering can be applied to any of the GET calls that return a list. Almost any property on the object can be used for filtering. The name of the property should act as the parameter and then the value as the value to filter on. By default, this filtering only works with exact matches. However, by using the fuzzy
and extFilter
filter rules, more complex comparisons can be made.
Note: if an object allows for logical deletion (has a "Deleted" flag), then deleted records are automatically filtered out unless Deleted=true
is specified.
Example
GET api/Tasks?TaskExternalMessagingID=2
- returns the task(s) that have 2 as the value for TaskExternalMessagingID
Fuzzy And ExtFilter
fuzzy - If present, operation will be a "Contains" operation. Enabled if fuzzy=true ex. ?fuzzy=true&Description=lube
will search for the term "lube" in all task descriptions
extFilter - If present, will override fuzzy
. See more information in the section below for usage
ExtFilters
If extFilter
is present, you can indicate the operation that you would like to make. The options are as follows:
ne - Not Equals
gt - Greater Than
ge - Greater Than or Equal to
lt - Less Than
le - Less Than or Equal to
These are to be entered with a space after the value being compared.
Example
GET api/Tasks?TaskExternalMessagingID=2 le&extFilter=true
- returns the task(s) that have 2 or less as the value for TaskExternalMessagingID
GET api/Tasks?CompletedOn=null ne&extFilter=true
- Get all tasks that are completed
PATCH Endpoint Examples
Rename a task and descriptions
Original
{ "Description" : "Sample Description" }
Patch
[ {"op": "replace", "path": "/Description", "value": "Public API PATCH Test"} ]
After Patch
{ "Description" : "Public API PATCH Test" }
More advanced examples here: https://jsonpatch.com/