@neuronetiq/marketplace-contracts
v0.2.0
Published
Contracts for ML Marketplace - Pod I/O, Marketplace API, and Infra Integration
Maintainers
Readme
@yourorg/marketplace-contracts
Contracts for ML Marketplace - Pod I/O, Marketplace API, and Infrastructure Integration
Overview
This package provides TypeScript contracts and Zod schemas for the ML Marketplace ecosystem, enabling seamless integration between:
- ML Inference Pods (RunPod, AWS, etc.)
- Marketplace API (Model catalog, deployment management)
- Infrastructure Service (Signal/consensus storage)
Installation
npm install @yourorg/marketplace-contracts
# or
pnpm add @yourorg/marketplace-contracts
# or
yarn add @yourorg/marketplace-contractsQuick Start
Pod I/O (Inference)
import { SignalInferenceRequest, SignalInferenceResponse } from '@yourorg/marketplace-contracts';
// Create inference request
const request: SignalInferenceRequestT = {
request_id: 'uuid-here',
timestamp: '2025-09-02T20:00:00Z',
symbol: 'EURUSD',
timeframe: '5m',
bars: [/* market data */],
model_config: {
model_version: '1.0.0',
features: ['rsi', 'macd', 'bollinger']
}
};
// Validate request
const result = SignalInferenceRequest.safeParse(request);
if (result.success) {
// Send to inference pod
const response = await fetch('/infer', {
method: 'POST',
body: JSON.stringify(result.data)
});
}Marketplace API
import { CatalogRequest, CatalogResponse } from '@yourorg/marketplace-contracts';
// Request model catalog
const catalogRequest: CatalogRequestT = {
task: 'signal',
domain: 'forex',
sort_by: 'sharpe_ratio',
sort_order: 'desc',
limit: 20
};
// Validate and send
const result = CatalogRequest.safeParse(catalogRequest);
if (result.success) {
const response = await fetch('/api/catalog', {
method: 'POST',
body: JSON.stringify(result.data)
});
}Infrastructure Integration
import {
SignalWrite,
withMarketplaceHeaders,
makeIdempotencyKey
} from '@yourorg/marketplace-contracts';
// Create signal write
const signalWrite: SignalWriteT = {
symbol: 'EURUSD',
timeframe: '5m',
decision: 'BUY',
confidence: 0.85,
model_version: '1.0.0',
timestamp: '2025-09-02T20:00:00Z',
vendor_id: 'vendor_abc',
deployment_id: 'deployment_xyz'
};
// Generate headers
const headers = withMarketplaceHeaders({
token: 'your-infra-token',
contractsVersion: '0.1.0',
idempotencyKey: makeIdempotencyKey('EURUSD', '5m'),
vendorId: 'vendor_abc',
deploymentId: 'deployment_xyz'
});
// Send to infrastructure
const response = await fetch('/api/signals/store', {
method: 'POST',
headers,
body: JSON.stringify(signalWrite)
});API Reference
Pod I/O Schemas
SignalInferenceRequest- Input to signal inference podsSignalInferenceResponse- Output from signal inference podsConsensusInferenceRequest- Input to consensus inference podsConsensusInferenceResponse- Output from consensus inference podsOptimizerRequest- Input to optimization podsOptimizerResponse- Output from optimization pods
Marketplace API Schemas
CatalogModel- Model entry in marketplace catalogModelVersion- Specific model version detailsDeployment- Active deployment informationHealth- Deployment health statusCatalogRequest- Catalog query parametersCatalogResponse- Catalog query results
Infrastructure Write Schemas
SignalWrite- Signal data for infrastructureConsensusWrite- Consensus data for infrastructureBatchSignalWrite- Batch signal writesBatchConsensusWrite- Batch consensus writesWriteResponse- Infrastructure write response
Helper Functions
withMarketplaceHeaders()- Generate marketplace headersmakeIdempotencyKey()- Create idempotency keysvalidateSignalWrite()- Validate signal datavalidateConsensusWrite()- Validate consensus dataaggregateSignals()- Aggregate signals into consensus
Idempotency
All write operations use 5-second idempotency slots:
import { makeIdempotencyKey } from '@yourorg/marketplace-contracts';
// Generate idempotency key for current 5-second slot
const key = makeIdempotencyKey('EURUSD', '5m');
// Format: "EURUSD:5m:345059280"
// Where 345059280 = Math.floor(Date.now() / 5000)Headers
Marketplace-to-Infrastructure communications require specific headers:
import { withMarketplaceHeaders } from '@yourorg/marketplace-contracts';
const headers = withMarketplaceHeaders({
token: 'bearer-token',
contractsVersion: '0.1.0',
idempotencyKey: 'EURUSD:5m:345059280',
vendorId: 'vendor_abc',
deploymentId: 'deployment_xyz'
});
// Generates:
// {
// 'Authorization': 'Bearer bearer-token',
// 'X-Marketplace-Contracts-Version': '0.1.0',
// 'X-Idempotency-Key': 'EURUSD:5m:345059280',
// 'X-Vendor-ID': 'vendor_abc',
// 'X-Deployment-ID': 'deployment_xyz',
// 'Content-Type': 'application/json'
// }Version Policy
- Major versions (1.x.x): Breaking changes to schemas
- Minor versions (0.x.x): New features, backward compatible
- Patch versions (0.1.x): Bug fixes, backward compatible
Infrastructure accepts ^0.1.x and rejects major mismatches.
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
License
MIT License - see LICENSE file for details.
Support
- GitHub Issues: Report bugs and request features
- Documentation: Full API documentation
- Community: Join our Discord
