Updated on 2024-04-22 GMT+08:00

Creating a People Flow Counting (Edge) Task

Function

This API is used to create a people flow counting (edge) task.

URI

POST /v2/{project_id}/services/c-flowcount-edge/tasks

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID. For details about how to obtain the project ID and name, see Obtaining the Project ID and Name.

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

User token. For details about how to obtain a user token, see Authentication.

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

name

Yes

String

Job name. It can contain up to 100 characters and can include uppercase and lowercase letters, digits, hyphens (-), and underscores (_).

description

No

String

Job description. It can contain up to 500 characters.

Minimum: 0

Maximum: 500

schedule

No

TaskSchedule object

Task schedule. Only the weekly mode is supported.

input

Yes

TaskInput object

Input configuration of a job

output

Yes

TaskOutput object

Output configuration of a job. At least one output mode must be configured.

config

No

FlowCountServiceConfig object

Job configuration parameters.

service_version

Yes

String

Service version. The value must match the regular expression ^[a-z0-9.]{3,32}$.

Minimum: 3

Maximum: 32

is_saved_as_template

No

Boolean

Whether to save the job configuration as a template.

resource_order_id

No

String

Resource order ID, which corresponds to the associated algorithm. This parameter is only mandatory for commercial algorithms and must match the regular expression ^[a-z0-9-_]{4,36}$.

Minimum: 4

Maximum: 36

Table 4 TaskSchedule

Parameter

Mandatory

Type

Description

type

Yes

String

Type of a scheduled task. This parameter is mandatory for scheduled tasks. The options are weekly and monthly.

timezone

Yes

String

Time zone where a user is located. This parameter is mandatory for scheduled jobs. The value is accurate to the minute.

days_of_week

No

Array of integers

Days in a week when a task is executed. This parameter is mandatory only for weekly tasks. The values 1 to 7 indicate Monday to Sunday respectively.

Minimum: 1

Maximum: 7

Array Length: 1 - 7

days_of_month

No

Array of integers

Days in a month when a task is executed. This parameter is mandatory only for monthly tasks. The values 1 to 31 indicate the first day to the 31st day of a month.

Minimum: 1

Maximum: 31

periods

No

Array<Array<>>

Time segment configuration. Select at least one time segment for executing a weekly or monthly job.

Table 5 TaskInput

Parameter

Mandatory

Type

Description

type

Yes

String

Task input type, which is mandatory when you create a task. The video_source type cannot be changed to other types. The following types are supported: obs (files stored in OBS, supported only by cloud tasks), url (specified file URL or stream request URL, supported only by cloud tasks), edgecamera (edge camera bound to IEF, supported only by edge tasks), restful (stream request URL obtained from a user-specified streaming server through a RESTful API, supported by both cloud and edge tasks), vcn (VCN device, supported only by edge tasks), and video_source (video sources managed in VIAS, supported by both cloud and edge tasks). You are advised to use the video_source type. Other types will be discontinued in the future. Options:

  • video_source

  • obs (not recommended and will be discontinued)

  • url (not recommended and will be discontinued)

  • edgecamera (not recommended and will be discontinued)

  • restful (not recommended and will be discontinued)

  • vcn (not recommended and will be discontinued)

data

Yes

Array of TaskInputData objects

Input details of a task, which is mandatory. The configuration varies according to the input type. Multiple inputs are allowed during creation, but only one input is allowed for update.

  • If the input type is obs, you must configure bucket, path, and index. Example: bucket: aicam, path: 3rdpartylicenses.txt, index: 0

  • If the input type is url, you must configure url and index. Example: url: https://xxx-xxx.com, index: 0

  • If the input type is restful, you must configure certificate_check, rtsp_path_in_response, url, index, and headers. Example: certificate_check: true, url: https://hsaij-dasahbi.com, rtsp_path_in_response: data/url, index: 0, headers: { AAA: AAA }

  • If the input type is vcn, you must configure device_id, stream_type, and index. Example: device_id: 21356478954612546874#gdhjkiushdgdksjhslmhscjsckjhdbnk, stream_type: 1, index: 0

  • If the input type is EdgeCamera, you must configure id and index. Example: id: 007cdafc-6000-47ce-b0e3-870b4a0db65e, index: 0.

Array Length: 1 - 50

vcn

No

TaskInputVcn object

VCN server information. This parameter is mandatory only when the input type is vcn.

Table 6 TaskInputData

Parameter

Mandatory

Type

Description

video_source_id

No

String

Video source ID. This parameter is mandatory when the input type is video_source.

stream_name

No

String

Name of a video stream.

bucket

No

String

OBS bucket name. This parameter is mandatory when the input type is obs.

Maximum: 63

path

No

String

OBS path. This parameter is mandatory when the input type is obs.

Maximum: 1023

url

No

String

File URL or RESTful request URL for obtaining a video stream. This parameter is mandatory when the input type is url or edgerestful. The value contains a maximum of 1000 characters.

Maximum: 1000

headers

No

Object

Headers carried in the RESTful request for obtaining a video stream. This parameter is optional when the input type is edgerestful. The value is key-value pairs in JSON format. A maximum of 10 key-value pairs are allowed.

certificate_check

No

Boolean

Whether to verify the certificate of the HTTPS request. This parameter is mandatory when the input type is edgerestful. The value can be true or false.

rtsp_path_in_response

No

String

Video stream address in the response body for the RESTful request. This parameter is mandatory when the input type is edgerestful. The value contains a maximum of 1024 characters.

Maximum: 1024

device_id

No

String

VCN ID. This parameter is mandatory when the input type is vcn.

stream_type

No

Integer

Stream type used for analysis. This parameter is optional when the input type is vcn. The value ranges from 1 to 3. The value 1 indicates primary stream, the value 2 indicates secondary stream 1, and the value 3 indicates secondary stream 2.

Minimum: 1

Maximum: 3

id

No

String

ID of the edge device mounted to IEF. This parameter is mandatory when the input type is edgecamera.

Maximum: 63

Table 7 TaskInputVcn

Parameter

Mandatory

Type

Description

ip

Yes

String

IP address of the VCN server. This parameter is mandatory only when the input type is vcn.

port

Yes

Integer

Port number of the VCN server. This parameter is mandatory only when the input type is vcn.

Minimum: 0

Maximum: 65535

username

Yes

String

Account name of a VCN server. This parameter is mandatory only when the input type is vcn. The value must match the regular expression ^.{1,100}$.

password

Yes

String

Password of a VCN server account. This parameter is mandatory only when the input type is vcn. The value must match the regular expression ^.{1,1000}$.

Table 8 TaskOutput

Parameter

Mandatory

Type

Description

obs

No

TaskOutputObs object

Configuration information when the output type is obs.

dis

No

TaskOutputDis object

Configuration information when the output type is dis.

webhook

No

TaskOutputWebhook object

Configuration information when the output type is webhook.

event_center

No

Boolean

Whether to send alarms to the event center. This parameter is valid for cloud jobs.

Default: false

Table 9 TaskOutputObs

Parameter

Mandatory

Type

Description

bucket

Yes

String

OBS bucket name. This parameter is mandatory when the OBS output type is used. The verification rule is (pattern: " ^[a-z0-9](?!.[-.][-.].)([a-z0-9-.]{1,61})[a-z0-9]$ ").

Maximum: 63

path

Yes

String

OBS path. This parameter is mandatory when the OBS output type is used. The verification rule is ^(?![/.\s])(?!.//.)([^:*?"<>|]{0,1023})(?<![.\s])$.

Maximum: 1023

data_category

No

Array of strings

List of job output types. This parameter is optional and is required only for some services. The output contains data in the dataCategory list.

Array Length: 0 - 10

Table 10 TaskOutputDis

Parameter

Mandatory

Type

Description

stream_name

Yes

String

DIS stream name. This parameter is mandatory when the dis type is used.

Maximum: 64

data_category

No

Array of strings

List of job output types. This parameter is optional and is required only for some services. The output contains data in the dataCategory list.

Array Length: 0 - 10

Table 11 TaskOutputWebhook

Parameter

Mandatory

Type

Description

url

Yes

String

Result callback address. This parameter is mandatory when the output type is webhook.

Maximum: 1000

headers

Yes

Object

Headers carried in result callback. This parameter is mandatory when the output type is webhook. The value is key-value pairs in JSON format. A maximum of 10 key-value pairs are allowed, and a minimum of 1 key-value pair is allowed.

data_category

No

Array of strings

List of job output types. This parameter is optional and is required only for some services. The output contains data in the dataCategory list.

Array Length: 0 - 10

Table 12 FlowCountServiceConfig

Parameter

Mandatory

Type

Description

common

No

FlowCountCommon object

Job runtime configuration items customized by the service publisher. The value must be in JSON format. For details about the configuration items, see the description of the corresponding algorithm service.

Table 13 FlowCountCommon

Parameter

Mandatory

Type

Description

line_count_interval

No

Integer

Interval for collecting the number of people per second who cross a particular straight line in a video. The value ranges from 1 to 86400 and the default value is 2.

Minimum: 1

Maximum: 86400

Default: 2

region_count_interval

No

Integer

Interval for collecting the number of people per second who cross through a particular area. The value ranges from 1 to 86400 and the default value is 2.

Minimum: 1

Maximum: 86400

Default: 2

line_detection_sw

No

Integer

Whether to collect the number of people who cross a particular straight line in a video. 0: disabled. 1: enabled. The default value is 1.

Minimum: 0

Maximum: 1

Default: 1

region_detection_sw

No

Integer

Whether to collect the number of people who cross through a particular area. 0: disabled. 1: enabled. The default value is 1.

Minimum: 0

Maximum: 1

Default: 1

heatmap_detection_sw

No

Integer

Whether to enable heatmap detection. 0: disabled. 1: enabled. The default value is 0.

Minimum: 0

Maximum: 1

Default: 0

heatmap_detection_interval

No

Integer

Heatmap detection period, in seconds. The value ranges from 10 to 86400 and the default value is 10.

Minimum: 10

Maximum: 86400

Default: 10

heatmap_point_interval

No

Integer

Hotspot update period, in frames. In a heatmap detection period, hotspot values gradually accumulate. The value ranges from 1 to 10000 and the default value is 4.

Minimum: 1

Maximum: 10000

Default: 4

target_roi

No

String

Corresponds to the Target ROI parameter on the console.

  • This parameter specifies the detection area. The value of this parameter is a JSON string. An escape character must be added in an API call. For details about the JSON format, see Setting target_roi.

  • Example: {"lines":[{"data":[[560,680],[1185,506]],"properties":{"side1_name":"Side1","side2_name":"Side2"}}],"polygons":[{"data":[[0,0],[0,1080],[1920,1080],[1920,0]]}]}

  • If the line configuration is not specified, the default value is used. By default, the line is horizontal and drawn at the position where the height is 50/ %of the image height. If the image width is w and the image height is h, the default position of the line is [[1/4w,1/2h], [3/4w,1/2h]].

  • If the area configuration is not specified, the default value is used. By default, the area is a rectangle, which is 1/4 of the middle of the entire video frame. If the image width is w and the image height is h, the positions of the four endpoints of the area are [[1/4w, 1/4h], [3/4w, 1/4h], [1/4w, 3/4h], [3/4w, 3/4h]].

Response Parameters

Status code: 200

Table 14 Response body parameters

Parameter

Type

Description

tasks

Array of TaskResponse objects

ID list of tasks created in VIAS

Table 15 TaskResponse

Parameter

Type

Description

id

String

ID of a task created in VIAS

Status code: 400

Table 16 Response body parameters

Parameter

Type

Description

error_code

String

Error code

error_msg

String

Error information

detail

String

Error details

params

Array of strings

Error parameters

Array Length: 0 - 1

reason

String

Error cause

advice

String

Suggestion

Status code: 500

Table 17 Response body parameters

Parameter

Type

Description

error_code

String

Error code

error_msg

String

Error information

detail

String

Error details

params

Array of strings

Error parameters

Array Length: 0 - 1

reason

String

Error cause

advice

String

Suggestion

Example Requests

  • This request is used to create a people flow counting (edge) task, with the input type set to video_source and the output type set to dis.

    POST /v2/{project_id}/services/c-flowcount-edge/tasks
    
    {
      "name" : "flowcount-task",
      "description" : "flowcount task test",
      "input" : {
        "type" : "video_source",
        "data" : [ {
          "video_source_id" : "xxxxxxx-xxxxxxx-xxxxxxx-xxxxx-xxxxxx"
        } ]
      },
      "output" : {
        "dis" : {
          "stream_name" : "dis-test"
        }
      },
      "service_version" : "3.0",
      "resource_order_id" : "840a5cf90d4a4bbaa71f251dfe8fe64e",
      "config" : {
        "common" : {
          "line_count_interval" : 2,
          "region_count_interval" : 2,
          "line_detection_sw" : 1,
          "region_detection_sw" : 1,
          "target_roi" : "{\"lines\":[{\"data\":[[560,680],[1185,506]],\"properties\":{\"side1_name\":\"Side1\",\"side2_name\":\"Side2\"}}],\"polygons\":[{\"data\":[[0,0],[0,1080],[1920,1080],[1920,0]]}]}",
          "heatmap_detection_sw" : 0,
          "heatmap_detection_interval" : 60,
          "heatmap_point_interval" : 4
        }
      }
    }
  • This request is used to create a people flow counting task, with the input type set to restful and the output type set to webhook.

    POST /v2/{project_id}/services/c-flowcount-edge/tasks
    
    {
      "name" : "flowcount-task",
      "description" : "flowcount task test",
      "input" : {
        "type" : "restful",
        "data" : [ {
          "url" : "https://restfultest",
          "certificate_check" : false,
          "node_id" : "aec5857c-222f-4aa9-be39-23654e118886",
          "rtsp_path_in_response" : "http://testpath"
        } ]
      },
      "output" : {
        "webhook" : {
          "url" : "https://127.0.0.1:8080/webhook",
          "headers" : {
            "x-auth-token" : "tokentest"
          }
        }
      },
      "service_version" : "3.0",
      "resource_order_id" : "840a5cf90d4a4bbaa71f251dfe8fe64e",
      "config" : {
        "common" : {
          "line_count_interval" : 2,
          "region_count_interval" : 2,
          "line_detection_sw" : 1,
          "region_detection_sw" : 1,
          "target_roi" : "{\"lines\":[{\"data\":[[560,680],[1185,506]],\"properties\":{\"side1_name\":\"Side1\",\"side2_name\":\"Side2\"}}],\"polygons\":[{\"data\":[[0,0],[0,1080],[1920,1080],[1920,0]]}]}",
          "heatmap_detection_sw" : 0,
          "heatmap_detection_interval" : 60,
          "heatmap_point_interval" : 4
        }
      }
    }
  • This request is used to create a people flow counting task, with the input type set to edgecamera and the output type set to dis.

    POST /v2/{project_id}/services/c-flowcount-edge/tasks
    
    {
      "name" : "flowcount-task",
      "description" : "flowcount task test",
      "input" : {
        "type" : "edgecamera",
        "data" : [ {
          "id" : "aec5857c-222f-4aa9-be39-23654e118886",
          "index" : 0
        } ]
      },
      "output" : {
        "dis" : {
          "stream_name" : "dis-test"
        }
      },
      "service_version" : "3.0",
      "resource_order_id" : "840a5cf90d4a4bbaa71f251dfe8fe64e",
      "config" : {
        "common" : {
          "line_count_interval" : 2,
          "region_count_interval" : 2,
          "line_detection_sw" : 1,
          "region_detection_sw" : 1,
          "target_roi" : "{\"lines\":[{\"data\":[[560,680],[1185,506]],\"properties\":{\"side1_name\":\"Side1\",\"side2_name\":\"Side2\"}}],\"polygons\":[{\"data\":[[0,0],[0,1080],[1920,1080],[1920,0]]}]}xyf",
          "heatmap_detection_sw" : 0,
          "heatmap_detection_interval" : 60,
          "heatmap_point_interval" : 4
        }
      }
    }
  • This request is used to create a people flow counting (edge) task, with the input type set to vcn and the output type set to dis.

    POST /v2/{project_id}/services/c-flowcount-edge/tasks
    
    {
      "name" : "flowcount-task",
      "description" : "flowcount task test",
      "input" : {
        "type" : "vcn",
        "data" : [ {
          "device_id" : "aec5857c-222f-4aa9-be39-23654e118886",
          "stream_type" : 2
        } ],
        "vcn" : {
          "ip" : "127.0.0.1",
          "port" : 8080,
          "username" : "vcntest",
          "password" : "123456abcd"
        }
      },
      "output" : {
        "dis" : {
          "stream_name" : "dis-test"
        }
      },
      "service_version" : "3.0",
      "resource_order_id" : "840a5cf90d4a4bbaa71f251dfe8fe64e",
      "config" : {
        "common" : {
          "line_count_interval" : 2,
          "region_count_interval" : 2,
          "line_detection_sw" : 1,
          "region_detection_sw" : 1,
          "target_roi" : "{\"lines\":[{\"data\":[[560,680],[1185,506]],\"properties\":{\"side1_name\":\"Side1\",\"side2_name\":\"Side2\"}}],\"polygons\":[{\"data\":[[0,0],[0,1080],[1920,1080],[1920,0]]}]}",
          "heatmap_detection_sw" : 0,
          "heatmap_detection_interval" : 60,
          "heatmap_point_interval" : 4
        }
      }
    }

Example Responses

Status code: 200

Operation successful

{
  "tasks" : [ {
    "id" : "20690c67d71549c39085a3b28c18f24f"
  } ]
}

Status Codes

Status Code

Description

200

Operation successful

400

Request error

500

Internal error

Error Codes

See Error Codes.