Flows Get Flows
GET
https://api.appmixer.com/flows
Return all flows of a user.
curl "https://api.appmixer.com/flows" -H "Authorization: Bearer [ACCESS_TOKEN]"
Query Parameters
Filter flows by their property values. Example: "userId:123abc" returns only flows who's owner is the user with ID "123abc" (i.e. shared flows are excluded). Note that you can also search on nested fields. This is especially useful with the customFields
metadata object. For example: "filter=customFields.category:healthcare".
Filter flows by their sharing setting. Example: "read,start". All possible permission are currently "read", "start", "stop".
Exclude flow object properties. Example: "-flow,-thumbnail".
Sorting parameter. Can be any flow object property followed by semicolon and 1 (ascending), -1 (descending). Example: "mtime:-1".
A term to filter flows containing pattern in their names.
The index of the first item returned. Default is 0. Useful for paging.
Maximum items returned. Default is 100. Useful for paging.
200 Flows successfully retrieved.
Copy [
{
"userId": "58593f07c3ee4f239dc69ff7",
"flowId": "9089f275-f5a5-4796-ba23-365412c5666e",
"stage": "stopped",
"name": "Flow #4",
"btime": "2018-03-29T19:24:08.950Z",
"mtime": "2018-04-05T12:50:15.952Z",
"sharedWith": [{
"email": "david@client.io",
"permissions": ["read", "start", "stop"]
}],
"flow": {
"e15ef119-8fcb-459b-aaae-2a3f9ee41f15": {
"type": "appmixer.utils.http.Uptime",
"label": "Uptime",
"source": {},
"x": 110,
"y": 90,
"config": {}
},
"43f1f63a-ecd2-42dc-a618-8c96b4acc767": {
"type": "appmixer.utils.email.SendEmail",
"label": "SendEmail",
"source": {
"in": {
"e15ef119-8fcb-459b-aaae-2a3f9ee41f15": [
"up"
]
}
},
"x": 320,
"y": -10,
"config": {
"transform": {
"in": {
"e15ef119-8fcb-459b-aaae-2a3f9ee41f15": {
"up": {
"type": "json2new",
"lambda": {
"from_email": "info@appmixer.com",
"text": "Site {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.up.target}}} is back UP.\nDowntime: {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.up.downTimeText}}}\nHTTP Status Code: {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.up.statusCode}}}",
"subject": "Appmixer: Site UP ({{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.up.target}}})"
}
}
}
}
}
}
},
"416150af-b0d4-4d06-8ad1-75b17e578532": {
"type": "appmixer.utils.email.SendEmail",
"label": "SendEmail",
"source": {
"in": {
"e15ef119-8fcb-459b-aaae-2a3f9ee41f15": [
"down"
]
}
},
"x": 320,
"y": 195,
"config": {
"transform": {
"in": {
"e15ef119-8fcb-459b-aaae-2a3f9ee41f15": {
"down": {
"type": "json2new",
"lambda": {
"from_email": "info@appmixer.com",
"subject": "Appmixer: Site DOWN ({{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.down.target}}})",
"text": "Site {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.down.target}}} is DOWN.\nHTTP Status Code: {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.down.statusCode}}}"
}
}
}
}
}
}
}
},
"mode": "module",
"thumbnail": "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D...",
"started": "2018-04-05T12:33:15.357Z"
},
{
"userId": "58593f07c3ee4f239dc69ff7",
"flowId": "93198d48-e680-49bb-855c-58c2c11d1857",
"stage": "stopped",
"name": "Flow #5",
"btime": "2018-04-03T15:48:52.730Z",
"mtime": "2018-04-11T07:41:22.767Z",
"flow": {
"ce0742f4-4f72-4ea2-bea6-62cfaa2def86": {
"type": "appmixer.utils.email.SendEmail",
"label": "SendEmail",
"source": {
"in": {
"3d71d67f-df0b-4723-bf85-20c97f6eaff6": [
"weather"
]
}
},
"x": 485,
"y": 95,
"config": {
"transform": {
"in": {
"3d71d67f-df0b-4723-bf85-20c97f6eaff6": {
"weather": {
"type": "json2new",
"lambda": {
"from_email": "info@appmixer.com",
"subject": "Appmixer: Current Weather",
"text": "Temperature: {{{$.3d71d67f-df0b-4723-bf85-20c97f6eaff6.weather.main.temp}}} dgC\nPressure: {{{$.3d71d67f-df0b-4723-bf85-20c97f6eaff6.weather.main.pressure}}} hPa\nHumidity: {{{$.3d71d67f-df0b-4723-bf85-20c97f6eaff6.weather.main.humidity}}}%\nCloudiness: {{{$.3d71d67f-df0b-4723-bf85-20c97f6eaff6.weather.clouds.all}}}%",
"to": ""
}
}
}
}
}
}
},
"3d71d67f-df0b-4723-bf85-20c97f6eaff6": {
"type": "appmixer.utils.weather.GetCurrentWeather",
"label": "GetCurrentWeather",
"source": {
"location": {
"b4d1ddbc-4bed-4de3-8fe1-9d9542d03cf0": [
"out"
]
}
},
"x": 290,
"y": 95,
"config": {
"transform": {
"location": {
"b4d1ddbc-4bed-4de3-8fe1-9d9542d03cf0": {
"out": {
"type": "json2new",
"lambda": {
"city": "Prague",
"units": "metric"
}
}
}
}
}
}
},
"b4d1ddbc-4bed-4de3-8fe1-9d9542d03cf0": {
"type": "appmixer.utils.controls.OnStart",
"label": "OnStart",
"source": {},
"x": 105,
"y": 95,
"config": {}
}
},
"mode": "module",
"thumbnail": "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D...",
"started": "2018-04-06T12:59:29.631Z"
}
]
Get Flow
GET
https://api.appmixer.com/flows/:id
Return one flow.
curl "https://api.appmixer.com/flows/9089f275-f5a5-4796-ba23-365412c5666e" -H "Authorization: Bearer [ACCESS_TOKEN]"
Path Parameters
200 Flow successfully retrieved
Copy {
"userId": "58593f07c3ee4f239dc69ff7",
"flowId": "9089f275-f5a5-4796-ba23-365412c5666e",
"stage": "stopped",
"name": "Flow #4",
"btime": "2018-03-29T19:24:08.950Z",
"mtime": "2018-04-05T12:50:15.952Z",
"flow": {
"e15ef119-8fcb-459b-aaae-2a3f9ee41f15": {
"type": "appmixer.utils.http.Uptime",
"label": "Uptime",
"source": {},
"x": 110,
"y": 90,
"config": {}
},
"43f1f63a-ecd2-42dc-a618-8c96b4acc767": {
"type": "appmixer.utils.email.SendEmail",
"label": "SendEmail",
"source": {
"in": {
"e15ef119-8fcb-459b-aaae-2a3f9ee41f15": [
"up"
]
}
},
"x": 320,
"y": -10,
"config": {
"transform": {
"in": {
"e15ef119-8fcb-459b-aaae-2a3f9ee41f15": {
"up": {
"type": "json2new",
"lambda": {
"from_email": "info@appmixer.com",
"text": "Site {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.up.target}}} is back UP.\nDowntime: {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.up.downTimeText}}}\nHTTP Status Code: {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.up.statusCode}}}",
"subject": "Appmixer: Site UP ({{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.up.target}}})"
}
}
}
}
}
}
},
"416150af-b0d4-4d06-8ad1-75b17e578532": {
"type": "appmixer.utils.email.SendEmail",
"label": "SendEmail",
"source": {
"in": {
"e15ef119-8fcb-459b-aaae-2a3f9ee41f15": [
"down"
]
}
},
"x": 320,
"y": 195,
"config": {
"transform": {
"in": {
"e15ef119-8fcb-459b-aaae-2a3f9ee41f15": {
"down": {
"type": "json2new",
"lambda": {
"from_email": "info@appmixer.com",
"subject": "Appmixer: Site DOWN ({{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.down.target}}})",
"text": "Site {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.down.target}}} is DOWN.\nHTTP Status Code: {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.down.statusCode}}}"
}
}
}
}
}
}
}
},
"mode": "module",
"thumbnail": "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D...",
"started": "2018-04-05T12:33:15.357Z"
}
Get Flows Count
GET
https://api.appmixer.com/flows/count
Return the number of all flows of a user.
curl "https://api.appmixer.com/flows/count" -H "Authorization: Bearer [ACCESS_TOKEN]"
Create Flow
POST
https://api.appmixer.com/flows
Create a new flow.
curl -XPOST "https://api.appmixer.com/flows" -H "Content-Type: application/json" -d '{ "flow": FLOW_DESCRIPTOR, "name": "My Flow #1", "customFields": { "category": "healthcare" } }'
Request Body
An object with any custom properties. This is useful for storing any custom metadata and later using the metadata values to filter returned flows.
200 Flow successfully created.
Copy {
"flowId": "26544d8c-5209-44ac-9bdf-ef786924b07b"
}
Update Flow
PUT
https://api.appmixer.com/flows/:id
Update an existing flow.
curl -XPUT "https://api.appmixer.com/flows/9089f275-f5a5-4796-ba23-365412c5666e" -H "Content-Type: application/json" -d '{ "flow": FLOW_DESCRIPTOR, "name": "My Flow #2" }'
Path Parameters
Request Body
An object with flow
, name
, customFields
and thumbnail
parameters. flow
is the Flow descriptor.
200
Copy {
"flowId": "26544d8c-5209-44ac-9bdf-ef786924b07b",
"result": "updated"
}
Delete Flow
DELETE
https://api.appmixer.com/flows/:id
Delete an existing flow.
curl -XDELETE "https://api.appmixer.com/flows/9089f275-f5a5-4796-ba23-365412c5666e" -H "Authorization: Bearer [ACCESS_TOKEN]"
Path Parameters
200
Copy {
"flowId": "26544d8c-5209-44ac-9bdf-ef786924b07b"
}
Start/Stop Flow
POST
https://api.appmixer.com/flows/:id/coordinator
Start or Stop an existing flow.
curl -XPOST "https://api.appmixer.com/flows/9089f275-f5a5-4796-ba23-365412c5666e" -H "Content-Type: application/json" -d '{ "command": "start" }'
Path Parameters
Request Body
The command to send to the flow coordinator. It can be either "start"
or "stop"
.
200
Copy {
"flowId": "26544d8c-5209-44ac-9bdf-ef786924b07b"
}
Get Variables
GET
https://api.appmixer.com/variables/:flowId
Get variables. Variables are placeholders that can be used in component config or inputs. These placeholders are replaced either at runtime by data coming from components connected back in the chain (dynamic variables) or by real values (static variables).
Get component config variables:
curl "https://api.appmixer.com/variables/93198d48-e680-49bb-855c-58c2c11d1857?componentId=e25dc901-f92a-46a2-8d29-2573d4ad65e5" -H "Authorization: Bearer [ACCESS_TOKEN]"
Get component input variables:
In this case, we identify the connection (one path in the flow graph) by source and target components, output port of the source component and input port of the target component. This address uniquely identifies one "link" in the flow graph.
curl "https://api.appmixer.com/variables/93198d48-e680-49bb-855c-58c2c11d1857?srcComponentId=ba09820f-db59-4739-b22d-414826842495&srcComponentOut=trigger&tgtComponentId=e25dc901-f92a-46a2-8d29-2573d4ad65e5&tgtComponentIn=message" -H "Authorization: Bearer [ACCESS_TOKEN]"
Path Parameters
Query Parameters
Name of the output port of the source component.
Name of the input port of the target component.
ID of the target component ID.
ID of the source (connected) component ID.
ID of the component for which we're requesting config static variables.
200
Copy {
"dynamic":[],
"static":{
"channelId":[
{ "label": "my channel", "value":"CA0M22WU8" },
{ "label": "appmixer","value":"C6CMEGA9J" }
]
}
}
If no parameters besides flowId
are passed, variables for the entire flow are returned in the following format:
Copy {
'component1': {
'properties': {
// properties variables
},
'inputs': {
'in1': {
'srcComponentId1': {
'out1': {
'dynamic': [],
'static': {}
},
'out2': {
'dynamic': [],
'static': {}
},
},
'srcComponentId2': {
'out': {
'dynamic': [],
'static': {}
}
}
},
'in2': {
'srcComponentId1': {
'out1': {
'dynamic': [],
'static': {}
}
}
}
}
},
'component2': {
'properties': {
'dynamic': [],
'groups': null,
'inputs': null,
'schema': null,
'static': {}
}
// component2 has no input ports so there's no 'inputs'
}
}