<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.spiretrading.com/index.php?action=history&amp;feed=atom&amp;title=Definitions_Server</id>
	<title>Definitions Server - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.spiretrading.com/index.php?action=history&amp;feed=atom&amp;title=Definitions_Server"/>
	<link rel="alternate" type="text/html" href="https://wiki.spiretrading.com/index.php?title=Definitions_Server&amp;action=history"/>
	<updated>2026-05-28T23:02:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.spiretrading.com/index.php?title=Definitions_Server&amp;diff=135&amp;oldid=prev</id>
		<title>Kamal: Created page with &quot;The Definitions Server provides centralized reference data for the trading platform. It disseminates system-wide definitions including country codes, currencies, trading venue...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.spiretrading.com/index.php?title=Definitions_Server&amp;diff=135&amp;oldid=prev"/>
		<updated>2026-05-27T19:51:39Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;The Definitions Server provides centralized reference data for the trading platform. It disseminates system-wide definitions including country codes, currencies, trading venue...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The Definitions Server provides centralized reference data for the trading platform. It disseminates system-wide definitions including country codes, currencies, trading venues, order routing destinations, time zones, exchange rates, compliance rule schemas, and trading schedules. By centralizing these definitions, the server ensures consistent metadata across all components of the system.&lt;br /&gt;
&lt;br /&gt;
The Definitions Server integrates with the [[Service Locator]] for authentication and service registration. All reference data is loaded from YAML and CSV configuration files at startup.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
The Definitions Server is configured via a YAML file with two top-level sections (&amp;lt;code&amp;gt;server&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;service_locator&amp;lt;/code&amp;gt;) plus several inline fields that specify reference data files and platform metadata. Below is the structure of the configuration file with example values:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server:&lt;br /&gt;
  # Primary network interface and port the Definitions Server binds to.&lt;br /&gt;
  interface: &amp;quot;0.0.0.0:20200&amp;quot;&lt;br /&gt;
  # List of addresses the server is reachable at (for registration with Service Locator).&lt;br /&gt;
  # Typically includes both public-facing and local addresses.&lt;br /&gt;
  addresses: [&amp;quot;198.51.100.5:20200&amp;quot;, &amp;quot;10.0.0.5:20200&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
service_locator:&lt;br /&gt;
  # The address of the Service Locator (host:port).&lt;br /&gt;
  address: &amp;quot;10.0.0.5:20000&amp;quot;&lt;br /&gt;
  # The account username used by the Definitions Server to authenticate with the Service Locator.&lt;br /&gt;
  username: definitions_server&lt;br /&gt;
  # The password for the Definitions Server's Service Locator account.&lt;br /&gt;
  password: [REQUIRED]&lt;br /&gt;
&lt;br /&gt;
# Minimum version of the Spire client required to connect.&lt;br /&gt;
minimum_spire_version: &amp;quot;1234&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Name of the organization operating the platform.&lt;br /&gt;
organization: &amp;quot;Spire Trading Inc.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Paths to reference data files.&lt;br /&gt;
time_zones: &amp;quot;time_zones.csv&amp;quot;&lt;br /&gt;
countries: &amp;quot;countries.yml&amp;quot;&lt;br /&gt;
currencies: &amp;quot;currencies.yml&amp;quot;&lt;br /&gt;
venues: &amp;quot;venues.yml&amp;quot;&lt;br /&gt;
destinations: &amp;quot;destinations.yml&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Exchange rates between currency pairs.&lt;br /&gt;
exchange_rates:&lt;br /&gt;
  - symbol: &amp;quot;USD/CAD&amp;quot;&lt;br /&gt;
    rate: &amp;quot;1.35&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# NTP servers registered as time service endpoints.&lt;br /&gt;
ntp_pool: [&amp;quot;pool.ntp.org:123&amp;quot;]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; script is provided to generate the final &amp;lt;code&amp;gt;config.yml&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;config.default.yml&amp;lt;/code&amp;gt; template. The script also copies default reference data files if they do not already exist. Usage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  --local 0.0.0.0           # Local interface (default: auto-detected IP)&lt;br /&gt;
  --world 198.51.100.5      # Global/public interface (optional)&lt;br /&gt;
  --address 10.0.0.5:20000  # Service Locator address (default: local_interface:20000)&lt;br /&gt;
  --password [REQUIRED]     # Service password for authentication&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference Data Files ==&lt;br /&gt;
&lt;br /&gt;
The Definitions Server loads reference data from the following files:&lt;br /&gt;
&lt;br /&gt;
=== countries.yml ===&lt;br /&gt;
&lt;br /&gt;
Defines country codes according to the ISO 3166 standard. A utility script (&amp;lt;code&amp;gt;update_countries.sh&amp;lt;/code&amp;gt;) is provided to download and update country definitions from the official ISO 3166 data source. The script uses &amp;lt;code&amp;gt;country_code_parser.py&amp;lt;/code&amp;gt; to parse the CSV data and generate the YAML file.&lt;br /&gt;
&lt;br /&gt;
=== currencies.yml ===&lt;br /&gt;
&lt;br /&gt;
Defines currencies including their codes, names, and decimal places.&lt;br /&gt;
&lt;br /&gt;
=== venues.yml ===&lt;br /&gt;
&lt;br /&gt;
Defines trading venues (exchanges and markets) including their country, time zone, and currency.&lt;br /&gt;
&lt;br /&gt;
=== destinations.yml ===&lt;br /&gt;
&lt;br /&gt;
Defines order routing destinations and their applicable venues. Preferred destinations specify default routing per venue.&lt;br /&gt;
&lt;br /&gt;
=== time_zones.csv ===&lt;br /&gt;
&lt;br /&gt;
Contains time zone database information in CSV format for accurate timestamp conversion across regions.&lt;br /&gt;
&lt;br /&gt;
=== trading_schedule.yml ===&lt;br /&gt;
&lt;br /&gt;
Defines market hours, holidays, and trading events.&lt;br /&gt;
&lt;br /&gt;
== Management ==&lt;br /&gt;
&lt;br /&gt;
The Definitions Server is controlled using three operational scripts: &amp;lt;code&amp;gt;start.sh&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;stop.sh&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;check.sh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== start.sh ===&lt;br /&gt;
&lt;br /&gt;
* Exits immediately if the server is already running.&lt;br /&gt;
* Creates a &amp;lt;code&amp;gt;logs/&amp;lt;/code&amp;gt; directory if necessary.&lt;br /&gt;
* Moves any existing &amp;lt;code&amp;gt;srv_*.log&amp;lt;/code&amp;gt; files into &amp;lt;code&amp;gt;logs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Starts the &amp;lt;code&amp;gt;DefinitionsServer&amp;lt;/code&amp;gt; process in the background.&lt;br /&gt;
* Reads network interfaces from &amp;lt;code&amp;gt;config.yml&amp;lt;/code&amp;gt; and waits until the server is listening on at least one configured address.&lt;br /&gt;
&lt;br /&gt;
This ensures the server is fully initialized before the script exits.&lt;br /&gt;
&lt;br /&gt;
=== stop.sh ===&lt;br /&gt;
&lt;br /&gt;
* Sends &amp;lt;code&amp;gt;SIGINT&amp;lt;/code&amp;gt; to request a graceful shutdown.&lt;br /&gt;
* Waits for termination using exponential backoff (up to 300 seconds).&lt;br /&gt;
* Sends &amp;lt;code&amp;gt;SIGKILL&amp;lt;/code&amp;gt; if the server fails to stop cleanly.&lt;br /&gt;
* Appends a forced-termination message to the most recent log file (if applicable).&lt;br /&gt;
&lt;br /&gt;
This guarantees consistent shutdown behavior across normal and exceptional conditions.&lt;br /&gt;
&lt;br /&gt;
=== check.sh ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;check.sh&amp;lt;/code&amp;gt; script verifies whether the server is currently running by inspecting the PID recorded in &amp;lt;code&amp;gt;pid.lock&amp;lt;/code&amp;gt; and testing whether the associated process exists.&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
Upon startup, older log files are moved into the &amp;lt;code&amp;gt;logs/&amp;lt;/code&amp;gt; directory.&lt;/div&gt;</summary>
		<author><name>Kamal</name></author>
		
	</entry>
</feed>