1
0
mirror of https://github.com/simon987/task_tracker.git synced 2025-04-08 04:56:44 +00:00
2019-06-01 12:00:17 -04:00

6.2 KiB

Worker API

Worker

/worker/create

Request

curl -X POST 'http://localhost:3010/worker/create' -d '
{
    "alias": "some alias"
}'

Response

{
  "ok": true,
  "content": {
    "worker": {
      "id": 1,
      "created": 1559396382,
      "alias": "some alias",
      "secret": "ftZVO4w9Fc7bDuOISRaJL9P92ijkfvNah1Ldgc0a9f8=",
      "paused": false
    }
  }
}

/worker/update

Request

curl -X POST 'http://localhost:3010/worker/update' \
-H 'X-Worker-ID: 1' -H 'X-Secret: ftZVO4w9Fc7bDuOISRaJL9P92ijkfvNah1Ldgc0a9f8=' -d '
{
    "alias": "another alias"
}'

Response

{
  "ok": true,
  "message": "(Error message, if applicable)"
}

Tasks

/task/submit Requires SUBMIT permissions on the project. max_assign_time is in seconds. Hash64 is a 64-bit number - the submit will fail if another task has the same hash. If UniqueString is specified, it will be hashed and put in place of Hash64.

VerificationCount is the number of times the task has to be released with the same verification hash by different workers before the task is marked as closed. For example, a VerificationCount of 2 means that two different workers have to assign and release the same task with the same verification hash before the task can be marked as closed.

Request

curl -X POST 'http://localhost:3010/task/submit' \
-H 'X-Worker-ID: 1' -H 'X-Secret: ftZVO4w9Fc7bDuOISRaJL9P92ijkfvNah1Ldgc0a9f8=' -d '
{
    "project": 1,
    "max_retries": 3,
    "recipe": "test recipe",
    "priority": 1,
    "max_assign_time": 3600,
    "hash64": 0,
    "unique_string": "",
    "verification_count": 0
}'

Response

{
  "ok": true,
  "message": "(Error message, if applicable)"
}

/task/bulk_submit

Same as /task/submit, but instead submit an array of submit requests. Tasks must be for the same project. Follows the project's submit rate limit.


/task/get/:project

Request

curl -X GET 'http://localhost:3010/task/get/1'\
 -H 'X-Worker-ID: 1' -H 'X-Secret: ftZVO4w9Fc7bDuOISRaJL9P92ijkfvNah1Ldgc0a9f8='

Response

{
  "ok": true,
  "content": {
    "task": {
      "id": 7,
      "priority": 1,
      "assignee": 1,
      "retries": 0,
      "max_retries": 3,
      "status": 1,
      "recipe": "test recipe",
      "max_assign_time": 0,
      "assign_time": 1559397394,
      "verification_count": 0,
      "project": {
        "id": 1,
        "priority": 999,
        "name": "My project",
        "clone_url": "http://github.com/test/test",
        "git_repo": "myrepo",
        "version": "1.0",
        "motd": "",
        "public": true,
        "hidden": false,
        "chain": 0,
        "paused": false,
        "assign_rate": 2,
        "submit_rate": 2
      }
    }
  }
}

/task/release

Result can be either of:

  • TR_OK=0: Task was completed
  • TR_FAIL=1: The worker failed to complete the task (tracker will mark the task as FAILED after max_retries retries.
  • TR_SKIP=2: Act as if the worker never touched this task

Request

curl -X POST 'http://localhost:3010/task/release'\
 -H 'X-Worker-ID: 1' -H 'X-Secret: ftZVO4w9Fc7bDuOISRaJL9P92ijkfvNah1Ldgc0a9f8=' -d '
{ 
    "task_id": 7,
    "result": 0,
    "verification": -32315129
}'

Response

Updated will be set to false if their was an error (see Message) or if the task has not yet reached the required number of verifications.

{
  "ok": true,
  "message": "(Message, if applicable)",
  "content": {
    "updated": true
  }
}

Logs

/log/{trace|info|warn|error}

Logs will be publicly available through the web UI if enabled in the config and will always appear in the log file.

Request

curl -X POST 'http://localhost:3010/log/info'\
 -H 'X-Worker-ID: 1' -H 'X-Secret: ftZVO4w9Fc7bDuOISRaJL9P92ijkfvNah1Ldgc0a9f8=' -d '
{ 
    "scope": "Arbitrary log category",
    "message": "message",
    "timestamp": 1559393394
}'

Response

{
  "ok": true,
  "message": "(Error message, if applicable)"
}

Projects

A=Assign (/task/get/:project)
S=Submit (/task/submit)
R=Read project from API (project/get/:project)

Permissions

Permission Public Private Hidden
(none) A R R
ASSIGN A R A R A
SUBMIT A S R A S R A S
ROLE_READ (Manager) R

/project/request_access

A Manager with ROLE_MANAGE_ACCESS will need to manually approve the request from the UI.

Request

curl -X POST 'http://localhost:3010/project/request_access'\
 -H 'X-Worker-ID: 1' -H 'X-Secret: ftZVO4w9Fc7bDuOISRaJL9P92ijkfvNah1Ldgc0a9f8=' -d '
{
  "assign": true,
  "submit": true,
  "project": 23
}'

Response

{
  "ok": true,
  "message": "(Error message, if applicable)"
}

/project/get/"id

Request

You must be authenticated as a manager and have ROLE_READ on the project to see hidden projects

curl -X GET 'http://localhost:3010/project/get/1'

Response

{
  "ok": true,
  "message": "",
  "content": {
    "id": 1,
    "priority": 999,
    "name": "My project",
    "clone_url": "http://github.com/test/test",
    "git_repo": "myrepo",
    "version": "1.0",
    "motd": "",
    "public": true,
    "hidden": false,
    "chain": 0,
    "paused": false,
    "assign_rate": 2,
    "submit_rate": 2
  }
}

/project/list

Hidden projects are returned if only if authenticated as a Manager and have the permission to read them.

Request

curl -X GET 'http://localhost:3010/project/list'

Response

{
  "ok": true,
  "message": "",
  "content": {
    "projects": []
  }
}

UI / Manager API

Currently undocumented

/worker/set_paused
/worker/stats
/project/create
/project/monitoring-between/:id
/project/monitoring/:id
/project/assignees/:id
/project/access_list/:id
/project/request_access
/project/accept_request/:id/:wid
/project/reject_request/:id/:wid
/project/secret/:id
/project/secret/:id
/project/webhook_secret/:id
/project/webhook_secret/:id
/project/reset_failed_tasks/:id
/project/hard_reset/:id
/project/reclaim_assigned_tasks/:id
/git/receivehook
/logs
/register
/login
/logout
/account
/manager/list
/manager/list_for_project/:id
/manager/promote/:id
/manager/demote/:id
/manager/set_role_for_project/:id