[package]
edition = "2024"
rust-version = "1.95"
name = "projectx-client"
version = "3.0.0"
build = false
include = [
"/examples/**",
"/src/**",
"/tests/**",
"/CHANGELOG.md",
"/Cargo.lock",
"/Cargo.toml",
"/LICENSE",
"/README.md",
"/SECURITY.md",
]
publish = ["crates-io"]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "An async, provider-native Rust client for the ProjectX Gateway API"
homepage = "https://github.com/SharurTrading/projectx-rs"
documentation = "https://docs.rs/projectx-client"
readme = "README.md"
keywords = [
"projectx",
"topstepx",
"trading",
"futures",
"api-client",
]
categories = [
"api-bindings",
"asynchronous",
"network-programming",
]
license = "MIT-0"
repository = "https://github.com/SharurTrading/projectx-rs"
[features]
default = []
live-tests = []
[lib]
name = "projectx_client"
path = "src/lib.rs"
[[example]]
name = "quick_start"
path = "examples/quick_start.rs"
[[example]]
name = "realtime"
path = "examples/realtime.rs"
[[example]]
name = "session_validation"
path = "examples/session_validation.rs"
[[test]]
name = "gateway_surface"
path = "tests/gateway_surface.rs"
[[test]]
name = "live_read_only"
path = "tests/live_read_only.rs"
[[test]]
name = "public_api"
path = "tests/public_api.rs"
[[test]]
name = "rate_limits"
path = "tests/rate_limits.rs"
[[test]]
name = "realtime_lifecycle"
path = "tests/realtime_lifecycle.rs"
[[test]]
name = "realtime_secret_logging"
path = "tests/realtime_secret_logging.rs"
[[test]]
name = "rest_endpoints"
path = "tests/rest_endpoints.rs"
[[test]]
name = "retry_policy"
path = "tests/retry_policy.rs"
[[test]]
name = "schema_contracts"
path = "tests/schema_contracts.rs"
[dependencies.data-encoding]
version = "2.11.0"
features = ["alloc"]
default-features = false
[dependencies.futures-util]
version = "0.3.33"
[dependencies.httpdate]
version = "1.0.3"
[dependencies.jiff]
version = "0.2.35"
features = [
"serde",
"std",
]
default-features = false
[dependencies.parking_lot]
version = "0.12.5"
[dependencies.rand]
version = "0.10.2"
[dependencies.reqwest]
version = "0.13.4"
features = [
"json",
"rustls",
"stream",
]
default-features = false
[dependencies.rust_decimal]
version = "1.42.1"
[dependencies.secrecy]
version = "0.10.3"
[dependencies.serde]
version = "1.0.229"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.151"
features = ["raw_value"]
[dependencies.serde_repr]
version = "0.1.21"
[dependencies.sha1]
version = "0.11.0"
default-features = false
[dependencies.thiserror]
version = "2.0.19"
[dependencies.tokio]
version = "1.53.1"
features = [
"macros",
"rt",
"sync",
"time",
]
[dependencies.tokio-tungstenite]
version = "0.30.0"
default-features = false
[dependencies.tokio-util]
version = "0.7.19"
features = ["rt"]
[dependencies.tracing]
version = "0.1.44"
[dependencies.url]
version = "2.5.8"
[dev-dependencies.httpmock]
version = "0.8.3"
[dev-dependencies.log]
version = "0.4.33"
[dev-dependencies.tokio]
version = "1.53.1"
features = [
"io-util",
"macros",
"net",
"rt",
"test-util",
]
[dev-dependencies.tokio-tungstenite]
version = "0.30.0"
features = ["handshake"]
default-features = false
[lints.clippy]
await_holding_lock = "deny"
expect_used = "deny"
module_name_repetitions = "allow"
unwrap_used = "deny"
[lints.clippy.pedantic]
level = "deny"
priority = -1
[lints.rust]
missing_docs = "deny"
unsafe_code = "forbid"