Skip to content

staff.datafeeds ​

11 methods on staff.datafeeds. Each returns the answer's data and throws NoviqaError on a failed answer.

list ​

GET/admin/v1/datafeeds

List datafeeds

Every price provider connection, by priority (lower first, then id). Not paged. The password is never returned; has_password says whether one is stored. Datafeeds and gateways are platform-wide (no group scope). Every change writes a config line to the journal and raises the configuration version, so the service that runs the connection picks it up and reconnects.

More details

Rights: the staff member needs every one of: config.datafeeds.

Returns
Promise<Datafeed[]>
The answer's data.
Errors
401auth.session_expired: session expired, sign in again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403forbidden: you do not have access to this action
500internal: something went wrong
ts
import { staff } from "@/lib/noviqa"

const data = await staff.datafeeds.list()
bash
curl -X GET "$NOVIQA_API_URL/admin/v1/datafeeds" \
  -H "Authorization: Bearer $NOVIQA_TOKEN"
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": [
    {
      "created_at": "2026-09-25T10:15:00Z",
      "enabled": true,
      "failures_before_rest": 1,
      "gateway_login": "string",
      "gateway_password": "string",
      "gateway_server": "string",
      "has_gateway_password": true,
      "has_password": true,
      "id": 1,
      "idle_timeout_sec": 1,
      "import_symbol_settings": true,
      "login": 1001
    }
  ],
  "request_id": "5b7f2c1e"
}
ts
staff.datafeeds.list(options?: RequestOptions): Promise<models.Datafeed[]>

create ​

POST/admin/v1/datafeeds

Create a datafeed

Starts from the module's defaults (enabled, reconnect 5 s, 10 failures before a 60 s rest, idle timeout 60 s, quotes on, the module's parameter list) and applies the body over them. Required: module (fix44 or dde), name (1-64 letters, digits, spaces or . _ & # -, unique) and server (host:port). A params list replaces the module's whole list, so send every parameter you keep. While enabled, the module's required parameters must have a value (fix44: SenderCompID and TargetCompID) and a dde feed needs a login and password or a Token parameter. Limits: priority 0-1000, login 64 and password 128 characters, reconnect 1-600 s, idle timeout 1-3600 s, failures before rest 1-1000, rest 1-3600 s; parameter keys used once, values checked against their type; each symbol translated once, markups -100000..100000 points, source digits 0-10; symbol masks like Forex*, EURUSD or !Forex\USDTRY (the last mask that fits decides; * takes everything). The password is stored sealed and never returned. Unknown fields are refused. Answers the stored feed at version 1. Datafeeds and gateways are platform-wide (no group scope). Every change writes a config line to the journal and raises the configuration version, so the service that runs the connection picks it up and reconnects.

More details

Rights: the staff member needs every one of: config.datafeeds.

Request body
created_atstring
UTC time, RFC 3339.
enabledboolean
failures_before_restinteger
failed connections in a row before resting
gateway_loginstring
gateway_passwordstring
write-only: never returned, stored sealed
gateway_serverstring
GatewayServer, GatewayLogin and GatewayPassword name a separate connection the module may need; stored like Server/Login/Password, not read yet.
has_gateway_passwordboolean
read-only
has_passwordboolean
read-only
idinteger
idle_timeout_secinteger
reconnect when the feed stays silent this long
import_symbol_settingsboolean
apply the provider's symbol settings (digits, sizes) on import
loginstring
modulestring
one of FeedModules, e.g. fix44
namestring
news_enabledboolean
paramsFeedParam_input[]
the module's settings
passwordstring
write-only: never returned, stored sealed
priorityinteger
lower wins when several feeds quote the same symbol
quotes_enabledboolean
reconnect_secinteger
wait between connection attempts
rest_secinteger
how long to rest
serverstring
host:port of the provider
symbolsstring[]
masks it quotes, in order; ! excludes: Forex\*, !Forex\USDTRY
timeout_secinteger
seconds to wait for a connection to answer before giving up
translatesFeedTranslate_input[]
our symbol <-> the provider's name, with markup
updated_atstring
UTC time, RFC 3339.
versioninteger
Returns
Promise<Datafeed>
The answer's data.
Errors
400invalid_input: invalid input
401auth.session_expired: session expired, sign in again
403auth.csrf_invalid: request refused: reload the page and try again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403forbidden: you do not have access to this action
409conflict: already exists
500internal: something went wrong
ts
import { staff } from "@/lib/noviqa"

const data = await staff.datafeeds.create({
  enabled: false,
  login: "hs-prices",
  module: "fix44",
  name: "LP Prices",
  password: "S3cret#Pass",
  priority: 10,
  server: "prices.example.com:5201",
  symbols: [
    "Forex\\*",
    "!Forex\\USDTRY"
  ],
  translates: [
    {
      ask_markup_pts: 2,
      bid_markup_pts: 0,
      source: "EUR/USD",
      source_digits: null,
      symbol_id: 12
    }
  ]
})
bash
curl -X POST "$NOVIQA_API_URL/admin/v1/datafeeds" \
  -H "Authorization: Bearer $NOVIQA_TOKEN" \
  -H "Content-Type: application/json" \
  --data-raw '{
  "enabled": false,
  "login": "hs-prices",
  "module": "fix44",
  "name": "LP Prices",
  "password": "S3cret#Pass",
  "priority": 10,
  "server": "prices.example.com:5201",
  "symbols": [
    "Forex\\*",
    "!Forex\\USDTRY"
  ],
  "translates": [
    {
      "ask_markup_pts": 2,
      "bid_markup_pts": 0,
      "source": "EUR/USD",
      "source_digits": null,
      "symbol_id": 12
    }
  ]
}'
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": {
    "created_at": "2026-09-25T10:15:00Z",
    "enabled": true,
    "failures_before_rest": 1,
    "gateway_login": "string",
    "gateway_password": "string",
    "gateway_server": "string",
    "has_gateway_password": true,
    "has_password": true,
    "id": 1,
    "idle_timeout_sec": 1,
    "import_symbol_settings": true,
    "login": 1001
  },
  "request_id": "5b7f2c1e"
}
ts
staff.datafeeds.create(body: models.Datafeed, options?: RequestOptions): Promise<models.Datafeed>

modules ​

GET/admin/v1/datafeeds/modules

List datafeed modules

The kinds of provider connection (fix44, dde) with the parameters a new feed of each starts with and the parameters that must have a value before the feed can be enabled.

More details

Rights: the staff member needs every one of: config.datafeeds.

Returns
Promise<FeedModule[]>
The answer's data.
Errors
401auth.session_expired: session expired, sign in again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403forbidden: you do not have access to this action
500internal: something went wrong
ts
import { staff } from "@/lib/noviqa"

const data = await staff.datafeeds.modules()
bash
curl -X GET "$NOVIQA_API_URL/admin/v1/datafeeds/modules" \
  -H "Authorization: Bearer $NOVIQA_TOKEN"
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": [
    {
      "certificate": "string",
      "description": "string",
      "label": "string",
      "module": "string",
      "params": [
        {}
      ],
      "required": [
        "string"
      ],
      "signed_by": "string"
    }
  ],
  "request_id": "5b7f2c1e"
}
ts
staff.datafeeds.modules(options?: RequestOptions): Promise<models.FeedModule[]>

updateOrder ​

PUT/admin/v1/datafeeds/order

Reorder datafeeds

Sets the priorities 1, 2, ... in the order of ids (the first wins when several feeds quote the same symbol). ids must list every datafeed exactly once. Versions do not change. Answers the whole list in its new order. Datafeeds and gateways are platform-wide (no group scope). Every change writes a config line to the journal and raises the configuration version, so the service that runs the connection picks it up and reconnects.

More details

Rights: the staff member needs every one of: config.datafeeds.

Request body
idsinteger[]
Returns
Promise<Datafeed[]>
The answer's data.
Errors
400invalid_input: invalid input
401auth.session_expired: session expired, sign in again
403auth.csrf_invalid: request refused: reload the page and try again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403forbidden: you do not have access to this action
500internal: something went wrong
ts
import { staff } from "@/lib/noviqa"

const data = await staff.datafeeds.updateOrder({
  ids: [
    3,
    1,
    2
  ]
})
bash
curl -X PUT "$NOVIQA_API_URL/admin/v1/datafeeds/order" \
  -H "Authorization: Bearer $NOVIQA_TOKEN" \
  -H "Content-Type: application/json" \
  --data-raw '{
  "ids": [
    3,
    1,
    2
  ]
}'
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": [
    {
      "created_at": "2026-09-25T10:15:00Z",
      "enabled": true,
      "failures_before_rest": 1,
      "gateway_login": "string",
      "gateway_password": "string",
      "gateway_server": "string",
      "has_gateway_password": true,
      "has_password": true,
      "id": 1,
      "idle_timeout_sec": 1,
      "import_symbol_settings": true,
      "login": 1001
    }
  ],
  "request_id": "5b7f2c1e"
}
ts
staff.datafeeds.updateOrder(body: http.orderBody, options?: RequestOptions): Promise<models.Datafeed[]>

retrieve ​

GET/admin/v1/datafeeds/{id}

Get a datafeed

One datafeed with its parameters, symbol masks and translates.

More details

Rights: the staff member needs every one of: config.datafeeds.

Parameters
idinteger · pathrequired
Numeric id.
Returns
Promise<Datafeed>
The answer's data.
Errors
400invalid_input: invalid input
401auth.session_expired: session expired, sign in again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403forbidden: you do not have access to this action
404not_found: not found
500internal: something went wrong
ts
import { staff } from "@/lib/noviqa"

const data = await staff.datafeeds.retrieve(1)
bash
curl -X GET "$NOVIQA_API_URL/admin/v1/datafeeds/1" \
  -H "Authorization: Bearer $NOVIQA_TOKEN"
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": {
    "created_at": "2026-09-25T10:15:00Z",
    "enabled": true,
    "failures_before_rest": 1,
    "gateway_login": "string",
    "gateway_password": "string",
    "gateway_server": "string",
    "has_gateway_password": true,
    "has_password": true,
    "id": 1,
    "idle_timeout_sec": 1,
    "import_symbol_settings": true,
    "login": 1001
  },
  "request_id": "5b7f2c1e"
}
ts
staff.datafeeds.retrieve(id: number, options?: RequestOptions): Promise<models.Datafeed>

update ​

PATCH/admin/v1/datafeeds/{id}

Change a datafeed

Send version (the one you last read) and the fields to change; id, has_password, created_at and updated_at cannot be sent. params, symbols and translates replace the whole list. password "" removes the password; leaving it out keeps it. The same rules as create apply to the result. A change that changes nothing answers the feed as it is, without a new version. Answers the saved feed with its new version. Datafeeds and gateways are platform-wide (no group scope). Every change writes a config line to the journal and raises the configuration version, so the service that runs the connection picks it up and reconnects.

More details

Rights: the staff member needs every one of: config.datafeeds.

Parameters
idinteger · pathrequired
Numeric id.
Request body
created_atstring
UTC time, RFC 3339.
enabledboolean
failures_before_restinteger
failed connections in a row before resting
gateway_loginstring
gateway_passwordstring
write-only: never returned, stored sealed
gateway_serverstring
GatewayServer, GatewayLogin and GatewayPassword name a separate connection the module may need; stored like Server/Login/Password, not read yet.
has_gateway_passwordboolean
read-only
has_passwordboolean
read-only
idinteger
idle_timeout_secinteger
reconnect when the feed stays silent this long
import_symbol_settingsboolean
apply the provider's symbol settings (digits, sizes) on import
loginstring
modulestring
one of FeedModules, e.g. fix44
namestring
news_enabledboolean
paramsFeedParam_input[]
the module's settings
passwordstring
write-only: never returned, stored sealed
priorityinteger
lower wins when several feeds quote the same symbol
quotes_enabledboolean
reconnect_secinteger
wait between connection attempts
rest_secinteger
how long to rest
serverstring
host:port of the provider
symbolsstring[]
masks it quotes, in order; ! excludes: Forex\*, !Forex\USDTRY
timeout_secinteger
seconds to wait for a connection to answer before giving up
translatesFeedTranslate_input[]
our symbol <-> the provider's name, with markup
updated_atstring
UTC time, RFC 3339.
versioninteger
Returns
Promise<Datafeed>
The answer's data.
Errors
400invalid_input: invalid input
401auth.session_expired: session expired, sign in again
403auth.csrf_invalid: request refused: reload the page and try again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403forbidden: you do not have access to this action
404not_found: not found
409conflict: already exists
500internal: something went wrong
ts
import { staff } from "@/lib/noviqa"

const data = await staff.datafeeds.update(1, {
  reconnect_sec: 10,
  symbols: [
    "Forex\\*",
    "Metals\\*"
  ],
  version: 3
})
bash
curl -X PATCH "$NOVIQA_API_URL/admin/v1/datafeeds/1" \
  -H "Authorization: Bearer $NOVIQA_TOKEN" \
  -H "Content-Type: application/json" \
  --data-raw '{
  "reconnect_sec": 10,
  "symbols": [
    "Forex\\*",
    "Metals\\*"
  ],
  "version": 3
}'
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": {
    "created_at": "2026-09-25T10:15:00Z",
    "enabled": true,
    "failures_before_rest": 1,
    "gateway_login": "string",
    "gateway_password": "string",
    "gateway_server": "string",
    "has_gateway_password": true,
    "has_password": true,
    "id": 1,
    "idle_timeout_sec": 1,
    "import_symbol_settings": true,
    "login": 1001
  },
  "request_id": "5b7f2c1e"
}
ts
staff.datafeeds.update(id: number, body: models.Datafeed, options?: RequestOptions): Promise<models.Datafeed>

delete ​

DELETE/admin/v1/datafeeds/{id}

Delete a datafeed

Removes the feed with its parameters and translates; the market data service disconnects it. Datafeeds and gateways are platform-wide (no group scope). Every change writes a config line to the journal and raises the configuration version, so the service that runs the connection picks it up and reconnects.

More details

Rights: the staff member needs every one of: config.datafeeds.

Parameters
idinteger · pathrequired
Numeric id.
Returns
Promise<null>
The answer's data.
Errors
400invalid_input: invalid input
401auth.session_expired: session expired, sign in again
403auth.csrf_invalid: request refused: reload the page and try again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403forbidden: you do not have access to this action
404not_found: not found
500internal: something went wrong
ts
import { staff } from "@/lib/noviqa"

const data = await staff.datafeeds.delete(1)
bash
curl -X DELETE "$NOVIQA_API_URL/admin/v1/datafeeds/1" \
  -H "Authorization: Bearer $NOVIQA_TOKEN"
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": null,
  "request_id": "5b7f2c1e"
}
ts
staff.datafeeds.delete(id: number, options?: RequestOptions): Promise<null>

activate ​

POST/admin/v1/datafeeds/{id}/activate

Switch a datafeed on or off

Sets enabled whatever version you last read (it runs the same checks as a change, so enabling needs the module's required parameters). Answers the saved feed. Datafeeds and gateways are platform-wide (no group scope). Every change writes a config line to the journal and raises the configuration version, so the service that runs the connection picks it up and reconnects.

More details

Rights: the staff member needs every one of: config.datafeeds.

Parameters
idinteger · pathrequired
Numeric id.
Request body
enabledboolean
Returns
Promise<Datafeed>
The answer's data.
Errors
400invalid_input: invalid input
401auth.session_expired: session expired, sign in again
403auth.csrf_invalid: request refused: reload the page and try again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403forbidden: you do not have access to this action
404not_found: not found
409conflict: already exists
500internal: something went wrong
ts
import { staff } from "@/lib/noviqa"

const data = await staff.datafeeds.activate(1, {
  enabled: true
})
bash
curl -X POST "$NOVIQA_API_URL/admin/v1/datafeeds/1/activate" \
  -H "Authorization: Bearer $NOVIQA_TOKEN" \
  -H "Content-Type: application/json" \
  --data-raw '{
  "enabled": true
}'
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": {
    "created_at": "2026-09-25T10:15:00Z",
    "enabled": true,
    "failures_before_rest": 1,
    "gateway_login": "string",
    "gateway_password": "string",
    "gateway_server": "string",
    "has_gateway_password": true,
    "has_password": true,
    "id": 1,
    "idle_timeout_sec": 1,
    "import_symbol_settings": true,
    "login": 1001
  },
  "request_id": "5b7f2c1e"
}
ts
staff.datafeeds.activate(id: number, body: http.activeBody, options?: RequestOptions): Promise<models.Datafeed>

restart ​

POST/admin/v1/datafeeds/{id}/restart

Reconnect a datafeed

Raises the feed's version, which makes the market data service drop and reopen the connection. Refused (invalid_input) while the feed is disabled. Writes a journal line. Answers the feed with its new version.

More details

Rights: the staff member needs every one of: config.datafeeds.

Parameters
idinteger · pathrequired
Numeric id.
Returns
Promise<Datafeed>
The answer's data.
Errors
400invalid_input: invalid input
401auth.session_expired: session expired, sign in again
403auth.csrf_invalid: request refused: reload the page and try again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403forbidden: you do not have access to this action
404not_found: not found
500internal: something went wrong
ts
import { staff } from "@/lib/noviqa"

const data = await staff.datafeeds.restart(1)
bash
curl -X POST "$NOVIQA_API_URL/admin/v1/datafeeds/1/restart" \
  -H "Authorization: Bearer $NOVIQA_TOKEN"
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": {
    "created_at": "2026-09-25T10:15:00Z",
    "enabled": true,
    "failures_before_rest": 1,
    "gateway_login": "string",
    "gateway_password": "string",
    "gateway_server": "string",
    "has_gateway_password": true,
    "has_password": true,
    "id": 1,
    "idle_timeout_sec": 1,
    "import_symbol_settings": true,
    "login": 1001
  },
  "request_id": "5b7f2c1e"
}
ts
staff.datafeeds.restart(id: number, options?: RequestOptions): Promise<models.Datafeed>

status ​

GET/admin/v1/datafeeds/{id}/status

Datafeed connection status

The latest report of the market data service about the feed: state, counters since start, last tick and last error. When no report exists the answer is disabled (feed switched off) or stopped (no market data copy runs it) with zero counters.

More details

Rights: the staff member needs every one of: config.datafeeds.

Parameters
idinteger · pathrequired
Numeric id.
Returns
Promise<FeedStatus>
The answer's data.
Errors
400invalid_input: invalid input
401auth.session_expired: session expired, sign in again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403forbidden: you do not have access to this action
404not_found: not found
500internal: something went wrong
ts
import { staff } from "@/lib/noviqa"

const data = await staff.datafeeds.status(1)
bash
curl -X GET "$NOVIQA_API_URL/admin/v1/datafeeds/1/status" \
  -H "Authorization: Bearer $NOVIQA_TOKEN"
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": {
    "bytes_in": 1,
    "bytes_out": 1,
    "datafeed_id": 1,
    "depth": 1,
    "last_error": "string",
    "last_tick_at": "2026-09-25T10:15:00Z",
    "news": 1,
    "rejected": 1,
    "reported_at": "2026-09-25T10:15:00Z",
    "since": "2026-09-25T10:15:00Z",
    "state": "disabled",
    "tick_stats": 1
  },
  "request_id": "5b7f2c1e"
}
ts
staff.datafeeds.status(id: number, options?: RequestOptions): Promise<models.FeedStatus>

test ​

POST/admin/v1/datafeeds/{id}/test

Test a datafeed connection

Asks the market data service to try a logon with the stored settings without enabling the feed, and waits up to 15 seconds. ok false with message is a failed logon; invalid_input means no market data copy answered. Writes a journal line with the result.

More details

Rights: the staff member needs every one of: config.datafeeds.

Parameters
idinteger · pathrequired
Numeric id.
Returns
Promise<ConnectionResult>
The answer's data.
Errors
400invalid_input: invalid input
401auth.session_expired: session expired, sign in again
403auth.csrf_invalid: request refused: reload the page and try again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403forbidden: you do not have access to this action
404not_found: not found
500internal: something went wrong
ts
import { staff } from "@/lib/noviqa"

const data = await staff.datafeeds.test(1)
bash
curl -X POST "$NOVIQA_API_URL/admin/v1/datafeeds/1/test" \
  -H "Authorization: Bearer $NOVIQA_TOKEN"
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": {
    "message": "string",
    "millis": 1,
    "ok": true
  },
  "request_id": "5b7f2c1e"
}
ts
staff.datafeeds.test(id: number, options?: RequestOptions): Promise<models.ConnectionResult>