All docsStellar LinkRF bench · by Stellar Systems v0.1.0

API Reference

Campaigns

GET/api/v1/campaign-runs

List runs#

Responses

200OKapplication/json

array of CampaignStateDRO

idrequired

string

campaignrequired

string

statusrequired

string

cursorrequired

integer

≥ 0

total_stepsrequired

integer

≥ 0

verdict

boolean · nullable

true / false / null — and null is the common case.

A CAMPAIGN THAT DID NOT FINISH HAS NO VERDICT. One paused at step 3 of 15 must not report a pass on twelve steps nobody ran, and a client that rendered false there would be accusing the board of failures it was never asked to produce.

pause_requestedrequired

boolean

A pause is asked for and has not yet taken effect.

attemptsrequired

array of AttemptDRO

AttemptDRO · 5 fields
steprequired

string

outcomerequired

string

run_id

string · nullable

detailrequired

string

at_uptime_msrequired

integer · int64

MILLISECONDS SINCE THE DAEMON STARTED, not since the epoch. The board has no RTC; a client subtracting this from its own wall clock would be out by decades, which has already cost this project a UI feature.

≥ 0

started_at_uptime_msrequired

integer · int64

≥ 0

Request

curl "http://192.168.2.1:8080/api/v1/campaign-runs"

Response

[
  {
    "id": "string",
    "campaign": "string",
    "status": "string",
    "cursor": 0,
    "total_steps": 0,
    "verdict": true,
    "pause_requested": true,
    "attempts": [
      {
        "step": "string",
        "outcome": "string",
        "run_id": "string",
        "detail": "string",
        "at_uptime_ms": 0
      }
    ],
    "started_at_uptime_ms": 0
  }
]
GET/api/v1/campaign-runs/{id}

Get run#

Path parameters

idrequired

string

Execution id

Responses

200OKapplication/json
idrequired

string

campaignrequired

string

statusrequired

string

cursorrequired

integer

≥ 0

total_stepsrequired

integer

≥ 0

verdict

boolean · nullable

true / false / null — and null is the common case.

A CAMPAIGN THAT DID NOT FINISH HAS NO VERDICT. One paused at step 3 of 15 must not report a pass on twelve steps nobody ran, and a client that rendered false there would be accusing the board of failures it was never asked to produce.

pause_requestedrequired

boolean

A pause is asked for and has not yet taken effect.

attemptsrequired

array of AttemptDRO

AttemptDRO · 5 fields
steprequired

string

outcomerequired

string

run_id

string · nullable

detailrequired

string

at_uptime_msrequired

integer · int64

MILLISECONDS SINCE THE DAEMON STARTED, not since the epoch. The board has no RTC; a client subtracting this from its own wall clock would be out by decades, which has already cost this project a UI feature.

≥ 0

started_at_uptime_msrequired

integer · int64

≥ 0

404Not foundapplication/json

ApiErrorDRO

Request

curl "http://192.168.2.1:8080/api/v1/campaign-runs/<id>"

Response

{
  "id": "string",
  "campaign": "string",
  "status": "string",
  "cursor": 0,
  "total_steps": 0,
  "verdict": true,
  "pause_requested": true,
  "attempts": [
    {
      "step": "string",
      "outcome": "string",
      "run_id": "string",
      "detail": "string",
      "at_uptime_ms": 0
    }
  ],
  "started_at_uptime_ms": 0
}
POST/api/v1/campaign-runs/{id}/pause

Pause#

Path parameters

idrequired

string

Execution id

Responses

202Pause requested — it takes effect at the next step boundaryapplication/json
idrequired

string

campaignrequired

string

statusrequired

string

cursorrequired

integer

≥ 0

total_stepsrequired

integer

≥ 0

verdict

boolean · nullable

true / false / null — and null is the common case.

A CAMPAIGN THAT DID NOT FINISH HAS NO VERDICT. One paused at step 3 of 15 must not report a pass on twelve steps nobody ran, and a client that rendered false there would be accusing the board of failures it was never asked to produce.

pause_requestedrequired

boolean

A pause is asked for and has not yet taken effect.

attemptsrequired

array of AttemptDRO

AttemptDRO · 5 fields
steprequired

string

outcomerequired

string

run_id

string · nullable

detailrequired

string

at_uptime_msrequired

integer · int64

MILLISECONDS SINCE THE DAEMON STARTED, not since the epoch. The board has no RTC; a client subtracting this from its own wall clock would be out by decades, which has already cost this project a UI feature.

≥ 0

started_at_uptime_msrequired

integer · int64

≥ 0

404Not foundapplication/json

ApiErrorDRO

Request

curl -X POST "http://192.168.2.1:8080/api/v1/campaign-runs/<id>/pause"

Response

{
  "id": "string",
  "campaign": "string",
  "status": "string",
  "cursor": 0,
  "total_steps": 0,
  "verdict": true,
  "pause_requested": true,
  "attempts": [
    {
      "step": "string",
      "outcome": "string",
      "run_id": "string",
      "detail": "string",
      "at_uptime_ms": 0
    }
  ],
  "started_at_uptime_ms": 0
}
POST/api/v1/campaign-runs/{id}/resume

Resume#

Path parameters

idrequired

string

Execution id

Responses

202Acceptedapplication/json
idrequired

string

campaignrequired

string

statusrequired

string

cursorrequired

integer

≥ 0

total_stepsrequired

integer

≥ 0

verdict

boolean · nullable

true / false / null — and null is the common case.

A CAMPAIGN THAT DID NOT FINISH HAS NO VERDICT. One paused at step 3 of 15 must not report a pass on twelve steps nobody ran, and a client that rendered false there would be accusing the board of failures it was never asked to produce.

pause_requestedrequired

boolean

A pause is asked for and has not yet taken effect.

attemptsrequired

array of AttemptDRO

AttemptDRO · 5 fields
steprequired

string

outcomerequired

string

run_id

string · nullable

detailrequired

string

at_uptime_msrequired

integer · int64

MILLISECONDS SINCE THE DAEMON STARTED, not since the epoch. The board has no RTC; a client subtracting this from its own wall clock would be out by decades, which has already cost this project a UI feature.

≥ 0

started_at_uptime_msrequired

integer · int64

≥ 0

409Finished, or another campaign is runningapplication/json

ApiErrorDRO

Request

curl -X POST "http://192.168.2.1:8080/api/v1/campaign-runs/<id>/resume"

Response

{
  "id": "string",
  "campaign": "string",
  "status": "string",
  "cursor": 0,
  "total_steps": 0,
  "verdict": true,
  "pause_requested": true,
  "attempts": [
    {
      "step": "string",
      "outcome": "string",
      "run_id": "string",
      "detail": "string",
      "at_uptime_ms": 0
    }
  ],
  "started_at_uptime_ms": 0
}
POST/api/v1/campaign-runs/{id}/steps/{step}/rerun

Rerun step#

Path parameters

idrequired

string

Execution id

steprequired

string

Step id, as the campaign names it

Responses

200OKapplication/json
idrequired

string

campaignrequired

string

statusrequired

string

cursorrequired

integer

≥ 0

total_stepsrequired

integer

≥ 0

verdict

boolean · nullable

true / false / null — and null is the common case.

A CAMPAIGN THAT DID NOT FINISH HAS NO VERDICT. One paused at step 3 of 15 must not report a pass on twelve steps nobody ran, and a client that rendered false there would be accusing the board of failures it was never asked to produce.

pause_requestedrequired

boolean

A pause is asked for and has not yet taken effect.

attemptsrequired

array of AttemptDRO

AttemptDRO · 5 fields
steprequired

string

outcomerequired

string

run_id

string · nullable

detailrequired

string

at_uptime_msrequired

integer · int64

MILLISECONDS SINCE THE DAEMON STARTED, not since the epoch. The board has no RTC; a client subtracting this from its own wall clock would be out by decades, which has already cost this project a UI feature.

≥ 0

started_at_uptime_msrequired

integer · int64

≥ 0

409The campaign is runningapplication/json

ApiErrorDRO

Request

curl -X POST "http://192.168.2.1:8080/api/v1/campaign-runs/<id>/steps/<step>/rerun"

Response

{
  "id": "string",
  "campaign": "string",
  "status": "string",
  "cursor": 0,
  "total_steps": 0,
  "verdict": true,
  "pause_requested": true,
  "attempts": [
    {
      "step": "string",
      "outcome": "string",
      "run_id": "string",
      "detail": "string",
      "at_uptime_ms": 0
    }
  ],
  "started_at_uptime_ms": 0
}
GET/api/v1/campaigns

List#

Responses

200OKapplication/json

array of CampaignSummaryDRO

namerequired

string

display_name

string · nullable

descriptionrequired

string

stepsrequired

integer

≥ 0

cron

string · nullable

The cron expression, when this campaign schedules itself.

tagsrequired

array of string

Request

curl "http://192.168.2.1:8080/api/v1/campaigns"

Response

[
  {
    "name": "string",
    "display_name": "string",
    "description": "string",
    "steps": 0,
    "cron": "string",
    "tags": [
      "string"
    ]
  }
]
GET/api/v1/campaigns/active

Active#

Responses

200OKapplication/json
active

ActiveDRO · nullable

ActiveDRO · 5 fields
idrequired

string

campaignrequired

string

cursorrequired

integer

≥ 0

totalrequired

integer

≥ 0

pausingrequired

boolean

board_providerrequired

string

Who would take a board action, in words. "the orchestrator power-cycled it" and "nobody did, the step was refused" must not read the same afterwards.

Request

curl "http://192.168.2.1:8080/api/v1/campaigns/active"

Response

{
  "active": {
    "id": "string",
    "campaign": "string",
    "cursor": 0,
    "total": 0,
    "pausing": true
  },
  "board_provider": "string"
}
GET/api/v1/campaigns/{name}

Get one#

Path parameters

namerequired

string

Campaign identifier

Responses

200The campaign document
404Not foundapplication/json

ApiErrorDRO

Request

curl "http://192.168.2.1:8080/api/v1/campaigns/<name>" \
  -o response.bin

Response

{}
POST/api/v1/campaigns/{name}/run

Run#

Path parameters

namerequired

string

Campaign to run

Responses

202Acceptedapplication/json
idrequired

string

campaignrequired

string

statusrequired

string

cursorrequired

integer

≥ 0

total_stepsrequired

integer

≥ 0

verdict

boolean · nullable

true / false / null — and null is the common case.

A CAMPAIGN THAT DID NOT FINISH HAS NO VERDICT. One paused at step 3 of 15 must not report a pass on twelve steps nobody ran, and a client that rendered false there would be accusing the board of failures it was never asked to produce.

pause_requestedrequired

boolean

A pause is asked for and has not yet taken effect.

attemptsrequired

array of AttemptDRO

AttemptDRO · 5 fields
steprequired

string

outcomerequired

string

run_id

string · nullable

detailrequired

string

at_uptime_msrequired

integer · int64

MILLISECONDS SINCE THE DAEMON STARTED, not since the epoch. The board has no RTC; a client subtracting this from its own wall clock would be out by decades, which has already cost this project a UI feature.

≥ 0

started_at_uptime_msrequired

integer · int64

≥ 0

404Not foundapplication/json

ApiErrorDRO

409Another campaign is runningapplication/json

ApiErrorDRO

Request

curl -X POST "http://192.168.2.1:8080/api/v1/campaigns/<name>/run"

Response

{
  "id": "string",
  "campaign": "string",
  "status": "string",
  "cursor": 0,
  "total_steps": 0,
  "verdict": true,
  "pause_requested": true,
  "attempts": [
    {
      "step": "string",
      "outcome": "string",
      "run_id": "string",
      "detail": "string",
      "at_uptime_ms": 0
    }
  ],
  "started_at_uptime_ms": 0
}

↑↓ to moveEnter to open