From 42dc5f85f0d09f61a03a0ae3305b595f01f370bf Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Mon, 1 Jun 2026 22:31:37 +0200 Subject: [PATCH 1/6] feat(gs): add ALL_TRACES template for generic log queries (#3757) * feat(gs): add ALL_TRACES template for generic log queries Adds a new /gs/debug/logs template that returns all trace entries in the requested time window without a messageFilter. Default limit 500. Self-emitted audit lines from /gs/debug/logs (prefix "[GsService] Log query by ") are filtered at the template level to prevent the audit feedback loop that would otherwise dominate the result for any high-frequency caller (e.g. the upcoming all-logs dashboard view in DFXswiss/services). * refactor(gs): extract LogQueryAuditPrefix to break implicit string contract The TRACES self-filter in the new ALL_TRACES template hardcoded the audit-log prefix emitted by gs.service.executeLogQuery. A refactor of either string would have silently broken the filter. Both sides now reference a shared LogQueryAuditPrefix constant from gs.dto.ts. The new spec verifies that the audit log and the template KQL stay in sync. * docs(gs): note class-name coupling in LogQueryAuditPrefix --- .../generic/gs/__tests__/gs.service.spec.ts | 30 ++++++++++++++++++- src/subdomains/generic/gs/dto/gs.dto.ts | 28 +++++++++++++++++ .../generic/gs/dto/log-query.dto.ts | 1 + src/subdomains/generic/gs/gs.service.ts | 7 +++-- 4 files changed, 63 insertions(+), 3 deletions(-) diff --git a/src/subdomains/generic/gs/__tests__/gs.service.spec.ts b/src/subdomains/generic/gs/__tests__/gs.service.spec.ts index 099248ccf9..331ded6eef 100644 --- a/src/subdomains/generic/gs/__tests__/gs.service.spec.ts +++ b/src/subdomains/generic/gs/__tests__/gs.service.spec.ts @@ -2,7 +2,10 @@ import { BadRequestException } from '@nestjs/common'; import { createMock } from '@golevelup/ts-jest'; import { DataSource } from 'typeorm'; import { AppInsightsQueryService } from 'src/integration/infrastructure/app-insights-query.service'; +import { DfxLogger } from 'src/shared/services/dfx-logger'; import { GsService } from '../gs.service'; +import { DebugLogQueryTemplates, LogQueryAuditPrefix } from '../dto/gs.dto'; +import { LogQueryTemplate } from '../dto/log-query.dto'; import { UserDataService } from '../../user/models/user-data/user-data.service'; import { UserService } from '../../user/models/user/user.service'; import { BuyService } from 'src/subdomains/core/buy-crypto/routes/buy/buy.service'; @@ -27,12 +30,14 @@ import { VirtualIbanService } from 'src/subdomains/supporting/bank/virtual-iban/ describe('GsService', () => { let service: GsService; let dataSource: DataSource; + let appInsightsQueryService: AppInsightsQueryService; beforeEach(() => { dataSource = createMock(); + appInsightsQueryService = createMock(); service = new GsService( - createMock(), + appInsightsQueryService, createMock(), createMock(), createMock(), @@ -192,4 +197,27 @@ describe('GsService', () => { }); }); }); + + describe('LogQueryAuditPrefix sync', () => { + it('ALL_TRACES template excludes the exact audit prefix that gs.service emits', async () => { + const verboseSpy = jest.spyOn(DfxLogger.prototype, 'verbose').mockImplementation(() => undefined); + jest.spyOn(appInsightsQueryService, 'query').mockResolvedValue({ tables: [{ columns: [], rows: [] }] } as never); + + await service.executeLogQuery({ template: LogQueryTemplate.ALL_TRACES, hours: 1 }, '0xtester'); + + // 1) The service emits an audit log that starts with LogQueryAuditPrefix + const emitted = verboseSpy.mock.calls.map((args) => String(args[0])).join('\n'); + expect(emitted).toContain(`${LogQueryAuditPrefix}0xtester`); + expect(emitted.startsWith(LogQueryAuditPrefix)).toBe(true); + + // 2) The ALL_TRACES template KQL excludes lines with that exact prefix + // (after DfxLogger's "[GsService] " class-context prefix). This binds + // service and template via the shared constant — refactoring the + // constant will update both sides at once. + const kql = DebugLogQueryTemplates[LogQueryTemplate.ALL_TRACES].kql; + expect(kql).toContain(`[GsService] ${LogQueryAuditPrefix}`); + + verboseSpy.mockRestore(); + }); + }); }); diff --git a/src/subdomains/generic/gs/dto/gs.dto.ts b/src/subdomains/generic/gs/dto/gs.dto.ts index 62afe96b02..83a819becf 100644 --- a/src/subdomains/generic/gs/dto/gs.dto.ts +++ b/src/subdomains/generic/gs/dto/gs.dto.ts @@ -7,6 +7,18 @@ export const GsRestrictedColumns: Record = { asset: ['ikna'], }; +/** + * Prefix of the verbose audit message emitted by `gs.service.executeLogQuery` + * (`[GsService] Log query by ...`). The ALL_TRACES template excludes lines + * with this prefix to prevent recursive self-match for high-frequency + * callers. Keep service and template in sync via this constant. + * + * Note: the leading `[GsService] ` is prepended by `DfxLogger` from the + * `GsService` class name, not from this constant. Renaming the service + * class would break the KQL filter silently — no test covers that path. + */ +export const LogQueryAuditPrefix = 'Log query by '; + // Debug endpoint export const DebugMaxResults = 10000; export const DebugBlockedSchemas = ['sys', 'information_schema', 'master', 'msdb', 'tempdb', 'pg_catalog', 'pg_toast']; @@ -182,6 +194,22 @@ export const DebugLogQueryTemplates: Record< requiredParams: ['eventName'], defaultLimit: 500, }, + [LogQueryTemplate.ALL_TRACES]: { + // Returns all trace entries in the given window. Self-emitted audit lines + // from /gs/debug/logs (start with "[GsService] " + LogQueryAuditPrefix) + // are filtered out at the source so they don't crowd the result for + // high-frequency dashboard callers. The "[GsService] " prefix is added by + // DfxLogger's class-context; LogQueryAuditPrefix is the message prefix + // emitted by gs.service.executeLogQuery — both sides reference the same + // constant to keep service and template in sync. + kql: `traces +| where timestamp > ago({hours}h) +| where not(message startswith "[GsService] ${LogQueryAuditPrefix}") +| project timestamp, severityLevel, message, operation_Id +| order by timestamp desc`, + requiredParams: [], + defaultLimit: 500, + }, }; // Support endpoint diff --git a/src/subdomains/generic/gs/dto/log-query.dto.ts b/src/subdomains/generic/gs/dto/log-query.dto.ts index 5067f783d4..eaa5e9ef9e 100644 --- a/src/subdomains/generic/gs/dto/log-query.dto.ts +++ b/src/subdomains/generic/gs/dto/log-query.dto.ts @@ -7,6 +7,7 @@ export enum LogQueryTemplate { REQUEST_FAILURES = 'request-failures', DEPENDENCIES_SLOW = 'dependencies-slow', CUSTOM_EVENTS = 'custom-events', + ALL_TRACES = 'all-traces', } export class LogQueryDto { diff --git a/src/subdomains/generic/gs/gs.service.ts b/src/subdomains/generic/gs/gs.service.ts index 8a334dec72..ccf2610590 100644 --- a/src/subdomains/generic/gs/gs.service.ts +++ b/src/subdomains/generic/gs/gs.service.ts @@ -37,6 +37,7 @@ import { DebugMaxResults, GsRestrictedColumns, GsRestrictedMarker, + LogQueryAuditPrefix, SupportTable, } from './dto/gs.dto'; import { LogQueryDto, LogQueryResult } from './dto/log-query.dto'; @@ -285,7 +286,9 @@ export class GsService { kql += `\n| take ${template.defaultLimit}`; // Log for audit - this.logger.verbose(`Log query by ${userIdentifier}: template=${dto.template}, params=${JSON.stringify(dto)}`); + this.logger.verbose( + `${LogQueryAuditPrefix}${userIdentifier}: template=${dto.template}, params=${JSON.stringify(dto)}`, + ); // Execute const timespan = `PT${dto.hours ?? 1}H`; @@ -302,7 +305,7 @@ export class GsService { rows: response.tables[0].rows, }; } catch (e) { - this.logger.info(`Log query by ${userIdentifier} failed: ${e.message}`); + this.logger.info(`${LogQueryAuditPrefix}${userIdentifier} failed: ${e.message}`); throw new BadRequestException('Query execution failed'); } } From 67ca4c9af0262bb714c19c0aad4cc26aa0773e57 Mon Sep 17 00:00:00 2001 From: David May <85513542+davidleomay@users.noreply.github.com> Date: Tue, 2 Jun 2026 12:08:50 +0200 Subject: [PATCH 2/6] feat(monitoring): add pending custody orders to payment monitor (#3808) --- src/shared/repositories/repository.factory.ts | 3 +++ .../core/monitoring/observers/payment.observer.ts | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/src/shared/repositories/repository.factory.ts b/src/shared/repositories/repository.factory.ts index 09961478b8..25e509e336 100644 --- a/src/shared/repositories/repository.factory.ts +++ b/src/shared/repositories/repository.factory.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; import { ExchangeTxRepository } from 'src/integration/exchange/repositories/exchange-tx.repository'; import { BuyCryptoRepository } from 'src/subdomains/core/buy-crypto/process/repositories/buy-crypto.repository'; +import { CustodyOrderRepository } from 'src/subdomains/core/custody/repositories/custody-order.repository'; import { LiquidityManagementOrderRepository } from 'src/subdomains/core/liquidity-management/repositories/liquidity-management-order.repository'; import { LiquidityManagementRuleRepository } from 'src/subdomains/core/liquidity-management/repositories/liquidity-management-rule.repository'; import { PaymentQuoteRepository } from 'src/subdomains/core/payment-link/repositories/payment-quote.repository'; @@ -41,6 +42,7 @@ export class RepositoryFactory { public readonly liquidityOrder: LiquidityOrderRepository; public readonly lmOrder: LiquidityManagementOrderRepository; public readonly lmRule: LiquidityManagementRuleRepository; + public readonly custodyOrder: CustodyOrderRepository; constructor(manager: EntityManager) { this.user = new UserRepository(manager); @@ -62,5 +64,6 @@ export class RepositoryFactory { this.liquidityOrder = new LiquidityOrderRepository(manager); this.lmOrder = new LiquidityManagementOrderRepository(manager); this.lmRule = new LiquidityManagementRuleRepository(manager); + this.custodyOrder = new CustodyOrderRepository(manager); } } diff --git a/src/subdomains/core/monitoring/observers/payment.observer.ts b/src/subdomains/core/monitoring/observers/payment.observer.ts index 74893d1573..eb8a502628 100644 --- a/src/subdomains/core/monitoring/observers/payment.observer.ts +++ b/src/subdomains/core/monitoring/observers/payment.observer.ts @@ -11,6 +11,7 @@ import { BankTxType } from 'src/subdomains/supporting/bank-tx/bank-tx/entities/b import { PayInAction, PayInStatus } from 'src/subdomains/supporting/payin/entities/crypto-input.entity'; import { In, IsNull, LessThan, Not } from 'typeorm'; import { CheckStatus } from '../../aml/enums/check-status.enum'; +import { CustodyIncomingTypes, CustodyOrderStatus } from '../../custody/enums/custody'; import { PaymentQuoteStatus } from '../../payment-link/enums'; import { RewardStatus } from '../../referral/reward/ref-reward.entity'; @@ -24,6 +25,7 @@ interface PaymentData { bankTxGsType: number; refRewardManualCheck: number; stuckPayments: number; + pendingCustodyOrders: number; } interface LastOutputDates { @@ -106,6 +108,10 @@ export class PaymentObserver extends MetricObserver { ), created: LessThan(Util.hoursBefore(3)), }), + pendingCustodyOrders: await this.repos.custodyOrder.countBy({ + status: CustodyOrderStatus.CONFIRMED, + type: Not(In(CustodyIncomingTypes)), + }), }; } From 6e0148417c771d25fdd97fcedf24b6363de20eff Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Tue, 2 Jun 2026 14:12:01 +0200 Subject: [PATCH 3/6] docs: align CONTRIBUTING entity column types with PostgreSQL (#3809) The repo runs on PostgreSQL (src/config/config.ts:218: type: 'postgres'), so the entity examples and rules now match the dialect actually in use: - 'text' for unlimited-length strings (89 occurrences in src/, replacing the previous MSSQL 'length: MAX' idiom which is no longer used) - 'timestamp' for date columns (87 occurrences in src/, replacing the previous MSSQL 'datetime2') --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f082313353..cbea27872a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -581,7 +581,7 @@ export class Recall extends IEntity { @ManyToOne(() => User, { nullable: true }) user?: User; - @Column({ length: 'MAX' }) + @Column({ type: 'text' }) comment: string; @Column({ type: 'float' }) @@ -596,7 +596,8 @@ export class Recall extends IEntity { - Relations via lambda: `@ManyToOne(() => BankTx)` — never strings - `nullable: false` explicit where needed -- `type: 'datetime2'` for date columns +- `type: 'timestamp'` for date columns +- `type: 'text'` for unlimited-length string columns - `eager: false` is the default — don't annotate it - Use `eager: true` sparingly — explicit relation loading is preferred - Column length always specified @@ -610,7 +611,7 @@ export class Recall extends IEntity { Use the getter/setter pattern for JSON data in columns: ```typescript -@Column({ length: 'MAX', nullable: true }) +@Column({ type: 'text', nullable: true }) indicators?: string; // JSON string get indicatorCodes(): string[] { From 76fcba818af60d802e33b18ac2662912750b385f Mon Sep 17 00:00:00 2001 From: Yannick <52333989+Yannick1712@users.noreply.github.com> Date: Tue, 2 Jun 2026 14:56:45 +0200 Subject: [PATCH 4/6] [NOTASK] KycSteps ident review required (#3706) * [NOTASK] KycSteps ident review required * [NOTASK] Refactoring * [NOTASK] Renaming --- .../generic/kyc/entities/kyc-step.entity.ts | 8 ++++- .../generic/kyc/enums/kyc-step-name.enum.ts | 9 +++++ .../generic/kyc/services/kyc.service.ts | 33 +++++++++++++++---- 3 files changed, 43 insertions(+), 7 deletions(-) diff --git a/src/subdomains/generic/kyc/entities/kyc-step.entity.ts b/src/subdomains/generic/kyc/entities/kyc-step.entity.ts index f1012c66e8..8f96031946 100644 --- a/src/subdomains/generic/kyc/entities/kyc-step.entity.ts +++ b/src/subdomains/generic/kyc/entities/kyc-step.entity.ts @@ -9,7 +9,7 @@ import { IdNowResult } from '../dto/ident-result.dto'; import { ManualIdentResult } from '../dto/manual-ident-result.dto'; import { KycSessionInfoDto } from '../dto/output/kyc-info.dto'; import { IdDocTypeMap, ReviewAnswer, SumsubResult } from '../dto/sum-sub.dto'; -import { KycStepName } from '../enums/kyc-step-name.enum'; +import { KycStepIdentRequiredForReview, KycStepName } from '../enums/kyc-step-name.enum'; import { KycStepType, UrlType } from '../enums/kyc.enum'; import { ReviewStatus } from '../enums/review-status.enum'; import { SumsubService } from '../services/integration/sum-sub.service'; @@ -369,6 +369,12 @@ export class KycStep extends IEntity { return [this.comment, comment].filter((c) => c).join(';'); } + reviewStatusForIdentLevel(fallback: ReviewStatus): ReviewStatus { + return KycStepIdentRequiredForReview.includes(this.name) && this.userData.kycLevel < KycLevel.LEVEL_30 + ? ReviewStatus.INTERNAL_REVIEW + : fallback; + } + get resultData(): IdentResultData { if (!this.result) return undefined; diff --git a/src/subdomains/generic/kyc/enums/kyc-step-name.enum.ts b/src/subdomains/generic/kyc/enums/kyc-step-name.enum.ts index 60d66627eb..b73949613d 100644 --- a/src/subdomains/generic/kyc/enums/kyc-step-name.enum.ts +++ b/src/subdomains/generic/kyc/enums/kyc-step-name.enum.ts @@ -31,6 +31,15 @@ export enum KycStepName { } export const KycStepCancelable = [KycStepName.ADDRESS_CHANGE, KycStepName.PHONE_CHANGE, KycStepName.NAME_CHANGE]; +export const KycStepIdentRequiredForReview = [ + KycStepName.LEGAL_ENTITY, + KycStepName.SOLE_PROPRIETORSHIP_CONFIRMATION, + KycStepName.AUTHORITY, + KycStepName.OWNER_DIRECTORY, + KycStepName.SIGNATORY_POWER, + KycStepName.BENEFICIAL_OWNER, + KycStepName.OPERATIONAL_ACTIVITY, +]; export const KycStepRepeatable = [ KycStepName.ADDRESS_CHANGE, KycStepName.PHONE_CHANGE, diff --git a/src/subdomains/generic/kyc/services/kyc.service.ts b/src/subdomains/generic/kyc/services/kyc.service.ts index 4b154a6d69..416440611d 100644 --- a/src/subdomains/generic/kyc/services/kyc.service.ts +++ b/src/subdomains/generic/kyc/services/kyc.service.ts @@ -81,7 +81,7 @@ import { import { KycStep, KycStepResult } from '../entities/kyc-step.entity'; import { ContentType } from '../enums/content-type.enum'; import { FileCategory } from '../enums/file-category.enum'; -import { KycStepCancelable, KycStepName } from '../enums/kyc-step-name.enum'; +import { KycStepCancelable, KycStepIdentRequiredForReview, KycStepName } from '../enums/kyc-step-name.enum'; import { KycLogType, KycStepType, getIdentificationType, requiredKycSteps } from '../enums/kyc.enum'; import { ReviewStatus } from '../enums/review-status.enum'; import { KycStepRepository } from '../repositories/kyc-step.repository'; @@ -624,7 +624,7 @@ export class KycService { await this.userDataService.updateUserDataInternal(user, data); - return this.updateKycStepAndLog(kycStep, user, data, reviewStatus); + return this.updateKycStepAndLog(kycStep, user, data, kycStep.reviewStatusForIdentLevel(reviewStatus)); } async updateNationalityStep(kycHash: string, stepId: number, data: KycNationalityData): Promise { @@ -673,14 +673,14 @@ export class KycService { allBeneficialOwnersDomicile: allBeneficialOwnersDomicile.join('\n'), }); - return this.updateKycStepAndLog(kycStep, user, data, ReviewStatus.MANUAL_REVIEW); + return this.updateKycStepAndLog(kycStep, user, data, kycStep.reviewStatusForIdentLevel(ReviewStatus.MANUAL_REVIEW)); } async updateOperationActivityData(kycHash: string, stepId: number, data: KycOperationalData): Promise { const user = await this.getUser(kycHash); const kycStep = user.getPendingStepOrThrow(stepId, KycStepName.OPERATIONAL_ACTIVITY); - return this.updateKycStepAndLog(kycStep, user, data, ReviewStatus.MANUAL_REVIEW); + return this.updateKycStepAndLog(kycStep, user, data, kycStep.reviewStatusForIdentLevel(ReviewStatus.MANUAL_REVIEW)); } async updateRecommendationData(kycHash: string, stepId: number, data: KycRecommendationData) { @@ -720,7 +720,11 @@ export class KycService { kycStep, ); - await this.kycStepRepo.update(...kycStep.manualReview(undefined, urlAsJson ? { url } : url)); + const result = urlAsJson ? { url } : url; + + await this.kycStepRepo.update( + ...kycStep.update(kycStep.reviewStatusForIdentLevel(ReviewStatus.MANUAL_REVIEW), result), + ); await this.createStepLog(user, kycStep); await this.updateProgress(user, false); @@ -743,7 +747,13 @@ export class KycService { kycStep, ); - await this.kycStepRepo.update(...kycStep.manualReview(undefined, { url, legalEntity: data.legalEntity })); + const result = { url, legalEntity: data.legalEntity }; + + await this.kycStepRepo.update( + ...(KycStepIdentRequiredForReview.includes(KycStepName.LEGAL_ENTITY) && user.kycLevel < 30 + ? kycStep.internalReview(result) + : kycStep.manualReview(undefined, result)), + ); await this.createStepLog(user, kycStep); await this.updateProgress(user, false); @@ -1498,6 +1508,17 @@ export class KycService { nationality, }); + if (userData.kycLevel >= KycLevel.LEVEL_30) { + await this.kycStepRepo.update( + { + name: In(KycStepIdentRequiredForReview), + status: ReviewStatus.INTERNAL_REVIEW, + userData: { id: kycStep.userData.id }, + }, + { status: ReviewStatus.MANUAL_REVIEW }, + ); + } + if (kycStep.isValidCreatingBankData && !DisabledProcess(Process.AUTO_CREATE_BANK_DATA)) await this.bankDataService.createBankDataInternal(kycStep.userData, { name: kycStep.userName, From c592538afc71f7f62a3c7e0430875c001bab813e Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Tue, 2 Jun 2026 16:27:46 +0200 Subject: [PATCH 5/6] feat(dashboard): restrict financial log queries to valid rows (#3796) * feat(dashboard): restrict financial log queries to valid rows Filter getLatestFinancialLog and getFinancialLogs (both daily-sample and full branches) to rows with valid = true. The financial log writer flags a row as valid when the total-balance delta to the previous log is within the configured limit, so the financial-overview charts now skip spike/glitch snapshots. * fix(dashboard): keep getLatestFinancialLog unfiltered The latest-balance endpoint feeds the Total/Plus/Minus/Timestamp cards on the financial-overview screen, which must always reflect the newest log entry regardless of valid. Restrict the valid = true filter to getFinancialLogs (long time-series chart) only. * docs(log): note numeric vs chart filtering convention --- src/subdomains/supporting/log/log.repository.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/subdomains/supporting/log/log.repository.ts b/src/subdomains/supporting/log/log.repository.ts index ae63fcd63a..de1d9eba49 100644 --- a/src/subdomains/supporting/log/log.repository.ts +++ b/src/subdomains/supporting/log/log.repository.ts @@ -52,6 +52,7 @@ export class LogRepository extends BaseRepository { }); } + // Unfiltered: exposes the exact newest snapshot for numeric balance displays. async getLatestFinancialLog(): Promise { return this.findOne({ where: { system: 'LogService', subsystem: 'FinancialDataLog', severity: LogSeverity.INFO }, @@ -100,6 +101,7 @@ export class LogRepository extends BaseRepository { return this.find({ where, order: { created: 'ASC' } }); } + // Filters valid = true so chart series skip spike/glitch snapshots; use getLatestFinancialLog for exact numeric values. async getFinancialLogs(from?: Date, dailySample?: boolean): Promise { if (dailySample) { const subQuery = this.createQueryBuilder('subLog') @@ -107,6 +109,7 @@ export class LogRepository extends BaseRepository { .where('subLog.system = :system', { system: 'LogService' }) .andWhere('subLog.subsystem = :subsystem', { subsystem: 'FinancialDataLog' }) .andWhere('subLog.severity = :severity', { severity: LogSeverity.INFO }) + .andWhere('subLog.valid = :valid', { valid: true }) .groupBy('CAST(subLog.created AS DATE)'); let query = this.createQueryBuilder('log') @@ -125,6 +128,7 @@ export class LogRepository extends BaseRepository { system: 'LogService', subsystem: 'FinancialDataLog', severity: LogSeverity.INFO, + valid: true, }; if (from) { From 26c8495796ca33cf7b33fc05e2f0b7b42eb1766e Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Tue, 2 Jun 2026 16:29:10 +0200 Subject: [PATCH 6/6] docs(scrypt): check in vendor AsyncAPI spec as reference (#3737) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs(scrypt): check in vendor AsyncAPI spec as reference The Scrypt integration is built against a non-public WebSocket API that sits behind HTTP Basic Auth at doc.client.scrypt.swiss. Add the rendered AsyncAPI 3.0 spec to src/integration/exchange/docs/ so the spec is discoverable next to the integration code and survives without depending on continued access to the vendor portal. The README captures source URL, fetch date, refresh procedure, and the three non-obvious facts that drive integration choices: Fee="0" defaults, AvgPx exclusion of fees, and RFQ TradedPx all-in semantics. * docs(scrypt): add FIX API PDF + document FIX/WebSocket divergences Companion to the AsyncAPI WebSocket spec. The FIX API documents features that are not exposed (or not documented) over WebSocket — notably: - OrdType A = LimitAllIn, where the LIMIT price already includes fees. If Scrypt accepts this over WebSocket too, it is the cleanest way to bound implicit commission cost. - CumFee (Tag 4016) in ExecutionReport — cumulative fee tracked server-side. - DecisionStatus (Tag 20032) for staged-order lifecycle. - CancelOnDisconnect (Tag 20030) auto-cancel semantics. - Order State Change Matrices (Filled / Canceled / Replace-to-increase / Replace-during-fill). Also enumerate known FIX-vs-WebSocket divergences in OrdType, ExecType, and OrdRejReason enums so future contributors don't assume cross-protocol parity. PDF source URL kept in the README for re-fetch; the PDF itself is publicly hosted, no auth needed. --- src/integration/exchange/docs/README.md | 62 + .../exchange/docs/scrypt-asyncapi.yaml | 3791 +++++++++++++++++ .../exchange/docs/scrypt-fix-api.pdf | Bin 0 -> 208864 bytes 3 files changed, 3853 insertions(+) create mode 100644 src/integration/exchange/docs/README.md create mode 100644 src/integration/exchange/docs/scrypt-asyncapi.yaml create mode 100644 src/integration/exchange/docs/scrypt-fix-api.pdf diff --git a/src/integration/exchange/docs/README.md b/src/integration/exchange/docs/README.md new file mode 100644 index 0000000000..2c728fa445 --- /dev/null +++ b/src/integration/exchange/docs/README.md @@ -0,0 +1,62 @@ +# Exchange API references + +Vendor-supplied API specifications for the exchanges integrated under +`src/integration/exchange/`. Kept in-repo so the Scrypt integration code +(`scrypt.service.ts`, `scrypt-websocket-connection.ts`, `scrypt.dto.ts`, +`scrypt.adapter.ts`) can be cross-referenced against the authoritative +schema without leaving the codebase. + +## Scrypt + +| File | Source | Title | Version | +|---|---|---|---| +| `scrypt-asyncapi.yaml` | `https://doc.client.scrypt.swiss/v1/client/customer/documentation/docs/public` | Scrypt WebSocket API | `1.0.0` (AsyncAPI 3.0.0) | +| `scrypt-fix-api.pdf` | `https://uploads-ssl.webflow.com/65b7df67f3cf496d06acb907/65d77e3e7a09868617766110_Scrypt%20FIX%20API.pdf` | Scrypt FIX API | FIX.4.4 | + +**Fetched:** 2026-05-21. The live specs are the source of truth — refresh the +checked-in copies by re-downloading from the URLs above (HTTP Basic Auth +credentials for `doc.client.scrypt.swiss` are stored in Vaultwarden under +the Scrypt entry; the FIX PDF is publicly accessible). + +**Endpoints:** + +- Sandbox WebSocket: `wss://demo.scrypt.swiss/ws/v1` +- Production WebSocket: `wss://otc.scrypt.swiss/ws/v1` +- FIX: hostname/port provided by Scrypt during onboarding + +### Key facts that drive integration choices + +- `Fee` field on `Trade` and `LastFee` on `ExecutionReport` are populated by + the venue, but in practice come back as `"0"` for our Limit orders — Scrypt's + commission is embedded in the quoted bid/ask spread (see Scrypt FAQ: *"The + price you see is what you get"*). Implication: the implicit cost is not + observable from `Fee` alone, only from the spread between Scrypt's + executable price and an independent reference. `exchange-tx.service.ts` + reflects this by computing `calculateSpreadFee` against `pricingService`. +- `AvgPx` doc string explicitly says *"Does not include fees"* — confirming + that for non-RFQ orders, Fee is meant to be a separate field even when + the venue defaults it to zero. +- For `OrdType: RFQ`, `TradedPx` is described as *"all-in price that + includes fees"* — different semantics from Limit/Market, so any future + RFQ integration needs its own pricing logic. +- **FIX-only `OrdType: A = LimitAllIn`** (FIX PDF, "New Order Single" + section, Tag 40): *"requested price/size includes fees"*. This is **not + in the AsyncAPI/WebSocket spec** — needs sandbox verification before + attempting to use it over WebSocket. +- Onboarding for new API keys: email `trade@scrypt.swiss`. There is no + public fee schedule endpoint. + +### FIX vs WebSocket — known divergences + +The two protocols expose overlapping but **not identical** surfaces. When +extending integration code, do not assume FIX semantics carry over verbatim. + +| Surface | FIX | WebSocket (AsyncAPI) | +|---|---|---| +| `OrdType` values | `1=Market, 2=Limit, A=LimitAllIn` | `Market, Limit, RFQ` (no `LimitAllIn`) | +| `ExecType` extra values (vs FIX baseline) | — | `CancelRejected, ReplaceRejected, Restated, PendingResume, Resumed, PendingPause, Paused, Triggered, Started` | +| `OrdRejReason` enum | Numeric, FIX-standard codes | Named string enum, includes Scrypt-extensions (`ImmediateOrderDidNotCross`, `PostOnlyOrderWouldCross`, `QuoteExpired`, …) | +| `CumFee` (cumulative fee in `FeeCurrency`) | Tag 4016 on ExecutionReport | Surfaced via `LastFee` + cumulative tracking client-side | +| `DecisionStatus` (staged-order lifecycle) | Tag 20032 (Active/Paused/PendingPause/…) | Not exposed | +| `CancelOnDisconnect` | Tag 20030, default Y | Not applicable (subscription-based session) | +| Order State Change Matrices | Included in FIX PDF (Filled / Canceled / Replace-to-increase / Replace-during-fill) | Not documented; infer from ExecType + OrdStatus | diff --git a/src/integration/exchange/docs/scrypt-asyncapi.yaml b/src/integration/exchange/docs/scrypt-asyncapi.yaml new file mode 100644 index 0000000000..447c6958d3 --- /dev/null +++ b/src/integration/exchange/docs/scrypt-asyncapi.yaml @@ -0,0 +1,3791 @@ +asyncapi: 3.0.0 +id: 'urn:uuid:2e6c3c9a-5685-11ee-8c99-0242ac120002' +info: + title: Scrypt WebSocket API + version: 1.0.0 + x-logo: /scrypt-logo-dark.svg + x-download-name: scrypt-api.asyncapi.yaml + description: > + The websocket API provides the user with access to real-time market data subscription, + orders execution and balance information. + + ## API Keys + + If you do not have an API key and a signature assigned, you will need to obtain them first. You can do so by using the following method. + + Email Scrypt support staff at: [trade@scrypt.swiss](mailto:trade@scrypt.swiss) + + You will need separate API Keys for connecting to the sandbox and production environments. + + ## Rate Limits + + There is no limit to how many concurrent websocket connections you're allowed, though this may change in the future. + If you expect to have more than ~10 active connections, please contact [trade@scrypt.swiss](mailto:trade@scrypt.swiss). + + ## General Notes + + - Timestamps: In all API requests, the user has the option to + provide a timestamp (ts) in an ISO-8601 UTC string format with + microsecond resolution. While optional, we recommend taking + advantage of this field, as it will both enable our system to + monitor client-server latency and allow certain security features. + + - All system responses are tied to a specific client request. The + user should provide a unique reqid (Request ID) on each request, + and the system will echo this reqid on the corresponding + responses. + contact: + name: SCRYPT Support + url: 'https://scrypt.swiss' + email: info@scrypt.swiss + license: + name: Proprietary + tags: + - name: Protocol + - name: Security Master + - name: Market Data + - name: Orders + - name: Post Trade + - name: RFQ + - name: Balances and Credit + - name: User Administration + - name: Servers +defaultContentType: application/json +x-fix-api: + url: https://uploads-ssl.webflow.com/65b7df67f3cf496d06acb907/65d77e3e7a09868617766110_Scrypt%20FIX%20API.pdf +servers: + Production: + host: otc.scrypt.swiss + pathname: /ws/v1 + protocol: wss + description: Production WebSocket endpoint + security: + - $ref: '#/components/securitySchemes/ApiKey' + - $ref: '#/components/securitySchemes/ApiTimestamp' + - $ref: '#/components/securitySchemes/ApiSign' + tags: + - name: Servers + Sandbox: + host: demo.scrypt.swiss + pathname: /ws/v1 + protocol: wss + description: Sandbox WebSocket endpoint + security: + - $ref: '#/components/securitySchemes/ApiKey' + - $ref: '#/components/securitySchemes/ApiTimestamp' + - $ref: '#/components/securitySchemes/ApiSign' + tags: + - name: Servers +x-auth-examples: + - name: WS + language: Python + code: | + ```python + # to install websocket lib: + # $ pip install websocket-client + from websocket import create_connection + import datetime + import hmac + import hashlib + import base64 + + api_key = "" + api_secret = "" + utc_now = datetime.datetime.utcnow() + utc_datetime = utc_now.strftime("%Y-%m-%dT%H:%M:%S.000000Z") + + host = "" # demo.scrypt.swiss, for example + path = "/ws/v1" + params = "\n".join([ + "GET", + utc_datetime, + host, + path, + ]) + hash = hmac.new( + api_secret.encode('ascii'), params.encode('ascii'), hashlib.sha256) + hash.hexdigest() + signature = base64.urlsafe_b64encode(hash.digest()).decode() + header = { + "ApiKey": api_key, + "ApiSign": signature, + "ApiTimestamp": utc_datetime, + } + + ws = create_connection("wss://" + host + path, header=header) + + while True: + print(ws.recv()) + ``` + - name: REST + language: Python + code: | + ```python + # to install requests lib: + # $ pip install requests + import requests + import datetime + import hmac + import hashlib + import base64 + + api_key = "" + api_secret = "" + utc_now = datetime.datetime.utcnow() + utc_datetime = utc_now.strftime("%Y-%m-%dT%H:%M:%S.000000Z") + + host = "" # demo.scrypt.swiss, for example + path = "/v1" + query = "" + body = "" + + params = [ + "GET", + utc_datetime, + host, + path, + ] + endpoint = "https://" + host + path + if query: + endpoint += "?" + query + params.append(query) + if body: + params.append(body) + + payload = "\n".join(params) + hashvalue = hmac.new( + api_secret.encode('ascii'), payload.encode('ascii'), hashlib.sha256) + hashvalue.hexdigest() + signature = base64.urlsafe_b64encode(hashvalue.digest()).decode() + headers = { + "ApiKey": api_key, + "ApiSign": signature, + "ApiTimestamp": utc_datetime, + } + + print(requests.get(url=endpoint, headers=headers)) + ``` +channels: + hello: + address: hello + messages: + helloEventMsg: + name: Hello + payload: + $ref: '#/components/schemas/HelloEvent' + examples: + - name: Hello + payload: + type: hello + ts: "2019-10-16T10:41:23.168807Z" + session_id: "1109RQ13KXR00" + subscribe: + address: subscribe + messages: + subscribeMessage: + name: Subscribe + payload: + type: object + required: + - reqid + - ts + - type + - streams + properties: + reqid: + type: integer + description: > + A number that identifies this request and will be included on responses to this request. +
reqid cannot be equal to 0.
+ type: + type: string + enum: [subscribe] + description: '"subscribe" for initializing a subscription' + tag: + type: string + description: Optional user generated tag to attach to stream data + ts: + type: string + format: date-time + description: An ISO-8601 UTC string of the form 2019-02-13T05:17:32.000000Z + streams: + $ref: '#/components/schemas/AllStreams' + examples: + - name: Subscribe + payload: + reqid: 1 + type: subscribe + tag: "my-tag" + streams: + - name: MessageType + Arg1: 1 + ts: "2019-02-13T05:17:32.000000Z" + amend: + address: amend + messages: + amendMessage: + name: Amend + payload: + type: object + required: + - reqid + - type + - tag + - streams + additionalProperties: false + properties: + reqid: + type: integer + description: Request ID - will be echoed back in the response structure + type: + type: string + enum: [amend] + description: '"amend" for amending a subscription' + tag: + type: string + description: Optional user generated tag to attach to stream data + streams: + type: array + items: + oneOf: + - $ref: '#/components/schemas/MarketDataSnapshotSubscription' + - $ref: '#/components/schemas/BalanceSubscription' + - $ref: '#/components/schemas/SecuritySubscription' + - $ref: '#/components/schemas/CurrencySubscription' + - $ref: '#/components/schemas/CurrencyConversionSubscription' + - $ref: '#/components/schemas/OrderSubscription' + - $ref: '#/components/schemas/ExecutionReportSubscription' + - $ref: '#/components/schemas/TradeSubscription' + - $ref: '#/components/schemas/QuoteSubscription' + - $ref: '#/components/schemas/ExposureSubscription' + - $ref: '#/components/schemas/BalanceTransactionSubscription' + - $ref: '#/components/schemas/UserSubscription' + description: Streams to subscribe to + examples: + - name: Amend + payload: + reqid: 1 + type: amend + ts: "2019-02-13T05:17:32.000000Z" + streams: + - name: Security + page: + address: page + messages: + pageMessage: + name: Page + payload: + type: object + required: + - reqid + - type + - data + properties: + reqid: + type: integer + description: The request ID to continue the page, must match the original request ID + type: + type: string + enum: [page] + description: '"page" for continuing the paged stream' + data: + type: array + items: + type: object + required: + - name + - after + properties: + name: + type: string + description: Subscription name to continue the page + after: + type: string + description: Delivered `next` value from the paged stream payload + description: Stream request data to continue + examples: + - name: Page + payload: + reqid: 1 + type: page + data: + - name: Security + after: abcdefg + cancel: + address: cancel + messages: + cancelMessage: + name: Cancel + payload: + type: object + required: + - reqid + - type + properties: + reqid: + type: integer + description: Request ID to cancel + type: + type: string + enum: [cancel] + description: '"cancel" for cancelling the subscription' + examples: + - name: Cancel + payload: + reqid: 1 + type: cancel + Security: + address: Security + messages: + securityEventMsg: + name: SecurityEvent + payload: + allOf: + - $ref: '#/components/schemas/BaseResponse' + - type: object + $id: 'SecurityEvent' + required: [type, data] + properties: + type: + type: string + enum: [Security] + data: + type: array + items: + $ref: '#/components/schemas/SecurityEvent' + examples: + - name: SecurityEvent + payload: + reqid: 2 + type: Security + ts: "2021-09-14T22:11:47.512168Z" + initial: true + seqNum: 1 + data: + - Timestamp: "2021-09-14T22:11:47.512168Z" + UpdateAction: Update + SecurityID: 2 + Symbol: ETH-USD + MinPriceIncrement: "0.01" + MinSizeIncrement: "0.00000001" + MinAmtIncrement: "0.01" + MinimumSize: "0.00000001" + MaximumSize: "10000000" + QuoteCurrency: "USD" + BaseCurrency: "ETH" + DefaultPriceIncrement: "0.01" + DefaultSizeIncrement: "0.0001" + PriceDisplaySpec: "M.m" + SizeDisplaySpec: "M.m" + NormalSize: "2" + ProductType: "Spot" + PositionCurrency: "ETH" + SettlementCurrency: "USD" + NotionalMultiplier: "1" + SizeBuckets: + - Size: "0" + DisplaySymbol: "ETH-USD" + Description: "Ethereum/U.S. Dollar" + Currency: + address: Currency + messages: + currencyEventMsg: + name: CurrencyEvent + payload: + allOf: + - $ref: '#/components/schemas/BaseResponse' + - type: object + $id: 'CurrencyEvent' + required: [type, data] + properties: + type: + type: string + enum: [Currency] + data: + type: array + items: + $ref: '#/components/schemas/CurrencyEvent' + examples: + - name: CurrencyEvent + payload: + reqid: 2 + type: Currency + ts: "2021-09-14T22:11:47.512168Z" + initial: true + seqNum: 1 + data: + - Timestamp: "2021-09-14T22:11:47.512168Z" + UpdateAction: Update + CurrencyID: 2 + Symbol: USD + MinIncrement: "0.01" + DefaultIncrement: "0.01" + Description: "U.S. Dollar" + - Timestamp: "2021-09-14T22:11:47.512168Z" + UpdateAction: Update + CurrencyID: 17 + Symbol: ETH + MinIncrement: "0.00000001" + DefaultIncrement: "0.0001" + Description: "Ethereum" + MarketDataSnapshot: + address: MarketDataSnapshot + messages: + marketDataSnapshotEventMsg: + name: MarketDataSnapshotEvent + payload: + allOf: + - $ref: '#/components/schemas/BaseResponse' + - type: object + $id: 'MarketDataSnapshotEvent' + required: [type, data] + properties: + type: + type: string + enum: [MarketDataSnapshot] + data: + type: array + items: + $ref: '#/components/schemas/MarketDataSnapshotEvent' + examples: + - name: MarketDataSnapshotEvent + payload: + reqid: 2 + type: MarketDataSnapshot + ts: "2021-09-14T22:20:49.862930Z" + initial: true + seqNum: 1 + data: + - Timestamp: "2021-09-14T22:20:49.862930Z" + Symbol: "BTC-USD" + Status: "Online" + Bids: + - Price: "46817.27965000" + Size: "1.00000000" + - Price: "46816.08025000" + Size: "2.00000000" + Offers: + - Price: "46868.59755873" + Size: "1.00000000" + - Price: "46870.33345500" + Size: "2.00000000" + Balance: + address: Balance + messages: + balanceEventMsg: + name: BalanceEvent + payload: + allOf: + - $ref: '#/components/schemas/BaseResponse' + - name: BalancePayload + type: object + $id: 'BalanceEvent' + required: [type, data] + properties: + type: + type: string + enum: [Balance] + data: + type: array + items: + $ref: '#/components/schemas/BalanceEvent' + examples: + - name: BalanceEvent + payload: + reqid: 11 + type: Balance + ts: "2021-09-16T16:17:06.892914Z" + initial: true + seqNum: 1 + data: + - Currency: "USD" + Amount: "-1928479.77953598" + AvailableAmount: "-1928479.77953598" + Equivalent: + Currency: "USD" + Amount: "-1928479.78" + AvailableAmount: "-1928479.78" + - Currency: "BTC" + Amount: "40.15480673" + AvailableAmount: "40.15480673" + Equivalent: + Currency: "USD" + Amount: "1930241.56" + AvailableAmount: "1930241.56" + - Currency: "ETH" + Amount: "11.00000000" + AvailableAmount: "11.00000000" + Equivalent: + Currency: "USD" + Amount: "39753.78" + AvailableAmount: "39753.78" + - Currency: "BCH" + Amount: "23.68787010" + AvailableAmount: "23.68787010" + Equivalent: + Currency: "USD" + Amount: "15066.67" + AvailableAmount: "15066.67" + - Currency: "ADA" + Amount: "10330.26832917" + AvailableAmount: "10330.26832917" + Equivalent: + Currency: "USD" + Amount: "25340.27" + AvailableAmount: "25340.27" + CurrencyConversion: + address: CurrencyConversion + messages: + currencyConversionEventMsg: + name: CurrencyConversionEvent + payload: + allOf: + - $ref: '#/components/schemas/BaseResponse' + - type: object + $id: 'CurrencyConversionEvent' + required: [type, data] + properties: + type: + type: string + enum: [CurrencyConversion] + data: + type: array + items: + $ref: '#/components/schemas/CurrencyConversionEvent' + examples: + - name: CurrencyConversionEvent + payload: + reqid: 4 + type: CurrencyConversion + ts: "2021-09-14T22:16:18.604996Z" + initial: true + seqNum: 1 + data: + - Timestamp: "2021-09-14T22:16:18.604674Z" + EquivalentCurrency: "USD" + Currency: "ETH" + Rate: "3368.16" + Status: "Online" + ConversionPath: "(ETH-USD)" + - Timestamp: "2021-09-14T22:16:18.604674Z" + EquivalentCurrency: "USD" + Currency: "BTC" + Rate: "46841.35" + Status: "Online" + ConversionPath: "(BTC-USD)" + - Timestamp: "2021-09-14T22:16:18.604674Z" + EquivalentCurrency: "USD" + Currency: "BCH-USD" + Rate: "639.530000000000" + Status: "Online" + ConversionPath: "(BCH-USD)" + Order: + address: Order + description: > + ## Orders + + This section outlines how to send orders using the Scrypt API. To send orders, first subscribe to the [ExecutionReport](#api-operation-receive-ExecutionReport) stream. All order responses and updates are sent as [ExecutionReport](#api-operation-receive-ExecutionReport)'s. Send requests with the [NewOrderSingle](#api-operation-send-NewOrderSingle), [OrderCancelRequest](#api-operation-send-OrderCancelRequest), [OrderCancelReplaceRequest](#api-operation-send-OrderCancelReplaceRequest), and [OrderControlRequest](#api-operation-send-OrderControlRequest) messages. + + A typical trading strategy would do the following: + + 1. Subscribe to `MarketDataSnapshot` for the relevant securities + 2. Subscribe to `ExecutionReport` with `StartDate` of the `Timestamp` of the last `ExecutionReport` processed to recover order state + 3. Subscribe to `Trade` with `StartDate` of the `Timestamp` of the last `Trade` processed to recover any missed trades + 4. Maintain a map of (`OrderID`, last received `ExecutionReport`) for open orders + 5. Maintain a set of `ClOrdID` for each pending request + 6. To submit an order, first generate a new `ClOrdID`. Send a `NewOrderSingle` specifying the `ClOrdID`, `Side`, `Price`, `OrderQty`, `Strategy`, etc. for that request + 7. The response for the request will be received on the `ExecutionReport` stream with the `ClOrdID` being the `ClOrdID` specified on the `NewOrderSingle`. If the order is accepted (`ExecType=PendingNew`), then add this order to the set of open orders + 8. To cancel or modify the open order, generate a new `ClOrdID` and send an `OrderCancelRequest` or `OrderCancelReplaceRequest` specifying the `ClOrdID`, `OrigClOrdID` from the previous successful request, and remaining parameters + 9. Fills will be received as `ExecutionReport` with `ExecType=Trade` + +
+ To generate a ClOrdID, we recommend using a UUID4 or another globally unique identifier. ClOrdID must be unique daily and among an y open order and must be less than 36 characters. +
+ +
+ The orders API roughly follows the same semantics as the FIX Protocol, though with some notable differences, see Order State Change Matrices for more details. +
+ + + ## Supported Order Strategies + + ### SteadyPace + + A schedule-based algorithm that divides an order into suborders (clips) and submits them at equal, user defined intervals. + + #### SteadyPace Parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeRequiredDescription
ClipSizeQtyY + A quantity (subset of the total order size) to send on each + execution of the schedule. +
ClipIntervalstringY + Time interval between individual clips specified as an interval + string. +
StartTimestringN + Time at which this order will activate and begin sending orders. + An ISO-8601 UTC string of the form + 2019-02-13T05:17:32.000000Z +
EndTimestringN + Optional expire time for the order. An ISO-8601 UTC string of + the form 2019-02-13T05:17:32.000000Z +
VariancedecimalNOptional degree of randomization for clip sizes.
+ +
+ An interval or duration string is a possibly signed sequence of + decimal numbers, each with optional fraction and a unit suffix, such + as 300ms or 2h45m. Valid time units are + ns, us (or Вµs), + ms, s, m, h. +
+ +
+ A variance of 0.1 (implying a variance of + 10%) for a clip size of 1.0 would result in + clips ranging between 0.9 and 1.1. +
+ + + ### StopLimit + + This strategy will only place the order once the specified stop price + has been met. For a Buy StopLimit order, the stop price must be + *above* the current market price. For a Sell StopLimit order, + the stop price must be *below* the current market price. + + #### StopLimit Parameters + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeRequiredDescription
TriggerPricePriceY + The price that must be met to trigger execution of the order + with the configured limit price. +
EndTimestringN + Optional expire time for the order. An ISO-8601 UTC string of + the form 2019-02-13T05:17:32.000000Z +
+ messages: + orderEventMsg: + name: OrderEvent + payload: + allOf: + - $ref: '#/components/schemas/BaseResponse' + - type: object + $id: 'OrderEvent' + required: [type, data] + properties: + type: + type: string + enum: [Order] + data: + type: array + items: + $ref: '#/components/schemas/OrderEvent' + examples: + - name: OrderEvent + payload: + reqid: 7 + type: Order + ts: "2021-09-14T22:26:44.518538Z" + initial: false + seqNum: 3 + data: + - Timestamp: "2021-09-14T22:26:44.505519Z" + Symbol: "BTC-USD" + OrderID: "b35b1c3b-a304-4224-919f-9db1319de188" + ClOrdID: "d7635e40-15aa-11ec-b0a2-2554a9e1e7a4" + SubmitTime: "2021-09-14T22:26:44.457050Z" + ExecID: "c73fcf77-aaa1-46e7-9260-f625d6416646" + Side: "Buy" + ExecType: "New" + OrdStatus: "New" + OrderQty: "0.10000000" + OrdType: "Market" + Currency: "BTC" + LeavesQty: "0.10000000" + CumQty: "0" + AvgPx: "0" + TimeInForce: "FillOrKill" + LastPx: "0" + LastQty: "0" + LastAmt: "0" + LastFee: "0" + CumAmt: "0" + DecisionStatus: "Active" + AmountCurrency: "USD" + CustomerUser: "tom@company.com" + Parameters: + ErrorAction: "Pause" + ExecutionReport: + address: ExecutionReport + messages: + executionReportEventMsg: + name: ExecutionReportEvent + payload: + allOf: + - $ref: '#/components/schemas/BaseResponse' + - type: object + $id: 'ExecutionReportEvent' + required: [type, data] + properties: + type: + type: string + enum: [ExecutionReport] + data: + type: array + items: + $ref: '#/components/schemas/ExecutionReportEvent' + examples: + - name: ExecutionReportEvent + payload: + reqid: 6 + type: ExecutionReport + ts: "2021-09-14T22:23:11.920903Z" + initial: false + seqNum: 2 + data: + - Timestamp: "2021-09-14T22:23:11.903074Z" + Symbol: "BTC-USD" + OrderID: "1b6b882b-e2fc-4774-ad2d-9db4df536f29" + ClOrdID: "58b9adb0-15aa-11ec-b0a2-2554a9e1e7a4" + SubmitTime: "2021-09-14T22:23:11.903074Z" + ExecID: "4b423f54-4a54-4679-9ee7-1f5f417ec5f5" + Side: "Buy" + TransactTime: "2021-09-14T22:23:11.883000Z" + ExecType: "PendingNew" + OrdStatus: "PendingNew" + OrderQty: "0.20000000" + OrdType: "Market" + Currency: "BTC" + LeavesQty: "0.20000000" + CumQty: "0" + AvgPx: "0" + TimeInForce: "FillOrKill" + LastPx: "0" + LastQty: "0" + LastAmt: "0" + LastFee: "0" + CumAmt: "0" + AmountCurrency: "USD" + CustomerUser: "tom@company.com" + Parameters: + ErrorAction: "Pause" + NewOrderSingle: + address: NewOrderSingle + messages: + newOrderSingleMessage: + name: NewOrderSingle + payload: + type: object + required: [reqid, type, data] + properties: + reqid: + type: integer + description: Request ID for this command + type: + type: string + enum: [NewOrderSingle] + description: Command type for submitting a new order + data: + type: array + items: + $ref: '#/components/schemas/NewOrderSingleData' + description: Array of new order data + examples: + - name: NewOrderSingle + payload: + reqid: 12 + type: NewOrderSingle + data: + - Symbol: "BTC-USD" + ClOrdID: "4d489920-15da-11ec-b5e7-7f4881f01b7d" + Side: "Buy" + TransactTime: "2021-09-15T04:06:28.530000Z" + OrderQty: "0.5" + OrdType: "Limit" + Price: "43000" + Currency: "BTC" + TimeInForce: "GoodTillCancel" + Strategy: "Limit" + Parameters: + ErrorAction: "Pause" + OrderCancelRequest: + address: OrderCancelRequest + messages: + orderCancelRequestMessage: + name: OrderCancelRequest + payload: + type: object + required: [reqid, type, data] + properties: + reqid: + type: integer + description: Request ID for this command + type: + type: string + enum: [OrderCancelRequest] + description: Command type for canceling an order + data: + type: array + items: + $ref: '#/components/schemas/OrderCancelRequestData' + description: Array of order cancel data + examples: + - name: OrderCancelRequest + payload: + reqid: 13 + type: OrderCancelRequest + data: + - ClOrdID: "c0be17e0-15da-11ec-b5e7-7f4881f01b7d" + OrderID: "16a55364-4248-4575-aa0b-dddd3f694ca3" + TransactTime: "2021-09-15T04:09:42.238000Z" + OrderCancelReplaceRequest: + address: OrderCancelReplaceRequest + messages: + orderCancelReplaceRequestMessage: + name: OrderCancelReplaceRequest + payload: + type: object + required: [reqid, type, data] + properties: + reqid: + type: integer + description: Request ID for this command + type: + type: string + enum: [OrderCancelReplaceRequest] + description: Command type for modifying an order + data: + type: array + items: + $ref: '#/components/schemas/OrderCancelReplaceRequestData' + description: Array of order cancel replace data + examples: + - name: OrderCancelReplaceRequest + payload: + reqid: 14 + type: OrderCancelReplaceRequest + data: + - Price: "44000" + Symbol: "BTC-USD" + OrderID: "16a55364-4248-4575-aa0b-dddd3f694ca3" + ClOrdID: "b5e52570-15da-11ec-b5e7-7f4881f01b7d" + TransactTime: "2021-09-15T04:09:24.039000Z" + OrderQty: "0.5" + Parameters: + ErrorAction: "Pause" + OrderControlRequest: + address: OrderControlRequest + messages: + orderControlRequestMessage: + name: OrderControlRequest + payload: + type: object + required: [reqid, type, data] + properties: + reqid: + type: integer + description: Request ID for this command + type: + type: string + enum: [OrderControlRequest] + description: Command type for controlling an order + data: + type: array + items: + $ref: '#/components/schemas/OrderControlRequestData' + description: Array of order control data + examples: + - name: OrderControlRequest + payload: + reqid: 17 + type: OrderControlRequest + data: + - ClOrdID: "9eb07120-15da-11ec-b5e7-7f4881f01b7d" + OrderID: "16a55364-4248-4575-aa0b-dddd3f694ca3" + Action: "Pause" + QuoteRequest: + address: QuoteRequest + messages: + quoteRequestMessage: + name: QuoteRequest + payload: + type: object + required: [reqid, type, data] + properties: + reqid: + type: integer + description: Request ID for this command + type: + type: string + enum: [QuoteRequest] + description: Command type for requesting a quote + data: + type: array + items: + $ref: '#/components/schemas/QuoteRequestData' + description: Array of quote request data + examples: + - name: QuoteRequest + payload: + reqid: 15 + type: QuoteRequest + data: + - QuoteReqID: "8e9540d0-15db-11ec-b5e7-7f4881f01b7d" + OrderQty: "0.75" + Currency: "BTC" + Symbol: "BTC-USD" + TransactTime: "2021-09-15T04:15:27.581000Z" + Parameters: {} + QuoteCancelRequest: + address: QuoteCancelRequest + messages: + quoteCancelRequestMessage: + name: QuoteCancelRequest + payload: + type: object + required: [reqid, type, data] + properties: + reqid: + type: integer + description: Request ID for this command + type: + type: string + enum: [QuoteCancelRequest] + description: Command type for canceling a quote request + data: + type: array + items: + $ref: '#/components/schemas/QuoteCancelRequestData' + description: Array of quote cancel request data + examples: + - name: QuoteCancelRequest + payload: + reqid: 16 + type: QuoteCancelRequest + data: + - QuoteReqID: "8e9540d0-15db-11ec-b5e7-7f4881f01b7d" + RFQID: "f47bfb99-4d1e-4179-b62c-a96e83cc93ba" + TransactTime: "2021-09-15T04:15:24.581000Z" + NewWithdrawRequest: + address: NewWithdrawRequest + messages: + newWithdrawRequestMessage: + name: NewWithdrawRequest + payload: + type: object + required: [reqid, type, data] + properties: + reqid: + type: integer + description: Request ID for this command + type: + type: string + enum: [NewWithdrawRequest] + description: Command type for requesting a new withdrawal + data: + type: array + items: + $ref: '#/components/schemas/NewWithdrawRequestData' + description: Array of new withdraw request data + examples: + - name: NewWithdrawRequest + payload: + reqid: 34 + type: NewWithdrawRequest + data: + - Quantity: "1" + Currency: "ETH" + MarketAccount: "default" + RoutingInfo: + WalletAddress: "XXYYZZ" + Memo: "" + DestinationTag: "" + ClReqID: "06b78113c1454174b9e403a1245d67ea" + WithdrawCancelRequest: + address: WithdrawCancelRequest + messages: + withdrawCancelRequestMessage: + name: WithdrawCancelRequest + payload: + type: object + required: [reqid, type, data] + properties: + reqid: + type: integer + description: Request ID for this command + type: + type: string + enum: [WithdrawCancelRequest] + description: Command type for canceling a withdrawal + data: + type: array + items: + $ref: '#/components/schemas/WithdrawCancelRequestData' + description: Array of withdraw cancel request data + examples: + - name: WithdrawCancelRequest + payload: + reqid: 34 + type: WithdrawCancelRequest + data: + - TransactionID: "1E19VMG980R00" + NewDepositRequest: + address: NewDepositRequest + messages: + newDepositRequestMessage: + name: NewDepositRequest + payload: + type: object + required: [reqid, type, data] + properties: + reqid: + type: integer + description: Request ID for this command + type: + type: string + enum: [NewDepositRequest] + description: Command type for requesting a new deposit + data: + type: array + items: + $ref: '#/components/schemas/NewDepositRequestData' + description: Array of new deposit request data + examples: + - name: NewDepositRequest + payload: + reqid: 34 + type: NewDepositRequest + data: + - Quantity: "1" + Currency: "ETH" + MarketAccount: "default" + TxHashes: + - TxHash: "0xf9b99f898ae45f221cd08c031f148ff4cb5b0b0fde99c7d42ab232ae0c0b8ec3" + ClReqID: "06b78113c1454174b9e403a1245d67ea" + Trade: + address: Trade + messages: + tradeEventMsg: + name: TradeEvent + payload: + allOf: + - $ref: '#/components/schemas/BaseResponse' + - type: object + $id: 'TradeEvent' + required: [type, data] + properties: + type: + type: string + enum: [Trade] + data: + type: array + items: + $ref: '#/components/schemas/TradeEvent' + examples: + - name: Trade + payload: + reqid: 8 + type: Trade + ts: "2021-09-14T22:29:32.255949Z" + initial: true + seqNum: 1 + data: + - Timestamp: "2021-09-14T22:23:11.989845Z" + Symbol: "BTC-USD" + OrderID: "1b6b882b-e2fc-4774-ad2d-9db4df536f29" + TradeID: "a0ec46f2-6d0e-451a-a4f1-2a0be7d32d26" + Side: "Buy" + TransactTime: "2021-09-14T22:23:11.964531Z" + ExecType: "Trade" + Currency: "BTC" + Price: "47085.090668824440" + Quantity: "0.20000000" + Amount: "9417.02" + Fee: "0" + CustomerUser: "tom@company.com" + TradeStatus: "Confirmed" + AggressorSide: "Buy" + AmountCurrency: "USD" + DealtCurrency: "BTC" + - Timestamp: "2021-09-14T22:26:44.515692Z" + Symbol: "BTC-USD" + OrderID: "b35b1c3b-a304-4224-919f-9db1319de188" + TradeID: "17f9da19-d3bd-4ba2-b29a-1f31516458f2" + Side: "Buy" + TransactTime: "2021-09-14T22:26:44.485836Z" + ExecType: "Trade" + Currency: "BTC" + Price: "46945.3659525" + Quantity: "0.10000000" + Amount: "4694.54" + Fee: "0" + CustomerUser: "tom@company.com" + TradeStatus: "Confirmed" + AggressorSide: "Buy" + AmountCurrency: "USD" + DealtCurrency: "BTC" + Quote: + address: Quote + messages: + quoteEventMsg: + name: QuoteEvent + payload: + allOf: + - $ref: '#/components/schemas/BaseResponse' + - type: object + $id: 'QuoteEvent' + required: [type, data] + properties: + type: + type: string + enum: [Quote] + data: + type: array + items: + $ref: '#/components/schemas/QuoteEvent' + examples: + - name: Quote + payload: + reqid: 9 + type: Quote + ts: "2021-09-14T22:31:27.214025Z" + initial: false + seqNum: 3 + data: + - Timestamp: "2021-09-14T22:31:27.204209Z" + Symbol: "BTC-USD" + Currency: "BTC" + RFQID: "8688ceab-ea67-416c-8ce1-9b63d6c0fe4e" + QuoteReqID: "7feb22f0-15ab-11ec-b0a2-2554a9e1e7a4" + QuoteStatus: "Open" + QuoteID: "20e240c5-9a82-4731-809e-91b3a2bf2f49" + SubmitTime: "2021-09-14T22:31:27.183751Z" + OrderQty: "0.30000000" + AmountCurrency: "USD" + EndTime: "2021-09-14T22:31:42.183751Z" + BidPx: "46836.27" + BidAmt: "14050.88" + OfferPx: "46879.47" + OfferAmt: "14063.85" + ValidUntilTime: "2021-09-14T22:31:28.204209Z" + CustomerUser: "tom@company.com" + Exposure: + address: Exposure + messages: + exposureEventMsg: + name: ExposureEvent + payload: + allOf: + - $ref: '#/components/schemas/BaseResponse' + - type: object + $id: 'ExposureEvent' + required: [type, data] + properties: + type: + type: string + enum: [Exposure] + data: + type: array + items: + $ref: '#/components/schemas/ExposureEvent' + examples: + - name: Exposure + payload: + reqid: 11 + type: Exposure + ts: "2021-09-16T16:17:06.892914Z" + initial: true + seqNum: 1 + data: + - ExposureCurrency: "USD" + Exposure: "1000000" + ExposureLimit: "5000000" + Status: "Online" + Timestamp: "2021-09-16T16:17:06.892914Z" + BalanceTransaction: + address: BalanceTransaction + messages: + balanceTransactionEventMsg: + name: BalanceTransactionEvent + payload: + allOf: + - $ref: '#/components/schemas/BaseResponse' + - type: object + $id: 'BalanceTransactionEvent' + required: [type, data] + properties: + type: + type: string + enum: [BalanceTransaction] + data: + type: array + items: + $ref: '#/components/schemas/BalanceTransactionEvent' + examples: + - name: BalanceTransaction + payload: + reqid: 9 + type: BalanceTransaction + ts: "2023-02-10T16:49:18.300588Z" + initial: true + seqNum: 1 + data: + - Timestamp: "2023-02-10T16:50:12.562757Z" + ClReqID: "06b78113c1454174b9e403a1245d67ea" + TransactionID: "1D2FBR4J00R00" + Revision: 0 + TransactionType: "Withdrawal" + MarketAccount: "default" + Quantity: "1" + Currency: "ETH" + Status: "PendingApproval" + LastUpdateTime: "2023-02-10T16:50:12.556229Z" + User: + address: User + messages: + userEventMsg: + name: UserEvent + payload: + allOf: + - $ref: '#/components/schemas/BaseResponse' + - type: object + $id: 'UserEvent' + required: [type, data] + properties: + type: + type: string + enum: [User] + data: + type: array + items: + $ref: '#/components/schemas/UserEvent' + examples: + - name: User + payload: + reqid: 10 + type: User + ts: "2021-09-15T03:33:07.545223Z" + initial: true + seqNum: 1 + data: + - CustomerUserID: "174K1Q9GC0C00" + Email: "tom@company.com" + DisplayName: "Tom" + Config: + - Timestamp: 1628004805337309202 + CustomerUserID: "174K1Q9GC0C00" + Key: "recentSymbols" + Value: "{\"BTC-USD\":[1626111502357],\"ADA-USD\":[1626732116743],\"BCH-USD\":[1628004751665]}" + - Timestamp: 1628004805377207692 + CustomerUserID: "174K1Q9GC0C00" + Key: "symbol" + Value: "\"BTC-USD\"" + UserConfig: + address: UserConfig + messages: + userConfigMessage: + name: UserConfig + payload: + type: object + required: [reqid, type, data] + properties: + reqid: + type: integer + description: Request ID for this command + type: + type: string + enum: [UserConfig] + description: Command type for updating user configuration + data: + type: array + items: + $ref: '#/components/schemas/UserConfigData' + description: Array of user config data + examples: + - name: UserConfig + payload: + reqid: 18 + type: UserConfig + data: + - Key: "symbol" + Value: "\"ETH-BTC\"" +operations: + Hello: + action: receive + channel: + $ref: '#/channels/hello' + description: 'After a client connects, the server will send an unsolicited hello message.' + messages: + - $ref: '#/channels/hello/messages/helloEventMsg' + tags: + - name: Protocol + Subscribe: + action: send + channel: + $ref: '#/channels/subscribe' + summary: Send a subscription request to begin a stream of data. + description: > + Clients issue requests to subscribe to data. + The server responds to requests with one or more response messages that reference the request by echoing back the `reqid` field. + + Response structure is as follows: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyTypeRequiredDescription
reqidnumberYA number that relates this response to a request.
seqnumberY + The sequence number for this response per request. + seq begins at 1 on the first message with this + reqid and increments by one for each message sent + on this reqid. +
typestringY + The type of message sent. This document describes all valid + message types. +
tagstringNAn optional tag from the stream request.
tsnumberY + An ISO-8601 UTC string of the form + 2019-02-13T05:17:32.000000Z. +
initialboolN + If this is initial data for a request, the + initial flag will be set. +
actionstringN"Update" or "Remove"
total_countnumberNThe total number of records for this stream.
+ + + + messages: + - $ref: '#/channels/subscribe/messages/subscribeMessage' + tags: + - name: Protocol + Amend: + action: send + channel: + $ref: '#/channels/amend' + summary: Amend an Existing Stream + description: > + Amend an existing stream subscription by Request ID. Response structure + remains the same, just the content of the data will + change per the amendment. + messages: + - $ref: '#/channels/amend/messages/amendMessage' + tags: + - name: Protocol + Page: + action: send + channel: + $ref: '#/channels/page' + summary: Continue a Paged Stream + description: > + If you request a stream that is paged, the data on the stream will be delivered with a `next` field populated. If given this field, request the next set of data with the below structure. Response continues as with the original stream. + messages: + - $ref: '#/channels/page/messages/pageMessage' + tags: + - name: Protocol + Cancel: + action: send + channel: + $ref: '#/channels/cancel' + summary: Cancel an Existing Stream + description: > + Cancel an existing stream by Request ID. No response, unless there is + an error. Stream will just stop. + messages: + - $ref: '#/channels/cancel/messages/cancelMessage' + tags: + - name: Protocol + Security: + action: receive + channel: + $ref: '#/channels/Security' + summary: Stream of available securities for trading. + description: > + On initial request, a snapshot of all available securities is provided. All subsequent messages are deltas to the securities snapshot. + x-subscription: + $ref: '#/components/schemas/SecuritySubscription' + messages: + - $ref: '#/channels/Security/messages/securityEventMsg' + tags: + - name: Security Master + Currency: + action: receive + channel: + $ref: '#/channels/Currency' + summary: Stream of available currencies used within trading. + description: > + On initial request, a snapshot of all available currencies is provided. All subsequent messages are deltas to the currency snapshot. + x-subscription: + $ref: '#/components/schemas/CurrencySubscription' + messages: + - $ref: '#/channels/Currency/messages/currencyEventMsg' + tags: + - name: Security Master + MarketDataSnapshot: + action: receive + channel: + $ref: '#/channels/MarketDataSnapshot' + summary: Receive MarketDataSnapshot updates + x-subscription: + $ref: '#/components/schemas/MarketDataSnapshotSubscription' + messages: + - $ref: '#/channels/MarketDataSnapshot/messages/marketDataSnapshotEventMsg' + tags: + - name: Market Data + CurrencyConversion: + action: receive + channel: + $ref: '#/channels/CurrencyConversion' + summary: Stream of currency conversion rates. + x-subscription: + $ref: '#/components/schemas/CurrencyConversionSubscription' + messages: + - $ref: '#/channels/CurrencyConversion/messages/currencyConversionEventMsg' + tags: + - name: Market Data + Order: + action: receive + channel: + $ref: '#/channels/Order' + x-subscription: + $ref: '#/components/schemas/OrderSubscription' + messages: + - $ref: '#/channels/Order/messages/orderEventMsg' + tags: + - name: Orders + ExecutionReport: + action: receive + channel: + $ref: '#/channels/ExecutionReport' + summary: Receive ExecutionReport updates + x-subscription: + $ref: '#/components/schemas/ExecutionReportSubscription' + messages: + - $ref: '#/channels/ExecutionReport/messages/executionReportEventMsg' + tags: + - name: Orders + NewOrderSingle: + action: send + channel: + $ref: '#/channels/NewOrderSingle' + summary: Submit a new order + description: 'Command used to submit a new order either against any provided liquidity or an open RFQ. Results of this command will be visible in the `Order`, `ExecutionReport` and `Trade` streams which will track the lifecycle of the order.' + messages: + - $ref: '#/channels/NewOrderSingle/messages/newOrderSingleMessage' + tags: + - name: Orders + OrderCancelRequest: + action: send + channel: + $ref: '#/channels/OrderCancelRequest' + summary: Cancel an existing order + description: 'Command used to cancel an open order. Results of this command will be visible in the Order and ExecutionReport streams.' + messages: + - $ref: '#/channels/OrderCancelRequest/messages/orderCancelRequestMessage' + tags: + - name: Orders + OrderCancelReplaceRequest: + action: send + channel: + $ref: '#/channels/OrderCancelReplaceRequest' + summary: Modify an existing order + description: 'Command used to modify an open order. Results of this command will be visible in the `Order` and `ExecutionReport` streams.' + messages: + - $ref: '#/channels/OrderCancelReplaceRequest/messages/orderCancelReplaceRequestMessage' + tags: + - name: Orders + OrderControlRequest: + action: send + channel: + $ref: '#/channels/OrderControlRequest' + summary: Control an existing order + description: 'Command used to control an open order. Results of this command will be visible in the Order and ExecutionReport streams.' + x-post-doc: + description: > + ## Order State Change Matrices + + The orders API follows FIX 4.4 semantics closely. The main difference is that instead of sending separate OrderCancelReject messages, two extra ExecType are supported: CancelRejected and ReplaceRejected. The order state change matrices below are heavily inspired by the FIX documentation. + + ### Filled Order + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TimeRequest (ClOrdID,OrigClOrdID)Response (ClOrdID,OrigClOrdID)ExecTypeOrdStatusOrderQtyCumQtyLeavesQtyLastQtyComment
1NewOrderSingle(A)10
2ExecutionReport(A)PendingNewPendingNew10010
3ExecutionReport(A)RejectedRejected10010If order is rejected
3ExecutionReport(A)NewNew10010
4ExecutionReport(A)TradePartiallyFilled10282
5ExecutionReport(A)TradePartiallyFilled10371
6ExecutionReport(A)TradeFilled101007
+
+ +
+ Note: Orders with CumQty > 0 will receive an Execution Report that will have CumQty for the filled size of the order. Orders that are partially filled and canceled will receive an ExecutionReport with a terminal state (Canceled) and a CumQty > 0 +
+ + + ### Canceled Order + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TimeRequest (ClOrdID,OrigClOrdID)Response (ClOrdID,OrigClOrdID)ExecTypeOrdStatusOrderQtyCumQtyLeavesQtyLastQtyComment
1NewOrderSingle(A)10
2ExecutionReport(A)PendingNewPendingNew10010
3ExecutionReport(A)RejectedRejected10010If order is rejected
3ExecutionReport(A)NewNew10010
4OrderCancelRequest(B,A)
5ExecutionReport(B,A)CancelRejectedNew10010If cancel is rejected
5ExecutionReport(B,A)PendingCancelPendingCancel10010
6ExecutionReport(B,A)CancelRejectedNew10010If cancel is rejected
7ExecutionReport(B,A)CanceledCanceled1000
+
+ + + ### Replace to Increase Quantity + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TimeRequest (ClOrdID,OrigClOrdID)Response (ClOrdID,OrigClOrdID)ExecTypeOrdStatusOrderQtyCumQtyLeavesQtyLastQtyComment
1NewOrderSingle(A)10
2ExecutionReport(A)PendingNewPendingNew10010
3ExecutionReport(A)NewNew10010
4OrderCancelReplaceRequest(B,A)11
5ExecutionReport(B,A)ReplaceRejectedNew10010If replace is rejected
5ExecutionReport(B,A)PendingReplacePendingReplace10010
6ExecutionReport(B,A)CancelRejectedNew10010If replace is rejected
7ExecutionReport(B,A)ReplacedNew1100
8ExecutionReport(B)TradePartiallyFilled111101
+
+ + + ### Replace During Fill + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TimeRequest (ClOrdID,OrigClOrdID)Response (ClOrdID,OrigClOrdID)ExecTypeOrdStatusOrderQtyCumQtyLeavesQtyLastQtyComment
1NewOrderSingle(A)10
2ExecutionReport(A)PendingNewPendingNew10010
3ExecutionReport(A)NewNew10010
4OrderCancelReplaceRequest(B,A)8
5ExecutionReport(A)TradePartiallyFilled10191Fill before replace is received
6ExecutionReport(B,A)PendingReplacePendingReplace1019
7ExecutionReport(A)TradePendingReplace10372Fill before replace is processed
8ExecutionReport(B,A)ReplacedNew835
9ExecutionReport(B)TradeFilled8805
+
+ messages: + - $ref: '#/channels/OrderControlRequest/messages/orderControlRequestMessage' + tags: + - name: Orders + Trade: + action: receive + channel: + $ref: '#/channels/Trade' + summary: Stream of Trade updates + x-subscription: + $ref: '#/components/schemas/TradeSubscription' + description: > + Upon Subscription, the server will return all Trade for this client as long as the optional constraints are satisfied. Server will also send a Trade update when the order receives more fills or new fills arrive on a new order that came in as long as the optional constraints are satisfied. + messages: + - $ref: '#/channels/Trade/messages/tradeEventMsg' + tags: + - name: Post Trade + Quote: + action: receive + channel: + $ref: '#/channels/Quote' + summary: Receive Quote stream updates + x-subscription: + $ref: '#/components/schemas/QuoteSubscription' + messages: + - $ref: '#/channels/Quote/messages/quoteEventMsg' + tags: + - name: RFQ + QuoteRequest: + action: send + channel: + $ref: '#/channels/QuoteRequest' + summary: RFQ (Request for Quote) + description: > + This section outlines how to request quotes from multiple dealers simultaneously and accept them using the Scrypt API. To send a quote request, first subscribe to the [Quote](#api-operation-receive-Quote) stream, and the [ExecutionReport](#api-operation-receive-ExecutionReport) stream as with orders. All quote responses are sent as [Quote](#api-operation-receive-Quote) updates, and all order responses and updates are sent as [ExecutionReport](#api-operation-receive-ExecutionReport). + + To request a quote, send a [QuoteRequest](#api-operation-send-QuoteRequest) message. The server responds with one or many [Quote](#api-operation-receive-Quote) messages as the streaming prices update. An in-progress [Quote](#api-operation-receive-Quote) can be cancelled by sending a [QuoteCancelRequest](#api-operation-send-QuoteCancelRequest) message. [Quote](#api-operation-receive-Quote) time out automatically after 3 minutes by default. + + To accept a quote, send a [NewOrderSingle (RFQ)](#api-operation-send-NewOrderSingle) message. + + A typical workflow to request and accept a quote would be: + + 1. Subscribe to `Quote` + 2. Subscribe to `ExecutionReport` + 3. Subscribe to Trade with `StartDate` of the `Timestamp` of the last Trade processed to recover any missed trades + 4. **To request a quote, first generate a new `QuoteReqID` (see instructions below). Send a `QuoteRequest` specifying the `QuoteReqID`, `OrderQty`, `Currency` etc. for that request** + 5. `Quote` updates will be received that are able to be priced + 6. To accept a quote that is received, send a `NewOrderSingle` referencing the `RFQID` and parameters depending on `OrdType` + 7. Fills will be received as `ExecutionReport` with `ExecType=Trade` + 8. `QuoteStatus` will change to `Filled` when the `Quote` is successfully accepted + + To generate a `QuoteReqID`, we recommend using a UUID4 or another globally unique identifier. `QuoteReqID` must be unique and with length less than or equal to 36 characters. + messages: + - $ref: '#/channels/QuoteRequest/messages/quoteRequestMessage' + tags: + - name: RFQ + QuoteCancelRequest: + action: send + channel: + $ref: '#/channels/QuoteCancelRequest' + summary: Cancel a quote request + description: 'Command used to cancel an open RFQ. Results of this command will be visible in the Quote stream.' + messages: + - $ref: '#/channels/QuoteCancelRequest/messages/quoteCancelRequestMessage' + tags: + - name: RFQ + Balance: + action: receive + channel: + $ref: '#/channels/Balance' + summary: Receive Balance updates + x-subscription: + $ref: '#/components/schemas/BalanceSubscription' + messages: + - $ref: '#/channels/Balance/messages/balanceEventMsg' + tags: + - name: Balances and Credit + Exposure: + action: receive + channel: + $ref: '#/channels/Exposure' + summary: Receive Exposure stream updates + x-subscription: + $ref: '#/components/schemas/ExposureSubscription' + messages: + - $ref: '#/channels/Exposure/messages/exposureEventMsg' + tags: + - name: Balances and Credit + BalanceTransaction: + action: receive + channel: + $ref: '#/channels/BalanceTransaction' + summary: Receive BalanceTransaction stream updates + x-subscription: + $ref: '#/components/schemas/BalanceTransactionSubscription' + messages: + - $ref: '#/channels/BalanceTransaction/messages/balanceTransactionEventMsg' + tags: + - name: Balances and Credit + NewWithdrawRequest: + action: send + channel: + $ref: '#/channels/NewWithdrawRequest' + summary: Request a new withdrawal + description: 'Command used to request a new withdrawal.' + messages: + - $ref: '#/channels/NewWithdrawRequest/messages/newWithdrawRequestMessage' + tags: + - name: Balances and Credit + WithdrawCancelRequest: + action: send + channel: + $ref: '#/channels/WithdrawCancelRequest' + summary: Cancel a withdrawal request + description: 'Command used to cancel a withdrawal. Only transactions in `PendingApproval` state can be cancelled.' + messages: + - $ref: '#/channels/WithdrawCancelRequest/messages/withdrawCancelRequestMessage' + tags: + - name: Balances and Credit + NewDepositRequest: + action: send + channel: + $ref: '#/channels/NewDepositRequest' + summary: Request a new deposit + description: 'Command used to request a new deposit. Results of this command will be visible in the `BalanceTransaction` stream.' + messages: + - $ref: '#/channels/NewDepositRequest/messages/newDepositRequestMessage' + tags: + - name: Balances and Credit + User: + action: receive + channel: + $ref: '#/channels/User' + summary: Request for updates for this customer user. No subscription parameters. + x-subscription: + $ref: '#/components/schemas/UserSubscription' + messages: + - $ref: '#/channels/User/messages/userEventMsg' + tags: + - name: User Administration + UserConfig: + action: send + channel: + $ref: '#/channels/UserConfig' + summary: Update user configuration + description: 'Command used to update user config on behalf of session user. Results of this command will be visible in the `User` stream.' + messages: + - $ref: '#/channels/UserConfig/messages/userConfigMessage' + tags: + - name: User Administration +x-extras: + title: REST API + paths: + /v1/symbols/{symbol}/ohlcv/{resolution}: + get: + name: OHLCV + summary: Get the open, high, low, close, and volume parameters for a given symbol and resolution + parameters: + $ref: '#/components/schemas/OHLCVParameters' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/OHLCV' +components: + securitySchemes: + ApiKey: + type: httpApiKey + name: "ApiKey" + in: header + description: > + Your Scrypt API key. + ApiTimestamp: + x-custom-type: Timestamp + type: httpApiKey + name: "ApiTimestamp" + in: header + description: > + An ISO-8601 UTC string of the form 2019-02-13T05:17:32.000000Z + ApiSign: + x-custom-type: Signature + type: httpApiKey + name: "ApiSign" + in: header + description: > + The signature is a base64 encoded SHA256 HMAC using the API secret of the following: + + `GET\n\n\n` + + For example, + + `GET\n2019-02-13T05:17:32.000000Z\ndemo.scrypt.swiss\n/ws/v1` + + schemas: + AllStreams: + type: array + items: + oneOf: + - $ref: '#/components/schemas/MarketDataSnapshotSubscription' + - $ref: '#/components/schemas/BalanceSubscription' + - $ref: '#/components/schemas/SecuritySubscription' + - $ref: '#/components/schemas/CurrencySubscription' + - $ref: '#/components/schemas/CurrencyConversionSubscription' + - $ref: '#/components/schemas/OrderSubscription' + - $ref: '#/components/schemas/ExecutionReportSubscription' + - $ref: '#/components/schemas/TradeSubscription' + - $ref: '#/components/schemas/QuoteSubscription' + - $ref: '#/components/schemas/ExposureSubscription' + - $ref: '#/components/schemas/BalanceTransactionSubscription' + - $ref: '#/components/schemas/UserSubscription' + BaseResponse: + type: object + required: [reqid, ts, seqNum] + properties: + reqid: + type: integer + description: Echoed back request ID + ts: + type: string + format: date-time + description: Timestamp of message publication + initial: + type: boolean + description: Flag to indicate if this message is the initial state of the stream + seqNum: + type: integer + description: Incrementing sequence number of messages for request ID starting with 1 + tag: + type: string + description: Echoed back tag for this request + next: + type: string + description: If paging, tag for next page of data + + HelloEvent: + type: object + required: [type, ts, session_id] + additionalProperties: false + properties: + type: + type: string + enum: [hello] + description: 'Always "hello"' + ts: + type: string + format: date-time + description: 'An ISO-8601 UTC string' + session_id: + type: string + description: 'A session ID that uniquely identifies this websocket session.' + + MarketDataSnapshotSubscription: + type: object + required: [name, Symbol] + additionalProperties: false + properties: + name: + type: string + enum: [MarketDataSnapshot] + Symbol: + type: string + description: Security to request + Throttle: + type: string + description: > + An optional throttle duration for updates, defaults to + configured `MinMarketDataThrottle`. A throttle is + specified by a time duration + units. For example: "300ms", + "500us". Valid time units are "ns", "us", "ms", "s". + PriceIncrement: + type: string + description: Price increment for levels to enable price bucketing + Depth: + type: string + description: Maximum number of bid / offer levels to stream prices for + SizeBuckets: + type: array + items: + type: string + description: > + A list of sizes to return price levels for; defaults to + configured Security SizeBuckets + examples: + - name: Subscribe + payload: + reqid: 2 + type: subscribe + streams: + - name: MarketDataSnapshot + Symbol: BTC-USD + + MarketDataSnapshotEvent: + type: object + required: [Timestamp, Symbol, Status, Bids, Offers] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp when the market data snapshot was generated + Symbol: + type: string + description: Trading symbol for the security (e.g., BTC-USD) + Status: + type: string + enum: [Online, Offline] + description: Current status of the market data (e.g., Online, Offline) + Bids: + type: array + items: + type: object + required: [Price, Size] + properties: + Price: + type: string + description: Bid price level + Size: + type: string + description: Total size available at this bid price level + description: Array of bid levels sorted by price (highest to lowest) + Offers: + type: array + items: + type: object + required: [Price, Size] + properties: + Price: + type: string + description: Offer/ask price level + Size: + type: string + description: Total size available at this offer price level + description: Array of offer/ask levels sorted by price (lowest to highest) + + BalanceSubscription: + type: object + required: [name] + additionalProperties: false + properties: + name: + type: string + enum: [Balance] + Currencies: + type: array + items: + type: string + description: Optional list of currencies to filter these balance updates by, default is all available currencies + EquivalentCurrency: + type: string + description: If provided, will provide converted equivalent amounts of each currency in the provided Equivalent Currency + examples: + - name: Subscribe + payload: + reqid: 11 + type: subscribe + streams: + - name: Balance + EquivalentCurrency: "USD" + + BalanceEvent: + type: object + required: [Currency, Amount, AvailableAmount] + additionalProperties: false + properties: + Currency: + type: string + description: Currency of this balance update + Amount: + type: string + description: Current balance amount in the specified currency + AvailableAmount: + type: string + description: Amount available for trading right now + Equivalent: + type: object + properties: + Currency: + type: string + description: Requested Equivalent Currency + Amount: + type: string + description: Amount of this balance in the equivalent currency + AvailableAmount: + type: string + description: Equivalent amount of amount available for trading right now + description: If requested equivalent balance amount, will provide a Balance update in the specified equivalent currency + + SecuritySubscription: + type: object + required: [name] + additionalProperties: false + properties: + name: + type: string + enum: [Security] + Symbols: + type: array + items: + type: string + description: Optional list of symbols to filter the subscription on + examples: + - name: Subscribe + payload: + reqid: 2 + type: subscribe + streams: + - name: Security + Symbols: + - ETH-USD + - BTC-USD + + CurrencySubscription: + type: object + required: [name] + additionalProperties: false + properties: + name: + type: string + enum: [Currency] + examples: + - name: Currency + payload: + reqid: 2 + type: subscribe + streams: + - name: Currency + Currencies: + - CHF + - EUR + + CurrencyConversionSubscription: + type: object + required: [name, EquivalentCurrency] + additionalProperties: false + properties: + name: + type: string + enum: [CurrencyConversion] + EquivalentCurrency: + type: string + description: Quote currency to base the conversion rates on + Currencies: + type: array + items: + type: string + description: List of currencies and securities to generate conversion rates for; defaults to all available currencies + Throttle: + type: string + description: 'Optional throttle interval for conversion rate updates. Minimal / default value: 10s' + Tolerance: + type: string + description: 'Optional param to indicate what conversation rate percent change should trigger sending out an update. Minimal / default value: 0.0001 which means 1 bps' + examples: + - name: Subscribe + payload: + reqid: 4 + type: subscribe + streams: + - name: CurrencyConversion + EquivalentCurrency: "USD" + Currencies: + - BTC + - ETH + - BCH-USD + Throttle: "15s" + Tolerance: "0.0002" + + OrderSubscription: + type: object + required: [name] + additionalProperties: false + properties: + name: + type: string + enum: [Order] + StartDate: + type: string + format: date-time + description: 'If provided, the subscription will return orders that were submitted after this time.' + EndDate: + type: string + format: date-time + description: 'If provided, the subscription will return orders that were submitted before this time.' + Symbol: + type: string + description: If provided, Symbol of the security to get the orders for + Statuses: + type: array + items: + type: string + description: 'If provided, comma-separated Statuses of orders to include e.g. New,Filled' + OrderID: + type: string + description: If provided, filter by OrderID + RFQID: + type: string + description: If provided, filter by RFQID + examples: + - name: Subscribe + payload: + reqid: 7 + type: subscribe + streams: + - name: Order + + ExecutionReportSubscription: + type: object + required: [name] + additionalProperties: false + properties: + name: + type: string + enum: [ExecutionReport] + StartDate: + type: string + format: date-time + description: 'If provided, the subscription will return execution reports that were published at or after this time.' + EndDate: + type: string + format: date-time + description: 'If provided, the subscription will return execution reports that were published before this time.' + Symbol: + type: string + description: If provided, Symbol of the security to get the executions for + Statuses: + type: array + items: + type: string + description: 'If provided, comma-separated statuses of orders to include e.g. New,Filled' + OrderID: + type: string + description: If provided, filter by OrderID + RFQID: + type: string + description: If provided, filter by RFQID + examples: + - name: Subscribe + payload: + reqid: 6 + type: subscribe + streams: + - name: ExecutionReport + + TradeSubscription: + type: object + required: [name] + additionalProperties: false + properties: + name: + type: string + enum: [Trade] + StartDate: + type: string + format: date-time + description: 'If provided, the subscription will return trades that were executed after this time.' + EndDate: + type: string + format: date-time + description: 'If provided, the subscription will return trades that were executed before this time.' + Symbol: + type: string + description: If provided, Symbol of the security to get the orders for + OrderID: + type: string + description: If provided, filter by OrderID + RFQID: + type: string + description: If provided, filter by RFQID + + QuoteSubscription: + type: object + required: [name] + additionalProperties: false + properties: + name: + type: string + enum: [Quote] + StartDate: + type: string + format: date-time + description: 'If provided, the subscription will return quotes for rfqs that were submitted after this time.' + EndDate: + type: string + format: date-time + description: 'If provided, the subscription will return quotes for rfqs that were submitted before this time.' + Symbol: + type: string + description: If provided, Symbol of the security to get the orders for + RFQID: + type: string + description: If provided, filter by RFQID + + ExposureSubscription: + type: object + required: [name] + properties: + name: + type: string + enum: [Exposure] + additionalProperties: false + examples: + - name: Subscribe + payload: + reqid: 11 + type: subscribe + streams: + - name: Exposure + + SecurityEvent: + type: object + required: [Timestamp, UpdateAction, SecurityID, Symbol, MinPriceIncrement, MinSizeIncrement, MinimumSize, QuoteCurrency, BaseCurrency, DefaultPriceIncrement, DefaultSizeIncrement, PriceDisplaySpec, PositionCurrency, SizeBuckets, DisplaySymbol, Description] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of message publication + UpdateAction: + type: string + enum: [Update, Remove] + description: Update or Remove where the latter indicates the Security is no longer available + SecurityID: + type: string + description: System ID for Security - for information only + Symbol: + type: string + description: Symbol for security + MinPriceIncrement: + type: string + description: Minimum Price Increment for Security + MinSizeIncrement: + type: string + description: Minimum Size Increment for Security. This increment is used to validate orders and RFQS expressed in base currency of the security. + MinAmtIncrement: + type: string + description: Minimum Amount Increment for Security. This increment is used to validate orders and RFQS expressed in quote currency of the security. + MinimumSize: + type: string + description: Minimum Size for an Order on this Security + MaximumSize: + type: string + description: Maximum Size for an Order on this Security + QuoteCurrency: + type: string + description: Currency in which the Security is quoted + BaseCurrency: + type: string + description: Base currency for the Security + EndTime: + type: string + format: date-time + description: Date this security was Disabled + DefaultPriceIncrement: + type: string + description: Default price increment used in all Market Data and Orders + DefaultSizeIncrement: + type: string + description: Default size increment used in all Market Data and Orders + PriceDisplaySpec: + type: string + description: String specification describing the price display + SizeDisplaySpec: + type: string + description: String specification describing the size display + NormalSize: + type: string + description: Normal size of Security + ProductType: + type: string + description: Product type of Security + PositionCurrency: + type: string + description: Currency in which any position on this Security is tracked + SettlementCurrency: + type: string + description: Currency in which any settlement on this Security is negotiated + NotionalMultiplier: + type: string + description: Notional Multiplier of Security + Expiration: + type: string + description: Expiration of Security + SizeBuckets: + type: array + items: + type: object + properties: + Size: + type: string + description: Default array of Size Buckets for Market Data Snapshot Streams + DisplaySymbol: + type: string + description: Display symbol for Security + Description: + type: string + description: Description of Security + + CurrencyEvent: + type: object + required: [Timestamp, UpdateAction, CurrencyID, Symbol, MinIncrement, DefaultIncrement, Description] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of message publication + UpdateAction: + type: string + enum: [Update, Remove] + description: Update or Remove where the latter indicates the Currency is no longer available + CurrencyID: + type: integer + description: System ID for Currency - for information only + Symbol: + type: string + description: Symbol for currency + MinIncrement: + type: string + description: Minimum increment for the currency + DefaultIncrement: + type: string + description: Default increment for the currency + Description: + type: string + description: Description of the currency + + CurrencyConversionEvent: + type: object + required: [Timestamp, EquivalentCurrency, Currency, Rate] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of message publication + EquivalentCurrency: + type: string + description: Currency symbol for equivalent currency + Currency: + type: string + description: Currency symbol for base currency on conversion + Rate: + type: string + description: Currency conversion rate + Status: + type: string + enum: [Online, Offline] + description: Current status of the conversion rate (e.g., Online, Offline) + ConversionPath: + type: string + description: The path used for currency conversion (e.g., "(BTC-USD)") + + OrderEvent: + type: object + required: [Timestamp, Symbol, OrderID, ClOrdID, SubmitTime, ExecID, Side, ExecType, OrdStatus, OrderQty, OrdType, Currency, LeavesQty, CumQty, AvgPx, TimeInForce, LastPx, LastQty, LastAmt, LastFee, CumAmt, DecisionStatus, AmountCurrency, CustomerUser] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of the order event + Symbol: + type: string + description: Symbol of the security + OrderID: + type: string + description: Unique identifier for the order + ClOrdID: + type: string + description: Client order ID + SubmitTime: + type: string + format: date-time + description: Time when the order was submitted + ExecID: + type: string + description: Execution ID + Side: + type: string + enum: [Buy, Sell] + description: Side of the order + ExecType: + type: string + enum: [New, Filled, PartiallyFilled, Cancelled, Replaced, PendingNew, PendingReplace, PendingCancel, Rejected, Removed] + description: Execution type + OrdStatus: + type: string + enum: [New, Filled, PartiallyFilled, Cancelled, Replaced, PendingNew, PendingReplace, PendingCancel, Rejected, Removed] + description: Order status + OrderQty: + type: string + description: Order quantity + OrdType: + type: string + enum: [Market, Limit, Stop, StopLimit] + description: Order type + Currency: + type: string + description: Currency of the order + LeavesQty: + type: string + description: Quantity remaining to be executed + CumQty: + type: string + description: Cumulative quantity executed + AvgPx: + type: string + description: Average price of executed quantity + TimeInForce: + type: string + enum: [Day, GoodTillCancel, ImmediateOrCancel, FillOrKill, GoodTillDate] + description: Time in force for the order + LastPx: + type: string + description: Price of the last execution + LastQty: + type: string + description: Quantity of the last execution + LastAmt: + type: string + description: Amount of the last execution + LastFee: + type: string + description: Fee of the last execution + CumAmt: + type: string + description: Cumulative amount executed + DecisionStatus: + type: string + enum: [Active, Inactive, Paused] + description: Decision status of the order + AmountCurrency: + type: string + description: Currency for the amount calculations + CustomerUser: + type: string + description: Customer user who placed the order + Parameters: + type: object + description: Additional order parameters + properties: + ErrorAction: + type: string + enum: [Pause, Continue, Cancel] + description: Action to take on error + + ExecutionReportEvent: + type: object + required: [Timestamp, Symbol, OrderID, ClOrdID, SubmitTime, ExecID, Side, ExecType, OrdStatus, OrderQty, OrdType, Currency, LeavesQty, CumQty, TimeInForce, AmountCurrency, SessionID, CustomerUser] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of the message + Symbol: + type: string + description: Symbol of the order security + OrderID: + type: string + description: Server assigned Order ID, will be a UUID + ClOrdID: + type: string + description: Client assigned Order ID for the last request + OrigClOrdID: + type: string + description: Original client assigned Order ID + SubmitTime: + type: string + format: date-time + description: Time of original order submission + ExecID: + type: string + description: Server assigned ID of this update, will be a UUID + Side: + type: string + enum: [Buy, Sell] + description: Buy or Sell + TransactTime: + type: string + format: date-time + description: 'An ISO-8601 UTC string' + ExecType: + type: string + enum: [New, Trade, Canceled, Replaced, PendingCancel, Stopped, Rejected, PendingNew, Restated, PendingReplace, CancelRejected, ReplaceRejected, PendingResume, Resumed, PendingPause, Paused, Triggered, Started] + description: 'Describes the specific execution (e.g. Pending Cancel) while OrdStatus will always identify the current order status (e.g. Partially Filled)' + OrdStatus: + type: string + enum: [New, PartiallyFilled, Filled, Canceled, PendingCancel, Rejected, PendingNew, PendingReplace] + description: Identifies current status of order + OrderQty: + type: string + description: Order quantity + OrdType: + type: string + enum: [Market, Limit, RFQ] + description: Order type + Price: + type: string + description: 'Order limit price, required when OrdType=Limit' + Currency: + type: string + description: Currency of Quantity + LeavesQty: + type: string + description: 'Quantity open for further execution. If the OrdStatus is Canceled or Rejected (in which case the order is no longer active) then LeavesQty could be 0, otherwise LeavesQty = OrderQty - CumQty' + CumQty: + type: string + description: 'Total quantity filled. Always in Currency units (BTC of a BTC-USD order)' + AvgPx: + type: string + description: 'Average filled price of the order. Only valid if CumQty > 0. Does not include fees' + TimeInForce: + type: string + enum: [GoodTillCancel, FillAndKill, FillOrKill] + description: Specifies how long the order remains in effect + LastPx: + type: string + description: 'Last price, specified when ExecType=Trade' + LastQty: + type: string + description: 'Last qty, specified when ExecType=Trade' + LastAmt: + type: string + description: 'Last amount, specified when ExecType=Trade' + LastFee: + type: string + description: 'Last fee, specified when ExecType=Trade' + LastFeeCurrency: + type: string + description: 'Last fee currency, specified when ExecType=Trade. Note this may be different from the cumulative fee' + CumAmt: + type: string + description: 'Total amount filled. Always in Amount currency (USD of a BTC-USD order)' + FeeCurrency: + type: string + description: Cumulative fee currency + OrdRejReason: + type: string + enum: [UnknownSymbol, OrderExceedsLimit, TooLateToEnter, UnknownOrder, DuplicateOrder, StaleRequest, InternalError, BrokerOption, RateLimit, ForceCancel, ImmediateOrderDidNotCross, PostOnlyOrderWouldCross, InvalidStrategy, QuoteRequestTimeout, QuoteExpired] + description: 'Order reject reason, specified when ExecType=Rejected' + CxlRejReason: + type: string + enum: [UnknownOrder, Broker, OrderAlreadyInPendingCancelOrPendingReplaceStatus, DuplicateClOrdID, TooLateToCancel, StaleRequest, RateLimit, InvalidStrategy, Other] + description: 'Cancel reject reason, specified when ExecType=CancelRejected or ExecType=ReplaceRejected' + QuoteID: + type: string + description: Server assigned QuoteID for RFQ Orders + AmountCurrency: + type: string + description: Currency of Amount + SessionID: + type: string + description: SessionID that submitted this order + CancelSessionID: + type: string + description: 'If specified, the order will be cancelled when this session is closed' + Strategy: + type: string + description: Name of the Order Strategy to use + RFQID: + type: string + description: Server assigned RFQID for RFQ Orders + AllowedSlippage: + type: string + description: 'AllowedSlippage in absolute value (ie. 0.001 = 10 bps) if specified on order' + Text: + type: string + description: Human readable error message + CustomerUser: + type: string + description: The customer user associated with this execution report + Parameters: + type: object + description: Additional execution report parameters + properties: + ErrorAction: + type: string + enum: [Pause, Continue, Cancel] + description: Action to take on error + + NewOrderSingleData: + type: object + required: [Symbol, ClOrdID, Side, OrderQty, OrdType, TimeInForce] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of the message + Symbol: + type: string + description: Symbol of the security to submit an order on + ClOrdID: + type: string + description: Unique Client Order ID for this request, usually a UUID + Side: + type: string + enum: [Buy, Sell] + description: Side of the order, either Buy or Sell + OrderQty: + type: string + description: Order quantity in units of Currency + OrdType: + type: string + enum: [Market, Limit, RFQ] + description: Order type + Price: + type: string + description: Order limit price, required for Limit orders + TransactTime: + type: string + format: date-time + description: 'An ISO-8601 UTC string' + Currency: + type: string + description: The currency that the quantity is specified in. If not specified, defaults to the base currency for the symbol + QuoteID: + type: string + description: 'Optional QuoteID to trade on. Must be specified when OrdType=RFQ' + RFQID: + type: string + description: 'Optional RFQID to trade on. Must be specified when OrdType=RFQ' + TimeInForce: + type: string + enum: [GoodTillCancel, FillAndKill, FillOrKill] + description: Specifies how long the order remains in effect + Strategy: + type: string + description: 'Optional order strategy to use. For algorithmic orders SteadyPace, StopLimit are supported' + AllowedSlippage: + type: string + description: Optional allowed price slippage for Limit order placed against RFQ + Parameters: + type: object + description: Optional order strategy parameters + properties: + ErrorAction: + type: string + enum: [Pause, Continue, Cancel] + description: Action to take on error + + OrderCancelRequestData: + type: object + required: [Symbol, ClOrdID, TransactTime] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of the message + Symbol: + type: string + description: Symbol of the security to submit an order on + ClOrdID: + type: string + description: Unique Client Order ID for this request, usually a UUID + OrigClOrdID: + type: string + description: 'Client Order ID of the order to cancel, one of OrderID, OrigClOrdID is required' + OrderID: + type: string + description: 'Order ID of the order to cancel, one of OrderID, OrigClOrdID is required' + TransactTime: + type: string + format: date-time + description: 'An ISO-8601 UTC string' + + OrderCancelReplaceRequestData: + type: object + required: [Symbol, ClOrdID, OrderQty, TransactTime] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of the message + Symbol: + type: string + description: Symbol of the security to submit an order on + ClOrdID: + type: string + description: Unique Client Order ID for this request, usually a UUID + OrigClOrdID: + type: string + description: 'Client Order ID of the order to cancel, one of OrderID, OrigClOrdID is required' + OrderID: + type: string + description: 'Order ID of the order to cancel, one of OrderID, OrigClOrdID is required' + OrderQty: + type: string + description: Order quantity in units of Currency + Price: + type: string + description: Order limit price, required for Limit orders + TransactTime: + type: string + format: date-time + description: 'An ISO-8601 UTC string' + Strategy: + type: string + description: 'Optional order strategy to use. For algorithmic orders Pegged, TWAP, FullAmount, TimeSliced, and SteadyPace are supported' + EndTime: + type: string + format: date-time + description: 'Optional expire time for the order. An ISO-8601 UTC string' + Parameters: + type: object + description: Optional order strategy parameters + properties: + ErrorAction: + type: string + enum: [Pause, Continue, Cancel] + description: Action to take on error + + OrderControlRequestData: + type: object + required: [ClOrdID, TransactTime, Action] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of the message + ClOrdID: + type: string + description: Unique Client Order ID for this request, usually a UUID + OrigClOrdID: + type: string + description: 'Client Order ID of the order to submit the control request for, one of OrderID, OrigClOrdID is required' + OrderID: + type: string + description: 'Order ID of the order to submit the control request for, one of OrderID, OrigClOrdID is required' + TransactTime: + type: string + format: date-time + description: 'An ISO-8601 UTC string' + Action: + type: string + enum: [Pause, Resume] + description: 'Action to apply on the order, either Pause or Resume' + + TradeEvent: + type: object + required: [Timestamp, Symbol, OrderID, TradeID, Side, TransactTime, ExecType, Currency, Quantity, Amount, Fee, TradeStatus, AmountCurrency] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of the message + Symbol: + type: string + description: Symbol of the security + OrderID: + type: string + description: Server assigned Order ID, will be a UUID + TradeID: + type: string + description: Server assigned Trade ID, will be a UUID + Side: + type: string + enum: [Buy, Sell] + description: Buy or Sell + TransactTime: + type: string + format: date-time + description: 'An ISO-8601 UTC string' + ExecType: + type: string + enum: [New, Trade, Canceled, Replaced, PendingCancel, Stopped, Rejected, PendingNew, Restated, PendingReplace, CancelRejected, ReplaceRejected, PendingResume, Resumed, PendingPause, Paused, Triggered, Started] + description: 'Describes the specific execution (e.g. Pending Cancel) while OrdStatus will always identify the current order status (e.g. Partially Filled)' + Currency: + type: string + description: Currency of Quantity + Price: + type: string + description: Trade execution price + Quantity: + type: string + description: Trade quantity + Amount: + type: string + description: Trade amount + Fee: + type: string + description: Trade fee + FeeCurrency: + type: string + description: Cumulative fee currency + TradeStatus: + type: string + enum: [Pending, Confirmed, Canceled] + description: Status of the trade + QuoteID: + type: string + description: Server assigned QuoteID for RFQ Orders + AmountCurrency: + type: string + description: Currency of Amount + RFQID: + type: string + description: Server assigned RFQID for RFQ Orders + CustomerUser: + type: string + description: The customer user associated with this trade + AggressorSide: + type: string + enum: [Buy, Sell] + description: Side that initiated the trade + DealtCurrency: + type: string + description: Currency that was dealt in the trade + + QuoteEvent: + type: object + required: [Timestamp, Symbol, Currency, QuoteReqID, QuoteStatus, QuoteID, SubmitTime, OrderQty, AmountCurrency, EndTime, Side, ValidUntilTime] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of the message + Symbol: + type: string + description: Symbol of the order security + Currency: + type: string + description: Currency of Quantity + RFQID: + type: string + description: Server assigned RFQID for RFQ Orders + QuoteReqID: + type: string + description: Client assigned Quote Req ID for the quote request + QuoteStatus: + type: string + enum: [PendingNew, Open, PendingCancel, Canceled, PendingFill, Filled, Rejected] + description: Status of the quote + QuoteID: + type: string + description: Server assigned ID for this quote update + QuoteRequestRejectReason: + type: string + enum: [UnknownSymbol, OrderExceedsLimit, TooLateToEnter, UnknownOrder, DuplicateOrder, StaleRequest, InternalError, BrokerOption, RateLimit, ForceCancel, ImmediateOrderDidNotCross, PostOnlyOrderWouldCross, InvalidStrategy, QuoteRequestTimeout, QuoteExpired] + description: 'Quote request reject reason, specified when ExecType=Rejected' + SubmitTime: + type: string + format: date-time + description: Time of original quote request submission + OrderQty: + type: string + description: Order quantity + AmountCurrency: + type: string + description: Currency of Amount + EndTime: + type: string + format: date-time + description: End time of RFQ + Side: + type: string + enum: [Buy, Sell] + description: Buy or Sell + TradedPx: + type: string + description: The price of the trade if the quote is filled. This will be an all-in price that includes fees + TradedQty: + type: string + description: The quantity of the trade if the quote is filled in units of Currency + TradedAmt: + type: string + description: The amount of the trade if the quote is filled in units of AmountCurrency + TradedSide: + type: string + enum: [Buy, Sell] + description: The side of the trade if the quote is filled + BidPx: + type: string + description: Bid quote price + BidAmt: + type: string + description: Bid quote amount in units of AmountCurrency + OfferPx: + type: string + description: Offer quote price + OfferAmt: + type: string + description: Offer quote amount in units of AmountCurrency + ValidUntilTime: + type: string + format: date-time + description: The expire time of the quote + Text: + type: string + description: Human readable error message + CustomerUser: + type: string + description: The customer user associated with this quote + + QuoteRequestData: + type: object + required: [QuoteReqID, OrderQty, Currency, Symbol] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of the message + Symbol: + type: string + description: Symbol of the security to submit an order on + Currency: + type: string + description: The currency that the quantity is specified in + QuoteReqID: + type: string + description: Unique ID for this request, usually a UUID + Side: + type: string + enum: [Buy, Sell] + description: 'Optional side for a one sided request, either Buy or Sell. Leave blank for a two way quote' + OrderQty: + type: string + description: Requested quantity in units of Currency + TransactTime: + type: string + format: date-time + description: 'An ISO-8601 UTC string' + Parameters: + type: object + description: Additional quote request parameters + + QuoteCancelRequestData: + type: object + required: [QuoteReqID, RFQID, TransactTime] + additionalProperties: false + properties: + QuoteReqID: + type: string + description: '`QuoteReqID` from the request to cancel' + RFQID: + type: string + description: '`RFQID` to cancel, required and must align with `QuoteReqID`' + TransactTime: + type: string + format: date-time + description: 'An ISO-8601 UTC string' + + ExposureEvent: + type: object + required: [Timestamp, ExposureCurrency, Exposure, ExposureLimit, Status] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: The last time the credit was updated as an ISO-8601 UTC string + ExposureCurrency: + type: string + description: The currency all exposure values are expressed in + Exposure: + type: string + description: Current credit utilization expressed in the `ExposureCurrency` + ExposureLimit: + type: string + description: Credit limit expressed in the `ExposureCurrency` + Status: + type: string + enum: [Online, Offline] + description: Status of the exposure information + + BalanceTransactionEvent: + type: object + required: [Timestamp, ClReqID, TransactionID, Revision, TransactionType, MarketAccount, Quantity, Currency, Status, LastUpdateTime] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of the balance transaction event + ClReqID: + type: string + description: Client request ID for the transaction + TransactionID: + type: string + description: Unique identifier for the transaction + Revision: + type: integer + description: Revision number of the transaction + TransactionType: + type: string + description: Type of the transaction (e.g., Withdrawal, Deposit) + MarketAccount: + type: string + description: Market account associated with the transaction + Quantity: + type: string + description: Amount of the transaction + Currency: + type: string + description: Currency of the transaction + Status: + type: string + description: Current status of the transaction (e.g., PendingApproval, Approved, Rejected) + LastUpdateTime: + type: string + format: date-time + description: Last time the transaction was updated + + UserEvent: + type: object + required: [CustomerUserID, Email, DisplayName, Config] + additionalProperties: false + properties: + CustomerUserID: + type: string + description: Unique identifier for the customer user + Email: + type: string + description: Email address of the user + DisplayName: + type: string + description: Display name of the user + Config: + type: array + items: + type: object + required: [Timestamp, CustomerUserID, Key, Value] + properties: + Timestamp: + type: integer + description: Unix timestamp in nanoseconds when the configuration was set + CustomerUserID: + type: string + description: Customer user ID associated with this configuration + Key: + type: string + description: Configuration key + Value: + type: string + description: Configuration value (JSON string) + description: Array of user configuration settings + + BalanceTransactionSubscription: + type: object + required: [name] + additionalProperties: false + properties: + name: + type: string + enum: [BalanceTransaction] + examples: + - name: Subscribe + payload: + reqid: 9 + type: subscribe + streams: + - name: BalanceTransaction + + UserSubscription: + type: object + required: [name] + additionalProperties: false + properties: + name: + type: string + enum: [User] + + NewWithdrawRequestData: + type: object + required: [Currency, ClReqID, Quantity] + additionalProperties: false + properties: + Currency: + type: string + description: The currency that the quantity is specified in + ClReqID: + type: string + description: Unique ID for this request, usually a UUID + Quantity: + type: string + description: Requested quantity in units of Currency + TransactTime: + type: string + format: date-time + description: 'An ISO-8601 UTC string' + MarketAccount: + type: string + description: Market account associated with the transaction + RoutingInfo: + type: object + properties: + WalletAddress: + type: string + description: Destination wallet address + Memo: + type: string + description: Optional memo for the transaction + DestinationTag: + type: string + description: Optional destination tag for the transaction + description: 'Provides routing info for the transaction such as WalletAddress. If this cannot be mapped to an existing address, it will be included on the BalanceTransaction. Cannot be provided alongside AddressID' + AddressID: + type: string + description: 'Optional address ID to attach to the withdraw transaction. Cannot be provided alongside RoutingInfo' + + WithdrawCancelRequestData: + type: object + required: [TransactionID] + additionalProperties: false + properties: + TransactionID: + type: string + description: ID of the transaction to cancel + + NewDepositRequestData: + type: object + required: [Currency, ClReqID, Quantity, TxHashes] + additionalProperties: false + properties: + Currency: + type: string + description: The currency that the quantity is specified in + ClReqID: + type: string + description: Unique ID for this request, usually a UUID + Quantity: + type: string + description: Requested quantity in units of Currency + TransactTime: + type: string + format: date-time + description: 'An ISO-8601 UTC string' + MarketAccount: + type: string + description: Market account associated with the transaction + TxHashes: + type: array + items: + type: object + required: [TxHash] + properties: + TxHash: + type: string + description: Transaction hash + description: List of blockchain transaction hashes associated with that deposit request + + UserConfigData: + type: object + required: [Key] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: Timestamp of the message + Mode: + type: string + enum: [Enabled, Disabled] + description: Optional mode on config, either Enabled or Disabled + Key: + type: string + description: Key of config + Value: + type: string + description: Value of config + + OHLCVParameters: + type: object + required: [symbol, resolution] + additionalProperties: false + properties: + symbol: + x-in: path + schema: + type: string + resolution: + x-in: path + schema: + type: string + examples: + - 1h + - 1d + startDate: + x-in: query + description: > + If provided, will return data starting at this time. An ISO-8601 UTC string of the form `2019-02-13T05:17:32.000000Z`. + schema: + type: string + format: date-time + endDate: + x-in: query + description: > + If provided, will return data ending at this time. An ISO-8601 UTC string of the form `2019-02-13T05:17:32.000000Z`. + schema: + type: string + format: date-time + examples: + - name: Request + payload: 'GET /v1/symbols/BTC-USD/ohlcv/1h' + + OHLCV: + type: object + required: [Timestamp, Symbol, Volume, Open, Close, High, Low, Ticks] + additionalProperties: false + properties: + Timestamp: + type: string + format: date-time + description: The start time for this interval + Symbol: + type: string + description: A unique symbol for this security + Volume: + type: string + format: decimal + description: Total base-currency volume traded (if any) for the symbol in the time interval + Open: + type: string + format: decimal + description: First trade price (if any) for the symbol in the time interval + Close: + type: string + format: decimal + description: Last trade price (if any) for the symbol in the time interval + High: + type: string + format: decimal + description: Highest traded price (if any) for the symbol in the time interval + Low: + type: string + format: decimal + description: Lowest traded price (if any) for the symbol in the time interval + Ticks: + type: string + format: decimal + description: Total number of ticks for the symbol in the time interval + examples: + - name: Response + payload: + type: OHLCV + ts: '2019-09-16T14:57:19.785823Z' + data: + - Timestamp: '2023-02-27T10:52:00.000000Z' + Symbol: 'BTC-USD' + Open: '23413.30000' + High: '23418.24' + Low: '23399.46' + Close: '23407.10000' + Volume: '0.49309984' + Ticks: 74 \ No newline at end of file diff --git a/src/integration/exchange/docs/scrypt-fix-api.pdf b/src/integration/exchange/docs/scrypt-fix-api.pdf new file mode 100644 index 0000000000000000000000000000000000000000..78368e83b6fefdf2f5180f9738556a737dcda044 GIT binary patch literal 208864 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�KI6;?Qql^YH?gyigENoKNCaDF6Z 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%0A9310b!c=<%>SW8`y;0M7rOZ$ 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 literal 0 HcmV?d00001