-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathwebsocket_api.yaml
137 lines (123 loc) · 4.62 KB
/
websocket_api.yaml
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
# TODO:
# Simplify this repo to re-use specifications
# Most of the two api's are identical, they just need slightly different formats / keywords in:
# - This file in particular
# - And in the response types
# Conceptually unique things to prototype
# Requests / responses
# Subscriptions
# Submit request (As it will have transaction types as a requirement)
# TODO: (Preserved from original)
asyncapi: '2.6.0'
defaultContentType: application/json
id: urn:xrp-ledger:public-api
tags:
- name: xrp-ledger
description: API related to XRP Ledger
info:
title: XRP Ledger Public API
contact:
name: Ripple Dev Support
url: https://ripple.com/contact
email: [email protected]
description: A WebSocket API used to query rippled.
license:
name: MIT License
url: https://opensource.org/license/mit/
version: 1.0.0
servers:
# TODO: Consider separating public and non-public servers (Preserved from original)
mainnet:
url: wss://s1.ripple.com:51233
protocol: wss
description: Mainnet Public API server
testnet:
url: wss://s.altnet.rippletest.net:51233
protocol: wss
description: Testnet (not for production usage)
# Refactored channels section for better reusability
channels:
# Root channel for all requests and responses
/:
description: The root channel for sending requests and receiving responses.
# Leverages operationId for clarity
subscribe:
operationId: subscribeToRoot
message:
oneOf:
# Reusable message references
- $ref: '#/components/messages/AccountChannelsRequest'
- $ref: '#/components/messages/AccountInfoRequest'
- $ref: '#/components/messages/AccountLinesRequest'
- $ref: '#/components/messages/LedgerEntryRequest'
# ... (Add references for additional requests)
publish:
operationId: publishToRoot
message:
oneOf:
- $ref: '#/components/messages/AccountChannelsResponse'
- $ref: '#/components/messages/AccountInfoResponseV1'
- $ref: '#/components/messages/AccountLinesResponse'
- $ref: '#/components/messages/LedgerEntryResponse'
# ... (Add references for additional responses)
# Moved message definitions to a separate components section
components:
messages:
# Account channels request message
AccountChannelsRequest:
name: AccountChannelsRequest
messageId: AccountChannelsRequest
contentType: application/json
payload:
$ref: './requests/account_channels_async_api.yaml#/components/schemas/AccountChannelsRequest'
# Account info request message
AccountInfoRequest:
name: AccountInfoRequest
messageId: AccountInfoRequest
contentType: application/json
payload:
$ref: './requests/account_info_async_api.yaml#/components/schemas/AccountInfoRequest'
# Account lines request message
AccountLinesRequest:
name: AccountLinesRequest
messageId: AccountLinesRequest
contentType: application/json
payload:
$ref: './requests/account_lines_async_api.yaml#/components/schemas/AccountLinesRequest'
# Ledger entry request message
LedgerEntryRequest:
name: LedgerEntryRequest
messageId: LedgerEntryRequest
contentType: application/json
payload:
$ref: './requests/ledger_entry_async_api.yaml#/components/schemas/LedgerEntryRequest'
# ... (Add definitions for additional message types)
# Account channels response message
AccountChannelsResponse:
name: AccountChannelsResponse
messageId: AccountChannelsResponse
contentType: application/json
payload:
$ref: './requests/account_channels_async_api.yaml#/components/schemas/AccountChannelsResponse'
# Account info response message (version 1)
AccountInfoResponseV1:
name: AccountInfoResponse
messageId: AccountInfoResponseV1 # Consider using a version suffix
contentType: application/json
payload:
$ref: './requests/account_info_async_api.yaml#/components/schemas/AccountInfoResponseV1'
# Account lines response message
AccountLinesResponse:
name: AccountLinesResponse
messageId: AccountLinesResponse
contentType: application/json
payload:
$ref: './requests/account_lines_async_api.yaml#/components/schemas/AccountLinesResponse'
# Ledger entry response message
LedgerEntryResponse:
name: LedgerEntryResponse
messageId: LedgerEntryResponse
contentType: application/json
payload:
$ref: './requests/ledger_entry_async_api.yaml#/components/schemas/LedgerEntryResponse'
# ... (Add definitions for additional response types)