-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrpc-api-spec.yaml
More file actions
180 lines (171 loc) · 4.22 KB
/
rpc-api-spec.yaml
File metadata and controls
180 lines (171 loc) · 4.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
openapi: 3.0.3
info:
title: Validation Station API
version: 1.0.0
description: API for decentralized, agent-based RPC routing with dynamic failover and pricing.
servers:
- url: https://api.validationstation.io/v1
components:
schemas:
Address:
type: string
pattern: '^0x[a-fA-F0-9]{40}$'
description: Ethereum address
Score:
type: object
description: Provider performance metrics used to calculate penalty score.
properties:
latencyMs:
type: number
latencyIdealMs:
type: number
successRate:
type: number
format: float
throughput:
type: number
throughputIdeal:
type: number
outstandingRequests:
type: number
outstandingRequestsIdeal:
type: number
weightLatency:
type: number
weightSuccessRate:
type: number
weightThroughput:
type: number
weightOutstandingRequests:
type: number
ClientMetrics:
type: object
description: Performance metrics related to the user's request behavior.
properties:
totalRequests:
type: integer
successfulResponses:
type: integer
successRate:
type: number
format: float
User:
type: object
properties:
id:
$ref: '#/components/schemas/Address'
metrics:
$ref: '#/components/schemas/ClientMetrics'
Provider:
type: object
properties:
id:
$ref: '#/components/schemas/Address'
type:
type: string
enum: [proxy, node, validator]
supportedChains:
type: array
items:
type: string
score:
$ref: '#/components/schemas/Score'
pricePerMillionRequests:
type: number
Broker:
type: object
properties:
id:
$ref: '#/components/schemas/Address'
stakedValue:
type: number
routingScore:
type: number
managedProviders:
type: array
items:
$ref: '#/components/schemas/Address'
Chain:
type: object
properties:
id:
type: string
name:
type: string
rpcEndpoints:
type: array
items:
type: string
activeBrokers:
type: array
items:
$ref: '#/components/schemas/Address'
paths:
/users/{id}:
get:
summary: Get a user by Ethereum address
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/Address'
responses:
'200':
description: A user object
content:
application/json:
schema:
$ref: '#/components/schemas/User'
/users/{id}/metrics:
get:
summary: Get client metrics for a user
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/Address'
responses:
'200':
description: Metrics data for the user
content:
application/json:
schema:
$ref: '#/components/schemas/ClientMetrics'
/providers:
get:
summary: List all registered providers
responses:
'200':
description: A list of providers
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Provider'
/brokers:
get:
summary: List all brokers
responses:
'200':
description: A list of brokers
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Broker'
/chains:
get:
summary: List supported chains
responses:
'200':
description: A list of chains
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Chain'