Implements comprehensive SDK support for three core services across four programming languages (JavaScript/TypeScript, Python, Go, Rust). ## New SDKs ### Wallet SDK - Key management (create, import, export) - Transaction signing - Message signing and verification - Balance and UTXO queries - Stealth address support ### RPC SDK - Block and transaction queries - Chain state information - Fee estimation - Mempool information - WebSocket subscriptions for real-time updates ### Storage SDK - Content upload and download - Pinning operations - CAR file support - Directory management - Gateway URL generation ## Shared Infrastructure - JSON Schema definitions for all 11 services - Common type definitions (Address, Amount, UTXO, etc.) - Unified error handling patterns - Builder patterns for configuration ## Package Updates - JavaScript: Updated to @synor/sdk with module exports - Python: Updated to synor-sdk with websockets dependency - Go: Added gorilla/websocket dependency - Rust: Added base64, urlencoding, multipart support ## Fixes - Fixed Tensor Default trait implementation - Fixed ProcessorType enum casing
186 lines
4.8 KiB
JSON
186 lines
4.8 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://synor.io/schemas/common.json",
|
|
"title": "Synor Common Types",
|
|
"description": "Shared type definitions used across all Synor SDKs",
|
|
|
|
"$defs": {
|
|
"SynorConfig": {
|
|
"type": "object",
|
|
"description": "Base configuration for all Synor SDK clients",
|
|
"properties": {
|
|
"apiKey": {
|
|
"type": "string",
|
|
"description": "API key for authentication"
|
|
},
|
|
"endpoint": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"description": "API endpoint URL"
|
|
},
|
|
"timeout": {
|
|
"type": "integer",
|
|
"minimum": 1000,
|
|
"maximum": 300000,
|
|
"default": 30000,
|
|
"description": "Request timeout in milliseconds"
|
|
},
|
|
"retries": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 10,
|
|
"default": 3,
|
|
"description": "Number of retry attempts"
|
|
},
|
|
"debug": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Enable debug logging"
|
|
}
|
|
},
|
|
"required": ["apiKey"]
|
|
},
|
|
|
|
"Address": {
|
|
"type": "string",
|
|
"pattern": "^synor1[a-z0-9]{38}$",
|
|
"description": "Synor blockchain address (bech32 encoded)"
|
|
},
|
|
|
|
"TxHash": {
|
|
"type": "string",
|
|
"pattern": "^[a-f0-9]{64}$",
|
|
"description": "Transaction hash (32 bytes hex)"
|
|
},
|
|
|
|
"BlockHash": {
|
|
"type": "string",
|
|
"pattern": "^[a-f0-9]{64}$",
|
|
"description": "Block hash (32 bytes hex)"
|
|
},
|
|
|
|
"ContentId": {
|
|
"type": "string",
|
|
"pattern": "^(Qm[1-9A-HJ-NP-Za-km-z]{44}|bafy[a-z0-9]{55})$",
|
|
"description": "Content identifier (IPFS CID v0 or v1)"
|
|
},
|
|
|
|
"Amount": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+(\\.[0-9]+)?$",
|
|
"description": "Decimal amount as string for precision"
|
|
},
|
|
|
|
"Timestamp": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "Unix timestamp in milliseconds"
|
|
},
|
|
|
|
"Duration": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "Duration in seconds"
|
|
},
|
|
|
|
"PublicKey": {
|
|
"type": "string",
|
|
"pattern": "^[a-f0-9]{66}$",
|
|
"description": "Compressed public key (33 bytes hex)"
|
|
},
|
|
|
|
"Signature": {
|
|
"type": "string",
|
|
"pattern": "^[a-f0-9]{128,144}$",
|
|
"description": "ECDSA or Schnorr signature"
|
|
},
|
|
|
|
"UTXO": {
|
|
"type": "object",
|
|
"properties": {
|
|
"txid": { "$ref": "#/$defs/TxHash" },
|
|
"vout": { "type": "integer", "minimum": 0 },
|
|
"amount": { "$ref": "#/$defs/Amount" },
|
|
"address": { "$ref": "#/$defs/Address" },
|
|
"confirmations": { "type": "integer", "minimum": 0 },
|
|
"scriptPubKey": { "type": "string" }
|
|
},
|
|
"required": ["txid", "vout", "amount", "address"]
|
|
},
|
|
|
|
"Balance": {
|
|
"type": "object",
|
|
"properties": {
|
|
"confirmed": { "$ref": "#/$defs/Amount" },
|
|
"unconfirmed": { "$ref": "#/$defs/Amount" },
|
|
"total": { "$ref": "#/$defs/Amount" }
|
|
},
|
|
"required": ["confirmed", "unconfirmed", "total"]
|
|
},
|
|
|
|
"ChainId": {
|
|
"type": "string",
|
|
"enum": ["synor-mainnet", "synor-testnet", "ethereum", "bitcoin", "solana", "polygon", "arbitrum", "optimism"],
|
|
"description": "Blockchain network identifier"
|
|
},
|
|
|
|
"Priority": {
|
|
"type": "string",
|
|
"enum": ["low", "medium", "high", "urgent"],
|
|
"description": "Transaction priority level"
|
|
},
|
|
|
|
"Status": {
|
|
"type": "string",
|
|
"enum": ["pending", "processing", "completed", "failed", "cancelled"],
|
|
"description": "Generic operation status"
|
|
},
|
|
|
|
"PaginationParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 },
|
|
"offset": { "type": "integer", "minimum": 0, "default": 0 },
|
|
"cursor": { "type": "string" }
|
|
}
|
|
},
|
|
|
|
"PaginatedResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": { "type": "array" },
|
|
"total": { "type": "integer" },
|
|
"hasMore": { "type": "boolean" },
|
|
"nextCursor": { "type": "string" }
|
|
},
|
|
"required": ["items", "hasMore"]
|
|
},
|
|
|
|
"ErrorCode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"INVALID_REQUEST",
|
|
"AUTHENTICATION_FAILED",
|
|
"AUTHORIZATION_DENIED",
|
|
"RESOURCE_NOT_FOUND",
|
|
"RATE_LIMITED",
|
|
"INTERNAL_ERROR",
|
|
"SERVICE_UNAVAILABLE",
|
|
"TIMEOUT",
|
|
"VALIDATION_ERROR",
|
|
"INSUFFICIENT_FUNDS"
|
|
]
|
|
},
|
|
|
|
"ErrorResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": { "$ref": "#/$defs/ErrorCode" },
|
|
"message": { "type": "string" },
|
|
"details": { "type": "object" },
|
|
"requestId": { "type": "string" }
|
|
},
|
|
"required": ["code", "message"]
|
|
}
|
|
}
|
|
}
|