Check API Error

URL - /check (POST)
{
  "name": "Test Check2",
  "orgID": "95dc3721f6ba9293",
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "query": {
    "text": "from(bucket:\"telegraf\") |> range(start:-5h) |> filter(fn:(r) => r._measurement == \"cpu\")",
    "name": "check2"
  },
  "status": "active",
  "description": "this is a check2",
  "latestCompleted": "2019-08-24T14:15:22Z",
  "type": "deadman",
  "reportZero": true,
  "level": "CRIT",
  "every": "1m",
  "offset": "0s",
  "statusMessageTemplate": "Critical State"
}
Output - 
{
    "code": "internal error",
    "message": "a panic has occurred: /api/v2/checks: runtime error: invalid memory address or nil pointer dereference"
}

Im trying to create a check from API call.
Is there anything im missing?

Hello @debnath,
It looks like youre trying to write a task more than a check. A check is a special type of task with special requirements.

Your call looks it’s conflating some body parameters from the GET /api/v2/checks/{checkid} endpoint and the POST /api/v2/checks endpoint.

Here’s what my deadman task looks like from the GET API /api/v2/checks/{checkid} endpoint.

{"id":"0811ec86fc2f9000",
"name":"deadman",
"ownerID":"0xxx0",
"orgID":"0xxx0",
"query":{"text":"from(bucket: \"Air sensor sample dataset\")\n  |\u003e range(start: v.timeRangeStart, stop: v.timeRangeStop)\n  |\u003e filter(fn: (r) =\u003e r[\"_measurement\"] == \"airSensors\")\n  |\u003e filter(fn: (r) =\u003e r[\"_field\"] == \"co\")\n  |\u003e filter(fn: (r) =\u003e r[\"sensor_id\"] == \"TLM0100\")",
"editMode":"builder",
"name":"",
"builderConfig":{"buckets":["Air sensor sample dataset"],"tags":[{"key":"_measurement","values":["airSensors"],"aggregateFunctionType":"filter"},{"key":"_field","values":["co"],"aggregateFunctionType":"filter"},{"key":"sensor_id","values":["TLM0100"],"aggregateFunctionType":"filter"},{"key":"","values":[],"aggregateFunctionType":"filter"}],"functions":[],"aggregateWindow":{"period":"","fillValues":false}}},
"taskID":"0811ec87012d0000",
"statusMessageTemplate":"Check: ${ r._check_name } is: ${ r._level }",
"every":"1m",
"offset":"0s",
"tags":[],
"createdAt":"2021-08-30T15:36:48.368162411Z",
"updatedAt":"2021-08-30T15:37:04.914664067Z",
"timeSince":"90s",
"staleTime":"10m",
"reportZero":false,
"level":"CRIT",
"type":"deadman",
"labels":[],"links":{"self":"/api/v2/checks/0811ec86fc2f9000","labels":"/api/v2/checks/0811ec86fc2f9000/labels","members":"/api/v2/checks/0811ec86fc2f9000/members","owners":"/api/v2/checks/0811ec86fc2f9000/owners","query":"/api/v2/checks/0811ec86fc2f9000/query"},
"status":"inactive",
"latestCompleted":"2021-08-30T15:37:00Z",
"latestScheduled":"2021-08-30T15:37:00Z",
"lastRunStatus":"success",
"taskID":"0811ec87012d0000"}

You’ll need to include the following parameters:

"timeSince":"90s",
"staleTime":"10m",

When you’re creating your deadman task with the API. Also you shouldn’t have:

"latestCompleted": "2019-08-24T14:15:22Z",
 "createdAt": "2019-08-24T14:15:22Z",
 "updatedAt": "2019-08-24T14:15:22Z"

Theres also a bracket typo with the query key. name should be outside.

{
  "name": "Test Check2",
  "orgID": "0437f6d51b579000",
  "query": {
    "text": "from(bucket:\"telegraf\") |> range(start:-5h) |> filter(fn:(r) => r._measurement == \"cpu\")"},
  "name": "check2",
  "status": "active",
  "description": "this is a check2",
  "type": "deadman",
  "reportZero": true,
  "level": "CRIT",
  "every": "1m",
  "offset": "0s",
  "statusMessageTemplate": "Critical State"
  "timeSince":"90s",
  "staleTime":"10m",
}

This worked for me:

 curl -X POST -d '{"name": "Test Check2","orgID" "0xxx0","query": {"text": "from(bucket:\"telegraf\") |> range(start:-5h) |> filter(fn:(r) => r._measurement == \"cpu\")"},"name": "check2","status": "active","description": "this is a check2","type": "deadman","reportZero": true,"level": "CRIT","every": "1m","offset": "0s","statusMessageTemplate": "Critical State","timeSince":"90s","staleTime":"10m"}'  https://us-west-2-1.aws.cloud2.influxdata.com/api/v2/checks -H 'authorization: Token Oxxx=='

With the following output:

{"id":"0811f0e7455db000","name":"check2","description":"this is a check2","ownerID":"0xxx0","orgID":"0xxx0","query":{"text":"from(bucket:\"telegraf\") |\u003e range(start:-5h) |\u003e filter(fn:(r) =\u003e r._measurement == \"cpu\")","editMode":"","name":"","builderConfig":{"buckets":[],"tags":[],"functions":[],"aggregateWindow":{"period":"","fillValues":false}}},"taskID":"0811f0e7480ed000","statusMessageTemplate":"Critical State","every":"1m","offset":"0s","tags":null,"createdAt":"2021-08-30T15:55:55.541131135Z","updatedAt":"2021-08-30T15:55:55.541131135Z","timeSince":"90s","staleTime":"10m","reportZero":true,"level":"CRIT","type":"deadman","labels":[],"links":{"self":"/api/v2/checks/0811f0e7455db000","labels":"/api/v2/checks/0811f0e7455db000/labels","members":"/api/v2/checks/0811f0e7455db000/members","owners":"/api/v2/checks/0811f0e7455db000/owners","query":"/api/v2/checks/0811f0e7455db000/query"},"status":"active","latestCompleted":"2021-08-30T15:55:55Z","latestScheduled":"2021-08-30T15:55:55Z","taskID":"0811f0e7480ed000"}