freelance-project-34-market.../deps/test-task-2025-06-30-v1/docs/readme.md

1.4 KiB

Requirements

Tickers of interest:

  • EURUSD
  • USDJPY
  • GBPUSD
  • AUDUSD
  • USDCAD

Rest API - https://rates.emcont.com

Scrape every second;

Schema: Ticker: id: foreign_key market timestamp: datetime # (ask + bid) / 2 value: decimal

Store up to 30 minutes of recent tickers;

Return via websocket up to 30 minutes of recent tickers;

AsyncAPI

AsyncAPI:
	Endpoints:
		subscribe:
			Request: SubscribeAction
			Response: AssetHistoryResponse | AssetTickerResponse
		list:
			Request: AssetsAction
			Response: AssetsResponse
	Schema:
		SubscribeAction:
			action: Literal['subscribe']
			message:
				assetId: 1
		AssetHistoryResponse:
			action: Literal['asset_history']
			message:
				points:
					- assetName: EURUSD
						time: 1455883484
						assetId: 1
						value: 1.110481
					- assetName: EURUSD
						time: 1455883485
						assetId: 1
						value: 1.110948
					- assetName: EURUSD
						time: 1455883486
						assetId: 1
						value: 1.111122
		AssetTickerResponse:
			action: Literal['point']
			message:
				assetName: EURUSD
				time: 1455883484
				assetId: 1
				value: 1.110481
		AssetsAction:
			action: Literal['assets']
			message: {}
		AssetsResponse:
			action: Literal['assets']
			message:
				assets:
					- id: 1
						name: EURUSD
					- id: 2
						name: USDJPY
					- id: 3
						name: GBPUSD
					- id: 4
						name: AUDUSD
					- id: 5
						name: USDCAD

Services:

web:
	ports:
		- 8080:80