Appearance
staff.datafeeds
11 methods on staff.datafeeds. Each returns the answer's data and throws NoviqaError on a failed answer.
list
GET
/admin/v1/datafeedsList 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
401
auth.session_expired: session expired, sign in again403
auth.invalid_terminal: this terminal cannot be used here403
auth.otp_enrol_required: your group requires one-time codes: set them up to continue403
auth.password_change_required: you must change your password first403
forbidden: you do not have access to this action500
internal: something went wrongts
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/datafeedsCreate 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_atstringUTC time, RFC 3339.
enabledbooleanfailures_before_restintegerfailed connections in a row before resting
gateway_loginstringgateway_passwordstringwrite-only: never returned, stored sealed
gateway_serverstringGatewayServer, GatewayLogin and GatewayPassword name a separate connection the module may need; stored like Server/Login/Password, not read yet.
has_gateway_passwordbooleanread-only
has_passwordbooleanread-only
idintegeridle_timeout_secintegerreconnect when the feed stays silent this long
import_symbol_settingsbooleanapply the provider's symbol settings (digits, sizes) on import
loginstringmodulestringone of FeedModules, e.g. fix44
namestringnews_enabledbooleanparamsFeedParam_input[]the module's settings
passwordstringwrite-only: never returned, stored sealed
priorityintegerlower wins when several feeds quote the same symbol
quotes_enabledbooleanreconnect_secintegerwait between connection attempts
rest_secintegerhow long to rest
serverstringhost:port of the provider
symbolsstring[]masks it quotes, in order; ! excludes: Forex\*, !Forex\USDTRY
timeout_secintegerseconds to wait for a connection to answer before giving up
translatesFeedTranslate_input[]our symbol <-> the provider's name, with markup
updated_atstringUTC time, RFC 3339.
versionintegerReturns
Promise<Datafeed>The answer's
data.Errors
400
invalid_input: invalid input401
auth.session_expired: session expired, sign in again403
auth.csrf_invalid: request refused: reload the page and try again403
auth.invalid_terminal: this terminal cannot be used here403
auth.otp_enrol_required: your group requires one-time codes: set them up to continue403
auth.password_change_required: you must change your password first403
forbidden: you do not have access to this action409
conflict: already exists500
internal: something went wrongts
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/modulesList 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
401
auth.session_expired: session expired, sign in again403
auth.invalid_terminal: this terminal cannot be used here403
auth.otp_enrol_required: your group requires one-time codes: set them up to continue403
auth.password_change_required: you must change your password first403
forbidden: you do not have access to this action500
internal: something went wrongts
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/orderReorder 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
400
invalid_input: invalid input401
auth.session_expired: session expired, sign in again403
auth.csrf_invalid: request refused: reload the page and try again403
auth.invalid_terminal: this terminal cannot be used here403
auth.otp_enrol_required: your group requires one-time codes: set them up to continue403
auth.password_change_required: you must change your password first403
forbidden: you do not have access to this action500
internal: something went wrongts
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 · pathrequiredNumeric id.
Returns
Promise<Datafeed>The answer's
data.Errors
400
invalid_input: invalid input401
auth.session_expired: session expired, sign in again403
auth.invalid_terminal: this terminal cannot be used here403
auth.otp_enrol_required: your group requires one-time codes: set them up to continue403
auth.password_change_required: you must change your password first403
forbidden: you do not have access to this action404
not_found: not found500
internal: something went wrongts
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 · pathrequiredNumeric id.
Request body
created_atstringUTC time, RFC 3339.
enabledbooleanfailures_before_restintegerfailed connections in a row before resting
gateway_loginstringgateway_passwordstringwrite-only: never returned, stored sealed
gateway_serverstringGatewayServer, GatewayLogin and GatewayPassword name a separate connection the module may need; stored like Server/Login/Password, not read yet.
has_gateway_passwordbooleanread-only
has_passwordbooleanread-only
idintegeridle_timeout_secintegerreconnect when the feed stays silent this long
import_symbol_settingsbooleanapply the provider's symbol settings (digits, sizes) on import
loginstringmodulestringone of FeedModules, e.g. fix44
namestringnews_enabledbooleanparamsFeedParam_input[]the module's settings
passwordstringwrite-only: never returned, stored sealed
priorityintegerlower wins when several feeds quote the same symbol
quotes_enabledbooleanreconnect_secintegerwait between connection attempts
rest_secintegerhow long to rest
serverstringhost:port of the provider
symbolsstring[]masks it quotes, in order; ! excludes: Forex\*, !Forex\USDTRY
timeout_secintegerseconds to wait for a connection to answer before giving up
translatesFeedTranslate_input[]our symbol <-> the provider's name, with markup
updated_atstringUTC time, RFC 3339.
versionintegerReturns
Promise<Datafeed>The answer's
data.Errors
400
invalid_input: invalid input401
auth.session_expired: session expired, sign in again403
auth.csrf_invalid: request refused: reload the page and try again403
auth.invalid_terminal: this terminal cannot be used here403
auth.otp_enrol_required: your group requires one-time codes: set them up to continue403
auth.password_change_required: you must change your password first403
forbidden: you do not have access to this action404
not_found: not found409
conflict: already exists500
internal: something went wrongts
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 · pathrequiredNumeric id.
Returns
Promise<null>The answer's
data.Errors
400
invalid_input: invalid input401
auth.session_expired: session expired, sign in again403
auth.csrf_invalid: request refused: reload the page and try again403
auth.invalid_terminal: this terminal cannot be used here403
auth.otp_enrol_required: your group requires one-time codes: set them up to continue403
auth.password_change_required: you must change your password first403
forbidden: you do not have access to this action404
not_found: not found500
internal: something went wrongts
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}/activateSwitch 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 · pathrequiredNumeric id.
Request body
enabledbooleanReturns
Promise<Datafeed>The answer's
data.Errors
400
invalid_input: invalid input401
auth.session_expired: session expired, sign in again403
auth.csrf_invalid: request refused: reload the page and try again403
auth.invalid_terminal: this terminal cannot be used here403
auth.otp_enrol_required: your group requires one-time codes: set them up to continue403
auth.password_change_required: you must change your password first403
forbidden: you do not have access to this action404
not_found: not found409
conflict: already exists500
internal: something went wrongts
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}/restartReconnect 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 · pathrequiredNumeric id.
Returns
Promise<Datafeed>The answer's
data.Errors
400
invalid_input: invalid input401
auth.session_expired: session expired, sign in again403
auth.csrf_invalid: request refused: reload the page and try again403
auth.invalid_terminal: this terminal cannot be used here403
auth.otp_enrol_required: your group requires one-time codes: set them up to continue403
auth.password_change_required: you must change your password first403
forbidden: you do not have access to this action404
not_found: not found500
internal: something went wrongts
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}/statusDatafeed 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 · pathrequiredNumeric id.
Returns
Promise<FeedStatus>The answer's
data.Errors
400
invalid_input: invalid input401
auth.session_expired: session expired, sign in again403
auth.invalid_terminal: this terminal cannot be used here403
auth.otp_enrol_required: your group requires one-time codes: set them up to continue403
auth.password_change_required: you must change your password first403
forbidden: you do not have access to this action404
not_found: not found500
internal: something went wrongts
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}/testTest 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 · pathrequiredNumeric id.
Returns
Promise<ConnectionResult>The answer's
data.Errors
400
invalid_input: invalid input401
auth.session_expired: session expired, sign in again403
auth.csrf_invalid: request refused: reload the page and try again403
auth.invalid_terminal: this terminal cannot be used here403
auth.otp_enrol_required: your group requires one-time codes: set them up to continue403
auth.password_change_required: you must change your password first403
forbidden: you do not have access to this action404
not_found: not found500
internal: something went wrongts
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>