Automation

Basic Concepts

  • Action is a node in the robot execution process, and the simplest way to understand it is that it is a function. The simplest implementation is also a cloud function

    • A function only focuses on doing one thing.

    • Action can be combined to orchestrate workflows and complete a series of tasks.

  • service is a collection of actions. To provide an action, you must first register a service.

    • For example, the Apitable service provides 「create record」 and 「query record」 actions.

Pre-conditions

Publishing Process

sequenceDiagram
    Dev->>+Service(automaition): 1. create automaition service
    Service(automaition)-->>+ Dev: 2. response Ok and return serviceId
    Dev->>+Action(automaition): 3. create automation action relate to serviceId(step2)
    Action(automaition)-->>-Dev: 4. response Ok and return actionId
    Dev-->>- UI: 5.test automation

Unpublishing Process

sequenceDiagram
    Dev->>+Action(automaition): 1. delete automation action
    Action(automaition)-->>-Dev: 2. response Ok
    Dev->>+Service(automaition): 3. delete automaition service
    Service(automaition)-->>+ Dev: 4. response Ok
    Dev-->>- UI: 5.test automation

How to create a new Automation?

To prepare for calling the robot API interface, you can choose a framework or tool according to your familiar programming language to implement it.

  1. If you are familiar with Java, you can create a Spring Boot project, add Spring Web-related dependencies, then add an API interface that meets the requirements, and deploy it to the server.

  2. If you are familiar with Node.js, you can create an Express project, add an API interface that meets the requirements, and deploy it to the server.

  3. Alternatively, you can also use serverless cloud functions to implement the API interface.

1. Create automation service

1.1.1 Create an automation service

Interface address /api/v1/automation/service/create

Request method POST

Interface request Content-Type application/json

Interface description

Creating a automation service

Request parameters

Parameter name

Parameter description

necessary?

Data type

serviceId

This is the unique identifier of the service

TRUE

string

slug

The identifier of the service.

TRUE

string

name

The name of the service

TRUE

string

description

The description of the service

FALSE

string

logo

The logo of the service, an image address

TRUE

string

baseUrl

If the API interface prepared in step one is: https://service.xxx.gcp.com/release/sendMessage ,then the value here is https://service.xxx.gcp.com/release/

TRUE

string

i18n

multiple languages, the value can be: ‘{}‘ ,eg: ‘{"en": {"$webhook": "Webhook"}, "zh": {"$webhook": "网络请求"}}’

TRUE

string

Sample request parameters

{
  "serviceId": "asvnbL206pqzmZfr6a",
  "slug": "webhook",
  "name": "webhook",
    "description": "",
    "logo": "https://s1.apitable.com/xxx",
    "baseUrl": "https://service.xxx.gcp.com/release/",
    "i18n": "{\"en\": {\"webhook": "Webhook"}, "zh": {"$webhook": "网络请求"}}"
}

Response Result Parameters

Parameter name

Parameter description

Data type

code

Result response code, 200 means success

integer(32)

message

Response result description

String

success

Whether successful

boolean

body

ServiceId

String

Return result example

{
    "success": true,
    "code": 200,
    "message": "SUCCESS",
    "data": "asvnbL206pqzmZfr6a"
}

1.1.2 Update automation service

Interface address /api/v1/automation/service/edit/{serviceId}

Request method POST

Interface request Content-Type application/json

Interface description

Update automation service information

Request parameters

Parameter name

Parameter description

Request type

necessary?

Data type

serviceId

This is the unique identifier of the service

path

TRUE

string

name

The name of the service

body

TRUE

string

description

The description of the service

body

FALSE

string

logo

The logo of the service, an image address

body

FALSE

string

baseUrl

If the API interface prepared in step one is: https://service.xxx.gcp.com/release/sendMessage ,then the value here is https://service.xxx.gcp.com/release/

body

FALSE

string

i18n

multiple languages, the value can be: ‘{}‘ ,eg: ‘{"en": {"$webhook": "Webhook"}, "zh": {"$webhook": "网络请求"}}’

body

FALSE

string

Sample request parameters

url: 
    /api/v1/automation/service/edit/asvnbL206pqzmZfr6a


Request body:
 {
  "name": "webhook",
  "description": "",
  "logo": "https://s1.apitable.com/xxx",
  "baseUrl": "https://service.xxx.gcp.com/release/",
  "i18n": "{\"en\": {\"webhook": "Webhook"}, "zh": {"$webhook": "网络请求"}}"
 }

Response Result Parameters

Parameter name

Parameter description

Data type

code

Result response code, 200 means success

integer(32)

message

Response result description

String

success

Whether successful

boolean

data

String

Return result example

{
    "success": true,
    "code": 200,
    "message": "SUCCESS",
    "data": "asvnbL206pqzmZfr6a"
}

1.1.3 Delete automation service

Interface address /api/v1/automation/service/delete/{serviceId}

Request method POST

Interface request Content-Type application/json

Interface description

Delete automation service information

Request parameters

Parameter name

Parameter description

Request type

necessary?

Data type

serviceId

This is the unique identifier of the service

path

TRUE

string

Sample request parameters

url: 
    /api/v1/automation/service/delete/asvnbL206pqzmZfr6a

Request body:
{
}

Response Result Parameters

Parameter name

Parameter description

Data type

code

Result response code, 200 means success

integer(32)

message

Response result description

String

success

Whether successful

boolean

data

String

Return result example

{
    "success": true,
    "code": 200,
    "message": "SUCCESS",
    "data": {}
}

2. Create an automation ActionType

2.1.1 Create an automation ActionType

Interface address /api/v1/automation/service/create

Request method POST

Interface request Content-Type application/json

Interface description

Creating a automation service

Request parameters

Parameter name

Parameter description

necessary?

Data type

serviceId

This is the unique identifier of the service, from create automation service

TRUE

string

actionTypeId

The unique identifier of the actionTypeId.

FALSE

string

name

The name of the actionType

TRUE

string

description

The description of the actionType

FALSE

string

inputJsonSchema

The JsonSchema description of the JSON string of the API request body

FALSE

string

outputJsonSchema

The JsonSchema description of the data property in the API response content.

FALSE

string

endpoint

If the API interface prepared in step one is: https://service.xxx.gcp.com/release/sendMessage, then the value here is sendMessage.

TRUE

string

i18n

multiple languages, the value can be: ‘{}‘

TRUE

string

Sample request parameters

{
  "serviceId": "asvnbL206pqzmZfr6a",
  "actionTypeId": "aatSSHdFkR7B719Iks",
  "name": "$robot_action_send_web_request_title",
  "description": "$robot_action_send_web_request_desc",
  "inputJsonSchema": "{\"schema\": {\"type\": \"object\", \"required\": [\"url\", \"method\"],\"properties\": {\"url\": {\"type\": \"string\",\"title\": \"$robot_action_send_web_request_config_2\"},\"method\": {\"enum\": [\"GET\",\"POST\",\"PATCH\",\"DELETE\"],\"type\": \"string\",\"title\": \"$robot_action_send_web_request_config_1\",\"default\": \"GET\",\"description\": \"$robot_action_send_web_request_config_1_desc\"}},\"additionalProperties\": false},\"uiSchema\": {\"ui:order\": [\"method\",\"url\"]}}",
  "outputJsonSchema": "{\"schema\": {\"type\": \"object\",\"required\": [\"status\"],\"properties\": {\"status\": {\"title\": \"状态码\",\"type\": \"number\"},\"json\": {\"title\": \"消息\",\"type\": \"object\"}},\"additionalProperties\": false},\"uiSchema\": {\"ui:order\": [\"status\",\"json\"]}}",
  "endpoint": "sendRequest",
  "i18n": "{\"en\": {\"$robot_action_send_web_request_desc\": \"When the robot starts working, it will automatically send a web request to a specific URL\",\"$robot_action_send_web_request_title\": \"Send web request\",\"$robot_action_send_web_request_config_1\": \"Request method\",\"$robot_action_send_web_request_config_2\": \"Request address\",\"$robot_action_send_web_request_config_1_desc\": \"Send web request via the GET, POST or other method\"},\"zh\": {\"$robot_action_send_web_request_desc\": \"机器人开始运行后,会自动向指定地址发送网络请求\",\"$robot_action_send_web_request_title\": \"发送网络请求\",\"$robot_action_send_web_request_config_1\": \"请求方法\",\"$robot_action_send_web_request_config_2\": \"请求地址\",\"$robot_action_send_web_request_config_1_desc\": \"通过 GET 或 POST 等方式向指定地址发送网络请求\"}}"
}

Response Result Parameters

Parameter name

Parameter description

Data type

code

Result response code, 200 means success

integer(32)

message

Response result description

String

success

Whether successful

boolean

shareId

The public share link ID of the node, a unique value

String

Return result example

{
    "success": true,
    "code": 200,
    "message": "SUCCESS",
    "data": "aatSSHdFkR7B719Iks"
}

1.1.2 Update automation ActionType

Interface address /api/v1/automation/actionType/edit/{actionTypeId}

Request method POST

Interface request Content-Type application/json

Interface description

Update automation service information

Request parameters

Parameter name

Parameter description

Request type

necessary?

Data type

actionTypeId

The unique identifier of the actionTypeId.

path

TRUE

string

name

The name of the service

body

TRUE

string

description

The description of the service

body

FALSE

string

endpoint

If the API interface prepared in step one is: https://service.xxx.gcp.com/release/sendMessage, then the value here is sendMessage.

body

FALSE

string

i18n

multiple languages, the value can be:’{}’

body

FALSE

string

Sample request parameters

url: 
     /api/v1/automation/actionType/edit/aatSSHdFkR7B719Iks


Request body:
 {
  "serviceId": "asvnbL206pqzmZfr6a",
  "actionTypeId": "aatSSHdFkR7B719Iks",
  "name": "$robot_action_send_web_request_title",
  "description": "$robot_action_send_web_request_desc",
  "inputJsonSchema": "{\"schema\": {\"type\": \"object\", \"required\": [\"url\", \"method\"],\"properties\": {\"url\": {\"type\": \"string\",\"title\": \"$robot_action_send_web_request_config_2\"},\"method\": {\"enum\": [\"GET\",\"POST\",\"PATCH\",\"DELETE\"],\"type\": \"string\",\"title\": \"$robot_action_send_web_request_config_1\",\"default\": \"GET\",\"description\": \"$robot_action_send_web_request_config_1_desc\"}},\"additionalProperties\": false},\"uiSchema\": {\"ui:order\": [\"method\",\"url\"]}}",
  "outputJsonSchema": "{\"schema\": {\"type\": \"object\",\"required\": [\"status\"],\"properties\": {\"status\": {\"title\": \"状态码\",\"type\": \"number\"},\"json\": {\"title\": \"消息\",\"type\": \"object\"}},\"additionalProperties\": false},\"uiSchema\": {\"ui:order\": [\"status\",\"json\"]}}",
  "endpoint": "sendRequest",
  "i18n": "{\"en\": {\"$robot_action_send_web_request_desc\": \"When the robot starts working, it will automatically send a web request to a specific URL\",\"$robot_action_send_web_request_title\": \"Send web request\",\"$robot_action_send_web_request_config_1\": \"Request method\",\"$robot_action_send_web_request_config_2\": \"Request address\",\"$robot_action_send_web_request_config_1_desc\": \"Send web request via the GET, POST or other method\"},\"zh\": {\"$robot_action_send_web_request_desc\": \"机器人开始运行后,会自动向指定地址发送网络请求\",\"$robot_action_send_web_request_title\": \"发送网络请求\",\"$robot_action_send_web_request_config_1\": \"请求方法\",\"$robot_action_send_web_request_config_2\": \"请求地址\",\"$robot_action_send_web_request_config_1_desc\": \"通过 GET 或 POST 等方式向指定地址发送网络请求\"}}"
}

Response Result Parameters

Parameter name

Parameter description

Data type

code

Result response code, 200 means success

integer(32)

message

Response result description

String

success

Whether successful

boolean

body

actionTypeId

String

Return result example

{
    "success": true,
    "code": 200,
    "message": "SUCCESS",
    "data": "aatSSHdFkR7B719Iks"
}

1.1.3 Delete automation ActionType

Interface address /api/v1/automation/actionType/delete/{actionTypeId}

Request method POST

Interface request Content-Type application/json

Interface description

Delete automation service information

Request parameters

Parameter name

Parameter description

Request type

necessary?

Data type

actionTypeId

This is the unique identifier of the service

path

TRUE

string

Sample request parameters

url: 
    /api/v1/automation/actionType/delete/{actionTypeId}

Request body:
{
}

Response Result Parameters

Parameter name

Parameter description

Data type

code

Result response code, 200 means success

integer(32)

message

Response result description

String

success

Whether successful

boolean

body

String

Return result example

{
    "success": true,
    "code": 200,
    "message": "SUCCESS",
    "data": {}
}