> For the complete documentation index, see [llms.txt](https://ifanr.gitbook.io/baas-js-sdk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ifanr.gitbook.io/baas-js-sdk/open-api/cloud-function.md).

# 云函数

## 触发云函数

`POST https://cloud.minapp.com/oserve/v1/cloud-function/job/`

> **info** 推荐使用[发起一个云函数请求](#发起一个云函数请求)触发云函数。

**参数说明**

Content-Type: `Content-Type: application/json`

| 参数             | 类型     | 必填 | 说明                                                                    |
| -------------- | ------ | -- | --------------------------------------------------------------------- |
| function\_name | String | 是  | 云函数名                                                                  |
| data           | Object | 否  | 传递给云函数的参数                                                             |
| sync           | Bool   | 否  | 是否等待返回函数执行结果，默认为 true。同步与异步云函数有不同的超时时间，同步云函数为 5 秒，而异步云函数为 5 分钟（300 秒） |

**返回参数说明**

在 sync 为 true 的情况下

| 参数    | 类型            | 描述                             |
| ----- | ------------- | ------------------------------ |
| code  | Number        | code 为 0 时表示成功执行云函数，否则为执行云函数失败 |
| data  | 由云函数返回的数据类型决定 | 函数通过 callback 返回的数据            |
| error | Object        | 返回的错误信息，成功则返回空对象               |

## 测试云函数

**接口地址**

`POST https://cloud.minapp.com/oserve/v1.3/cloud-function/:cloud_function_name/debug/`

其中 `:cloud_function_name` 是云函数的名字。

**参数说明**

Content-Type: `Content-Type: application/json`

| 参数         | 类型      | 必填 | 说明                                                                                                                 |
| ---------- | ------- | -- | ------------------------------------------------------------------------------------------------------------------ |
| data       | Object  | 是  | 自定义数据，没有则需要提供一个空对象                                                                                                 |
| subject    | String  | 否  | 触发类型，若不提供默认为 sdk, 可选值有：sdk, open\_api, cloud\_function, flex\_schema, wechat\_pay\_success, timer, file\_operation |
| schema\_id | Integer | 否  | 表 ID，如果 subject 为 FlexSchema 则必填                                                                                   |

**返回参数**

| 参数              | 类型            | 说明                                        |
| --------------- | ------------- | ----------------------------------------- |
| billing\_time   | Integer       | 计费时间                                      |
| code            | Integer       | 函数调用正常：0，函数调用出错：1                         |
| data            | 由云函数返回的数据类型决定 | 函数通过 callback 返回的数据                       |
| error           | Object        | 包含三个键，错误信息：message, 错误堆栈：stack, 错误类型：type |
| execution\_time | Float         | 执行时间，毫秒                                   |
| job\_id         | String        | 任务 ID                                     |
| log             | String        | 日志                                        |
| mem\_usage      | Integer       | 内存使用量，字节数                                 |

**代码示例**&#x20;

```
curl -X POST \
  https://cloud.minapp.com/oserve/v1.3/cloud-function/test/debug/ \
  -H "Authorization: Bearer cfb5912724dd7ff0b0c17683cc3074bb548bc7f4" \
  -H 'Content-Type: application/json' \
  -d '{
        "data": {}
      }'
```

```js
var request = require("request");

var cloudFunctionName = '';
var options = {
  method: 'POST',
  url: 'https://cloud.minapp.com/oserve/v1.3/cloud-function/' + cloudFunctionName + '/debug/',
  headers:
  {
    'Content-Type': 'application/json',
    Authorization: 'Bearer 2323d124881bd3d63c9bb7845454f80a676b'
  },
  body: { data: {} },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);
  console.log(body);
});
```

```php
<?php
$token = '';
$cloud_function_name = ''; // 云函数的名字
$url = "https://cloud.minapp.com/oserve/v1.3/cloud-function/{$cloud_function_name}/debug/";

$ch = curl_init();
$header = array(
  "Authorization: Bearer {$token}",
  'Content-Type: application/json; charset=utf-8'
);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"data\": {}}");

$response = curl_exec($ch);
$err = curl_error($ch);

curl_close($ch);

if ($err) {
  echo "CURL Error #:" . $err;
} else {
  echo $response;
}
```

**返回示例**

正常返回：

```javascript
{
    "billing_time": 100,
    "code": 0,
    "data": "hello world",
    "error": {},
    "execution_time": 13.46,
    "job_id": "490f08ff9b2e4a6b874581de53950e54",
    "log": "2018-09-21T03:46:26.026Z LOG event.data:  {}\n2018-09-21T03:46:26.029Z LOG return:  hello world\n",
    "mem_usage": 78340096
}
```

异常返回：

```
{
    "billing_time": 100,
    "code": 1,
    "data": null,
    "error": {
        "message": "Unexpected identifier",
        "stack": ":2\n  callback(null, \"hello world\")  fot debug\n                                 ^^^\n\nSyntaxError: Unexpected identifier\n    at createScript (vm.js:80:10)\n    at Object.runInThisContext (vm.js:139:10)\n    at Module._compile (module.js:607:28)\n    at loadUserFunction (/opt/hydrogen/worker.js:37:11)\n    at IncomingMessage.request.on.on (/opt/hydrogen/worker.js:82:18)\n    at emitNone (events.js:106:13)\n    at IncomingMessage.emit (events.js:208:7)\n    at endReadableNT (_stream_readable.js:1055:12)\n    at _combinedTickCallback (internal/process/next_tick.js:138:11)\n    at process._tickCallback (internal/process/next_tick.js:180:9)",
        "type": "SyntaxError"
    },
    "execution_time": 18.46,
    "job_id": "9f9fe6f08be94888b8b56e981a5a041e",
    "log": "2018-09-21T07:49:54.792Z LOG event.data:  {}\n2018-09-21T07:49:54.799Z ERROR :2\n  callback(null, \"hello world\")  fot debug\n                                 ^^^\n\nSyntaxError: Unexpected identifier\n    at createScript (vm.js:80:10)\n    at Object.runInThisContext (vm.js:139:10)\n    at Module._compile (module.js:607:28)\n    at loadUserFunction (/opt/hydrogen/worker.js:37:11)\n    at IncomingMessage.request.on.on (/opt/hydrogen/worker.js:82:18)\n    at emitNone (events.js:106:13)\n    at IncomingMessage.emit (events.js:208:7)\n    at endReadableNT (_stream_readable.js:1055:12)\n    at _combinedTickCallback (internal/process/next_tick.js:138:11)\n    at process._tickCallback (internal/process/next_tick.js:180:9)\n",
    "mem_usage": 78528512
}
```

**状态码说明**

`200`: 成功。

`400`: 参数校验失败，任务调度失败。

`401`: 未授权，请检查请求头中的 Authorization 字段是否正确。

## 获取某云函数的任务记录

**接口地址**

`GET https://cloud.minapp.com/oserve/v1.3/cloud-function/:cloud-function-name/job/`

其中 `:cloud-function-name` 是云函数的名字。

**参数说明**

| 参数                 | 类型      | 必填 | 说明                                                                                                                      |
| ------------------ | ------- | -- | ----------------------------------------------------------------------------------------------------------------------- |
| source             | String  | 否  | 云函数任务来源，可选值：sdk, open\_api, cloud\_function, flex\_schema, wechat\_pay\_success, timer, file\_operation                 |
| status             | String  | 否  | 云函数任务状态，可选值：waiting, executing, fulfilled, schedule\_failed, execution\_rejected, deadline\_exceeded, execution\_failed |
| service\_type      | String  | 否  | 云函数同步类型，可选值：time\_sensitive, batch                                                                                      |
| created\_at\_\_gte | Integer | 否  | 创建时间大于，unix 时间戳                                                                                                         |
| created\_at\_\_lte | Integer | 否  | 创建时间小于，unix 时间戳                                                                                                         |

**返回参数**

| 参数             | 类型      | 说明                          |
| -------------- | ------- | --------------------------- |
| id             | Integer | 任务 ID                       |
| created\_at    | Float   | 创建时间                        |
| finished\_at   | Float   | 完成时间                        |
| mem\_usage     | Integer | 内存用量                        |
| service\_type  | String  | 可能的值：time\_sensitive, batch |
| source         | String  | 任务来源                        |
| status         | String  | 任务状态                        |
| user\_log\_url | String  | 日志地址                        |

**代码示例**

```
curl -X GET \
  https://cloud.minapp.com/oserve/v1.3/cloud-function/test/job/ \
  -H 'Authorization: Bearer 2323d124881bd3d63c9bb78458252454f676b'
```

```js
var request = require("request");

var cloudFunctionName = '';
var options = {
  method: 'GET',
  url: 'https://cloud.minapp.com/oserve/v1.3/cloud-function/' + cloudFunctionName + '/job/',
  headers:
  {
    'Content-Type': 'application/json',
    Authorization: 'Bearer 2323d124881bd3d63c9bb78458252454f80ab'
  },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);
  console.log(body);
});
```

```php
<?php
$token = '';
$cloud_function_name = ''; // 云函数的名字
$url = "https://cloud.minapp.com/oserve/v1.3/cloud-function/{$cloud_function_name}/job/";

$ch = curl_init();
$header = array(
  "Authorization: Bearer {$token}",
  'Content-Type: application/json; charset=utf-8'
);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

$response = curl_exec($ch);
$err = curl_error($ch);

curl_close($ch);

if ($err) {
  echo "CURL Error #:" . $err;
} else {
  echo $response;
}
```

**返回示例**

```javascript
{
    "meta": {
        "limit": 20,
        "next": "/oserve/v1.3/cloud-function/test/job/?limit=20&offset=20",
        "offset": 0,
        "previous": null,
        "total_count": 1525
    },
    "objects": [
        {
            "created_at": 1537505171.419368,
            "finished_at": 1537505171.605735,
            "id": 779734,
            "mem_usage": 78336000,
            "service_type": "batch",
            "source": "flex_schema",
            "started_at": 1537505171.5807,
            "status": "fulfilled",
            "user_log_url": "https://hydrogen-faas-logs.s3.cn-north-1.amazonaws.com.cn/ticket_778289.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=86400&X-Amz-Security-Token=FQoDYXdzEP3%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDM50xRDK8JETeulNLiK%2FA08zFCZM8zvsnb6VG81mDV0onfgVwXhAjUi6p3Y250g9GiVeWVs%2FpI6S9d0S6mD9xPjmkWw9ven%2BkRVME2xAbzfgio8%2BUbQkrOgvnFx%2BziHj0DGGvMEZYnoT6ui4QD8y8YQaJd7oWH%2B0hdIUGdE%2BFTSiZzSicuVgdr6WLkxipnuujV2yS9%2ByrXK4A0g1HaUifZVnD3K2Bz1AiHrr9abaFSFoWzyzhGYGcyp7TM4iodW%2FTI5CkPFj2f%2BNvCOSCBWWWOsY%2FUyaAdCFZFqXJoJ6uuXFZ5yl7xd5W28egT5Jgfeq%2FG5j9xp9OVu8sAlnPre8WoSpspHt8R%2BRMDPr6klJE3yxXIxRODlt4nHAA30wcwunO09x8zoK54pgrveIWNlIRYeSSMG%2FGAzYXNq%2FxXjcpQOa3ekyirC%2Bj0n45dBZY4oS8c3au32WjoLjD2gnPAZsvBg1gR2wcUxs3PFi30ochY9VAxXQyXeqcy1Jw0LXQnBLT6Uw9pVV8%2BikrK13EBUiIAow1FEeKJ3xjng7mrPz60pEDYZcymJ0Uj4VkNBXMQwPHBfsfChxsLWYXaQ3EitWD3GhBaim65Tz%2FoZHU6TPRijP5ZHdBQ%3D%3D&X-Amz-Date=20180921T044620Z&X-Amz-Signature=f5d74870d8b52cbb490fae4d81fc486b09da1e026bf9571c172b4d8d29c84a66&X-Amz-Credential=ASIAQUWH6XTCOEBVBVFG%2F20180921%2Fcn-north-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host"
        },
        ...
    ]
}
```

**状态码说明**

`200`: 成功。

`400`: 参数错误。

`401`: 未授权，请检查请求头中的 Authorization 字段是否正确。

## 发起一个云函数请求

**接口地址**

`POST https://cloud.minapp.com/oserve/v1.3/cloud-function/:cloud-function-name/job/`

其中 `:cloud-function-name` 是云函数的名字。

**请求参数说明**

Content-Type: `Content-Type: application/json`

| 参数   | 类型     | 必填 | 说明                                                                    |
| ---- | ------ | -- | --------------------------------------------------------------------- |
| data | Object | 是  | 传递给云函数的参数，如果没有需要提供一个空对象                                               |
| sync | Bool   | 否  | 是否等待返回函数执行结果，默认为 true。同步与异步云函数有不同的超时时间，同步云函数为 5 秒，而异步云函数为 5 分钟（300 秒） |

**返回参数说明**

sync 为 true 时：

| 参数    | 类型            | 说明                             |
| ----- | ------------- | ------------------------------ |
| code  | Number        | code 为 0 时表示成功执行云函数，否则为执行云函数失败 |
| data  | 由云函数返回的数据类型决定 | 函数通过 callback 返回的数据            |
| error | Object        | 返回的错误信息，成功则返回空对象               |

sync 为 false 时：

| 参数     | 类型     | 说明       |
| ------ | ------ | -------- |
| status | String | 默认为 'ok' |

**代码示例**

```
curl -X POST \
  https://cloud.minapp.com/oserve/v1.3/cloud-function/test/job/ \
  -H 'Authorization: Bearer 2323d124881bd3d63c9bb78458252454f676b' \
  -H "Content-Type: application/json" \
  -d '{
        "data": {}
      }'
```

```js
var request = require("request");

var cloudFunctionName = 'come_from_hahah';
var options = {
  method: 'POST',
  url: 'https://cloud.minapp.com/oserve/v1.3/cloud-function/' + cloudFunctionName + '/job/',
  headers:
  {
    'Content-Type': 'application/json',
    Authorization: 'Bearer 2323d124881bd3d63c9bb78458252454f80a676b'
  },
  body:
    { data: {} },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);
  console.log(body);
});
```

```php
<?php
$token = '';
$cloud_function_name = ''; // 云函数的名字
$url = "https://cloud.minapp.com/oserve/v1.3/cloud-function/{$cloud_function_name}/job/";

$ch = curl_init();
$header = array(
  "Authorization: Bearer {$token}",
  'Content-Type: application/json; charset=utf-8'
);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"data\": {}}");

$response = curl_exec($ch);
$err = curl_error($ch);

curl_close($ch);

if ($err) {
  echo "CURL Error #:" . $err;
} else {
  echo $response;
}
```

**返回示例**

sync 为 true:

```javascript
{
    "code": 1,
    "data": null,
    "error": {
        "message": "Unexpected identifier",
        "type": "SyntaxError"
    }
}
```

sync 为 false:

```javascript
{
    "status": "ok"
}
```

**状态码说明**

`200`: 成功。

`401`: 未授权，请检查请求头中的 Authorization 字段是否正确。

`404`: 没有找到对应的云函数。

## 新建云函数

**接口地址**

`POST https://cloud.minapp.com/oserve/v1.3/cloud-function/`

**请求参数说明**

| 参数             | 类型     | 必填 | 说明            |
| -------------- | ------ | -- | ------------- |
| name           | String | 是  | 云函数名，不能为空字符串  |
| function\_code | String | 是  | 云函数代码，不能为空字符串 |
| remark         | String | 否  | 备注            |

**返回参数说明**

| 参数             | 类型      | 说明                                |
| -------------- | ------- | --------------------------------- |
| audit\_status  | String  | 可能的值： approved, rejected, waiting |
| created\_by    | String  | 创建者昵称                             |
| function\_code | String  | 云函数代码                             |
| id             | Integer | 云函数 ID                            |
| name           | String  | 云函数名                              |
| plan\_circle   | String  | 套餐类型                              |
| remark         | String  | 备注                                |
| updated\_at    | Integer | 最近一次更新时间                          |
| updated\_by    | String  | 更新者昵称                             |

**代码示例**

```
curl -X POST \
  https://cloud.minapp.com/oserve/v1.3/cloud-function/ \
  -H 'Authorization: Bearer 2323d124881bd3d63c9bb78458252454f676b' \
  -H "Content-Type: application/json" \
  -d '{
  "function_code": "exports.main = function functionName(event, callback) {\n  callback(null, \"hello world\")\n}",
  "remark": "你好，云函数"
}'
```

```js
var request = require("request");

var options = {
  method: 'POST',
  url: 'https://cloud.minapp.com/oserve/v1.3/cloud-function/',
  headers:
  {
    'Content-Type': 'application/json',
    Authorization: 'Bearer 2323d124881bd3d63c9bb78458252454f80a676b'
  },
  body:
  {
    function_code: 'exports.main = function functionName(event, callback) {\n  callback(null, "hello world")\n}',
    remark: '你好，云函数'
  },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);
  console.log(body);
});
```

```php
<?php
$token = '';
$url = "https://cloud.minapp.com/oserve/v1.3/cloud-function/";

$ch = curl_init();
$header = array(
  "Authorization: Bearer {$token}",
  'Content-Type: application/json; charset=utf-8'
);

$payload = json_encode(
  array(
    'function_code'=> "exports.main = function functionName(event, callback) {\n  callback(null, \"hello world\")\n}",
    'remark'=> '你好，云函数'
  )
);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

$response = curl_exec($ch);
$err = curl_error($ch);

curl_close($ch);

if ($err) {
  echo "CURL Error #:" . $err;
} else {
  echo $response;
}
```

**返回示例**

```javascript
{
    "audit_status": "approved",
    "created_at": 1537704381,
    "created_by": "",
    "function_code": "exports.main = function functionName(event, callback) {\n  callback(null, \"hello world\")\n}",
    "id": 1105,
    "name": "come_from_open_api",
    "plan_circle": "P_FREE",
    "remark": "你好，云函数",
    "updated_at": 1537704381,
    "updated_by": ""
}
```

**状态码说明**

`201`: 创建成功。

`400`: 参数不合法：云函数名或代码为字段为空。

`401`: 未授权，请检查请求头中的 Authorization 字段是否正确。

## 获取当前小程序的所有云函数

**接口地址**

`GET https://cloud.minapp.com/oserve/v1.3/cloud-function/`

**返回参数说明**

| 参数             | 类型      | 说明                                |
| -------------- | ------- | --------------------------------- |
| audit\_status  | String  | 可能的值： approved, rejected, waiting |
| created\_by    | String  | 创建者昵称                             |
| function\_code | String  | 云函数代码                             |
| id             | Integer | 云函数 ID                            |
| name           | String  | 云函数名                              |
| plan\_circle   | String  | 套餐类型                              |
| remark         | String  | 备注                                |
| updated\_at    | Integer | 最近一次更新时间                          |
| updated\_by    | String  | 更新者昵称                             |

**代码示例**

```
curl -X GET \
  https://cloud.minapp.com/oserve/v1.3/cloud-function/ \
  -H 'Authorization: Bearer 2323d124881bd3d63c9bb78458252454f676b'
```

```javascript
var request = require("request");

var options = {
  method: 'GET',
  url: 'https://cloud.minapp.com/oserve/v1.3/cloud-function/',
  headers:
  {
    Authorization: 'Bearer 2323d124881bd3d6bb78458252454f80a676b'
  },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);
  console.log(body);
});
```

```php
<?php
$token = '';
$url = "https://cloud.minapp.com/oserve/v1.3/cloud-function/";

$ch = curl_init();
$header = array(
  "Authorization: Bearer {$token}",
  'Content-Type: application/json; charset=utf-8'
);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

$response = curl_exec($ch);
$err = curl_error($ch);

curl_close($ch);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
```

**返回示例**

```javascript
{
    "meta": {
        "limit": 20,
        "next": null,
        "offset": 0,
        "previous": null,
        "total_count": 2
    },
    "objects": [
        {
            "audit_status": "approved",
            "created_at": 1537924886,
            "created_by": "somebody",
            "function_code": "exports.main = function functionName(event, callback) {\n  callback(null, \"hello world\")\n}",
            "id": 1121,
            "name": "come_from_open_API_v1.3",
            "plan_circle": "P_FREE",
            "remark": "你好，云函数",
            "updated_at": 1537924886,
            "updated_by": ""
        },
        {
            "audit_status": "approved",
            "created_at": 1537704269,
            "created_by": "somebody",
            "function_code": "exports.main = function functionName(event, callback) {\n  callback(null, \"hello world\")\n}",
            "id": 1102,
            "name": "测试",
            "plan_circle": "P_FREE",
            "remark": "你好，云函数",
            "updated_at": 1537704426,
            "updated_by": "somebody"
        },
    ]
}
```

**状态码说明**

`200`: 成功。

`401`: 未授权，请检查请求头中的 Authorization 字段是否正确。

`401`: 参数不合法：云函数名或代码为字段为空

## 获取云函数详细信息

**接口地址**

`GET https://cloud.minapp.com/oserve/v1.3/cloud-function/:cloud-function-name/`

其中 `:cloud-function-name` 为云函数的名字。

**返回参数说明**

| 参数             | 类型      | 说明                                |
| -------------- | ------- | --------------------------------- |
| audit\_status  | String  | 可能的值： approved, rejected, waiting |
| created\_by    | String  | 创建者昵称                             |
| function\_code | String  | 云函数代码                             |
| id             | Integer | 云函数 ID                            |
| name           | String  | 云函数名                              |
| plan\_circle   | String  | 套餐类型                              |
| remark         | String  | 备注                                |
| updated\_at    | Integer | 最近一次更新时间                          |
| updated\_by    | String  | 更新者昵称                             |

**代码示例**

```
curl -X GET \
  https://cloud.minapp.com/oserve/v1.3/cloud-function/test/ \
  -H 'Authorization: Bearer 2323d124881bd3d63c9bb78458252454f676b'
```

```javascript
var request = require("request");

var cloudFunctionName = '';
var options = {
  method: 'GET',
  url: 'https://cloud.minapp.com/oserve/v1.3/cloud-function/' + cloudFunctionName + '/',
  headers:
  {
    Authorization: 'Bearer 2323d124881bd3d63c9bb78458252454f80a676b'
  },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);
  console.log(body);
});
```

```php
<?php
$token = '';
$cloud_function_name = '';
$url = "https://cloud.minapp.com/oserve/v1.3/cloud-function/{$cloud_function_name}/";

$ch = curl_init();
$header = array(
  "Authorization: Bearer {$token}",
  'Content-Type: application/json; charset=utf-8'
);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

$response = curl_exec($ch);
$err = curl_error($ch);

curl_close($ch);

if ($err) {
  echo "CURL Error #:" . $err;
} else {
  echo $response;
}
```

**返回示例**

```javascript
{
    "audit_status": "approved",
    "created_at": 1535903214,
    "created_by": "somebody",
    "function_code": "exports.main = function functionName(event, callback) {\n  callback(null, \"hello world\")  fot debug\n}",
    "id": 847,
    "name": "test",
    "plan_circle": "P_FREE",
    "remark": "",
    "updated_at": 1537516164,
    "updated_by": "somebody"
}
```

**状态码说明**

`200`: 成功。

`401`: 未授权，请检查请求头中的 Authorization 字段是否正确。

`404`: 云函数不存在。

## 修改云函数

**接口地址**

`PATCH https://cloud.minapp.com/oserve/v1.3/cloud-function/:cloud-function-name/`

其中 `:cloud-function-name` 为云函数名字。

**请求参数说明**

| 参数             | 类型     | 必填 | 说明                                                   |
| -------------- | ------ | -- | ---------------------------------------------------- |
| name           | String | 否  | 云函数名，不能为空字符串                                         |
| function\_code | String | 否  | 云函数代码，不能为空字符串                                        |
| plan\_circle   | String | 否  | 套餐类型，可能的值：P\_FREE（128 MB 内存）, P\_PERSONAL（256 MB 内存） |
| remark         | String | 否  | 备注                                                   |

**返回参数说明**

| 参数             | 类型      | 说明                                                   |
| -------------- | ------- | ---------------------------------------------------- |
| audit\_status  | String  | 可能的值： approved, rejected, waiting                    |
| created\_by    | String  | 创建者昵称                                                |
| function\_code | String  | 云函数代码                                                |
| id             | Integer | 云函数 ID                                               |
| name           | String  | 云函数名                                                 |
| plan\_circle   | String  | 套餐类型，可能的值：P\_FREE（128 MB 内存）, P\_PERSONAL（256 MB 内存） |
| remark         | String  | 备注                                                   |
| updated\_at    | Integer | 最近一次更新时间                                             |
| updated\_by    | String  | 更新者昵称                                                |

**代码示例**

```
curl -X PATCH \
  https://cloud.minapp.com/oserve/v1.3/cloud-function/test/ \
  -H 'Authorization: Bearer 2323d124881bd3d63c9bb78458252454f676b' \
  -H "Content-Type: application/json" \
  -d '{
  "function_code": "exports.main = function functionName(event, callback) {\n  callback(null, \"hello world\")\n}",
  "remark": "你好，云函数"
}'
```

```javascript
var request = require("request");

var cloudFunctionName = '';
var options = {
  method: 'PATCH',
  url: 'https://cloud.minapp.com/oserve/v1.3/cloud-function/' + cloudFunctionName + '/',
  headers:
  {
    'Content-Type': 'application/json',
    Authorization: 'Bearer 2323d124881bd3d63c9bb784582554f80a676b'
  },
  body:
  {
    remark: '你好，云函数',
  },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);
  console.log(body);
});
```

```php
<?php
$token = '';
$cloud_function_name = '';
$url = "https://cloud.minapp.com/oserve/v1.3/cloud-function/{$cloud_function_name}/";

$ch = curl_init();
$header = array(
  "Authorization: Bearer {$token}",
  'Content-Type: application/json; charset=utf-8'
);

$payload = json_encode(
  array(
    'function_code'=> "exports.main = function functionName(event, callback) {\n  callback(null, \"hello world\")\n}",
    'remark'=> '你好，云函数'
  )
);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

$response = curl_exec($ch);
$err = curl_error($ch);

curl_close($ch);

if ($err) {
  echo "CURL Error #:" . $err;
} else {
  echo $response;
}
```

**返回示例**

```
{
    "audit_status": "approved",
    "created_at": 1535903214,
    "created_by": "somebody",
    "function_code": "exports.main = function functionName(event, callback) {\n  callback(null, \"hello world\")\n}",
    "id": 847,
    "name": "modify_from_open_api",
    "plan_circle": "P_FREE",
    "remark": "",
    "updated_at": 1537710962,
    "updated_by": "somebody"
}
```

**状态码说明**

`202`: 修改成功。

`400`: 参数不合法：云函数名或代码为空。

`401`: 未授权，请检查请求头中的 Authorization 字段是否正确。

`401`: 参数不合法：云函数名或代码为空

## 删除一个云函数

**接口地址**

`DELETE https://cloud.minapp.com/oserve/v1.3/cloud-function/:cloud-function-name/`

其中 `:cloud-function-name` 是云函数的名字。

**代码示例**

```
curl -X DELETE \
  https://cloud.minapp.com/oserve/v1.3/cloud-function/test/ \
  -H 'Authorization: Bearer 2323d124881bd3d63c9bb78458252454f676b'
```

```js
var request = require("request");

var cloudFunctionName = '';
var options = {
  method: 'DELETE',
  url: 'https://cloud.minapp.com/oserve/v1.3/cloud-function/' + cloudFunctionName + '/',
  headers:
  {
    Authorization: 'Bearer 2323d124881bd3d63c9bb784582524540a676b'
  },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);
  console.log(response.statusCode);
});
```

```php
<?php
$token = '';
$cloud_function_name = ''; // 云函数的名字
$url = "https://cloud.minapp.com/oserve/v1.3/cloud-function/{$cloud_function_name}/";

$ch = curl_init();
$header = array(
  "Authorization: Bearer {$token}",
  'Content-Type: application/json; charset=utf-8'
);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

$response = curl_exec($ch);

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$err = curl_error($ch);

curl_close($ch);

if ($err) {
  echo "CURL Error #:" . $err;
} else {
  echo $httpCode;
}
```

**返回示例**

返回体为空。

**状态码说明**

`204`: 删除成功。

`401`: 未授权，请检查请求头中的 Authorization 字段是否正确。

`404`: 没有找到对应的云函数。
