Define APIs
You define APIs by adding the API
section to any screen. Note that API
would be at the root level of the document, i.e. as a sibling to the View
.
API:
myFirstApi: # a new to refer to this API later
inputs: # specify an array of inputs the API expect. You can reference the inputs in the other API properties, such as the body
uri: # the endpoint to call, e.g. https://dummyjson.com/users/1
method: # the HTTP method, such as GET, POST, PUT, DELETE, PATCH
parameters: # set the parameters to be passed to the API
manageCookies: # Specify whether to manage cookies automatically for the request. This is only valid for native apps and will be ignored for web apps. Default is false.
headers: # set headers such as authorization tokens
body: # set body, in JSON or YAML, to pass data to the API
onSuccess: # fire an action when the API returns a 2**
onError: # fire an action when the API returns a 4**
# add more APIs as you need
mySecondApi:
GET call without authentication
For public APIs that do not require authentication, you typically need only the URI and the method.
API:
getUser:
uri: https://dummyjson.com/users/1
method: GET
GET call with bearer token
APIs might be secured by requiring a token. This token is typically passed as a header parameter named Authorization
.
API:
getUser:
uri: https://dummyjson.com/users/1
method: GET
headers:
Authorization: "Bearer <<add token here>>"
GET call with API key
Some API providers would issue keys to their customers. Typically, the API provider would require the key to be passed a parameter. Check with API provider documentation on what the name of this parameter is. Here, we use apiKey
as an example.
API:
getUser:
uri: https://dummyjson.com/users/1
method: GET
parameters:
apiKey: "<<add key here>>"
POST call with data
Typically you use POST calls with a body to pass data from the frontend to the backend. You can specify the body of the API, and use inputs to pass them dynamically.
API:
addProduct:
inputs:
- productTitle
uri: https://dummyjson.com/products/add
method: POST
body:
title: "${productTitle}" # example of a dynamic data that is set based on the inputs
source: MyApp # example of a static data that is always passed
apiSecureStorage
For API calls, you can use apiSecureStorage.key
to directly access secure storage values within the API context. This approach doesn't require any callbacks or async handling.
Example
API:
createToDo:
url: http://192.168.18.163:3000/api/test
method: 'POST'
headers:
Context: apiKey ${apiSecureStorage.newdata}
body:
records:
- fields:
desc: "${apiSecureStorage.newdata} ${ensemble.storage.counter}"