Skip to content
This repository was archived by the owner on Aug 15, 2025. It is now read-only.

Commit f8a81db

Browse files
chore(bot): update openapi3 schema
1 parent a49351c commit f8a81db

File tree

2 files changed

+754
-0
lines changed

2 files changed

+754
-0
lines changed
Lines changed: 377 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,377 @@
1+
openapi: 3.0.0
2+
info:
3+
title: polyproto mls APIs
4+
license:
5+
name: MIT License
6+
url: https://raw.githubusercontent.com/polyphony-chat/docs/refs/heads/main/LICENSE
7+
version: v0.1.0-alpha.2
8+
tags: []
9+
paths:
10+
/.p2/mls/v1/groups:
11+
post:
12+
operationId: routes_createGroup
13+
description: Create a new MLS group
14+
parameters: []
15+
responses:
16+
'200':
17+
description: The request has succeeded.
18+
content:
19+
application/json:
20+
schema:
21+
$ref: '#/components/schemas/Group'
22+
requestBody:
23+
required: true
24+
content:
25+
application/json:
26+
schema:
27+
$ref: '#/components/schemas/KeyPackage'
28+
/.p2/mls/v1/groups/{groupId}:
29+
get:
30+
operationId: routes_getGroup
31+
description: Get information about an MLS group
32+
parameters:
33+
- name: groupId
34+
in: path
35+
required: true
36+
schema:
37+
type: string
38+
responses:
39+
'200':
40+
description: The request has succeeded.
41+
content:
42+
application/json:
43+
schema:
44+
$ref: '#/components/schemas/Group'
45+
/.p2/mls/v1/groups/{groupId}/commits:
46+
post:
47+
operationId: routes_submitCommit
48+
description: Submit a commit to apply pending proposals
49+
parameters:
50+
- name: groupId
51+
in: path
52+
required: true
53+
schema:
54+
type: string
55+
responses:
56+
'200':
57+
description: The request has succeeded.
58+
content:
59+
application/json:
60+
schema:
61+
$ref: '#/components/schemas/Welcome'
62+
requestBody:
63+
required: true
64+
content:
65+
application/json:
66+
schema:
67+
$ref: '#/components/schemas/Commit'
68+
/.p2/mls/v1/groups/{groupId}/commits/latest:
69+
get:
70+
operationId: routes_getLatestCommit
71+
description: Get the latest commit for a group
72+
parameters:
73+
- name: groupId
74+
in: path
75+
required: true
76+
schema:
77+
type: string
78+
responses:
79+
'200':
80+
description: The request has succeeded.
81+
content:
82+
application/json:
83+
schema:
84+
$ref: '#/components/schemas/Commit'
85+
/.p2/mls/v1/groups/{groupId}/members/{memberId}:
86+
get:
87+
operationId: routes_getMember
88+
description: Get the current state of a group member
89+
parameters:
90+
- name: groupId
91+
in: path
92+
required: true
93+
schema:
94+
type: string
95+
- name: memberId
96+
in: path
97+
required: true
98+
schema:
99+
type: string
100+
responses:
101+
'200':
102+
description: The request has succeeded.
103+
content:
104+
application/json:
105+
schema:
106+
$ref: '#/components/schemas/GroupMember'
107+
put:
108+
operationId: routes_updateMember
109+
description: Update a member's key package
110+
parameters:
111+
- name: groupId
112+
in: path
113+
required: true
114+
schema:
115+
type: string
116+
- name: memberId
117+
in: path
118+
required: true
119+
schema:
120+
type: string
121+
responses:
122+
'204':
123+
description: 'There is no content to send for this request, but the headers may be useful. '
124+
requestBody:
125+
required: true
126+
content:
127+
application/json:
128+
schema:
129+
$ref: '#/components/schemas/KeyPackage'
130+
delete:
131+
operationId: routes_removeMember
132+
description: Remove a member from the group
133+
parameters:
134+
- name: groupId
135+
in: path
136+
required: true
137+
schema:
138+
type: string
139+
- name: memberId
140+
in: path
141+
required: true
142+
schema:
143+
type: string
144+
responses:
145+
'204':
146+
description: 'There is no content to send for this request, but the headers may be useful. '
147+
/.p2/mls/v1/groups/{groupId}/proposals:
148+
post:
149+
operationId: routes_submitProposal
150+
description: Submit a proposal to modify the group
151+
parameters:
152+
- name: groupId
153+
in: path
154+
required: true
155+
schema:
156+
type: string
157+
responses:
158+
'204':
159+
description: 'There is no content to send for this request, but the headers may be useful. '
160+
requestBody:
161+
required: true
162+
content:
163+
application/json:
164+
schema:
165+
$ref: '#/components/schemas/Proposal'
166+
get:
167+
operationId: routes_getProposals
168+
description: Get all pending proposals for a group
169+
parameters:
170+
- name: groupId
171+
in: path
172+
required: true
173+
schema:
174+
type: string
175+
responses:
176+
'200':
177+
description: The request has succeeded.
178+
content:
179+
application/json:
180+
schema:
181+
type: array
182+
items:
183+
$ref: '#/components/schemas/Proposal'
184+
components:
185+
schemas:
186+
ClientCapabilities:
187+
type: object
188+
required:
189+
- versions
190+
- ciphersuites
191+
- extensions
192+
properties:
193+
versions:
194+
type: array
195+
items:
196+
type: string
197+
description: Supported MLS protocol versions
198+
ciphersuites:
199+
type: array
200+
items:
201+
type: string
202+
description: Supported ciphersuites
203+
extensions:
204+
type: array
205+
items:
206+
type: string
207+
description: Supported extensions
208+
description: Client capabilities and supported features
209+
Commit:
210+
type: object
211+
required:
212+
- id
213+
- groupId
214+
- epoch
215+
- proposals
216+
- signature
217+
properties:
218+
id:
219+
type: string
220+
description: Unique identifier for this commit
221+
groupId:
222+
type: string
223+
description: The group ID this commit applies to
224+
epoch:
225+
type: integer
226+
format: int32
227+
description: The epoch number this commit creates
228+
proposals:
229+
type: array
230+
items:
231+
$ref: '#/components/schemas/Proposal'
232+
description: The proposals being committed
233+
signature:
234+
type: string
235+
format: byte
236+
description: The commit sender's signature
237+
description: Represents a commit message that initiates a new epoch
238+
Group:
239+
type: object
240+
required:
241+
- id
242+
- epoch
243+
- members
244+
- publicKey
245+
properties:
246+
id:
247+
type: string
248+
description: Unique identifier for the group
249+
epoch:
250+
type: integer
251+
format: int32
252+
description: Current epoch number
253+
members:
254+
type: array
255+
items:
256+
$ref: '#/components/schemas/GroupMember'
257+
description: List of current group members
258+
publicKey:
259+
type: string
260+
format: byte
261+
description: Group's public key
262+
description: Represents a group in MLS
263+
GroupMember:
264+
type: object
265+
required:
266+
- id
267+
- keyPackage
268+
- role
269+
properties:
270+
id:
271+
type: string
272+
description: Unique identifier for the member
273+
keyPackage:
274+
allOf:
275+
- $ref: '#/components/schemas/KeyPackage'
276+
description: The member's key package
277+
role:
278+
allOf:
279+
- $ref: '#/components/schemas/MemberRole'
280+
description: The member's role in the group
281+
description: Represents a member in an MLS group
282+
KeyPackage:
283+
type: object
284+
required:
285+
- id
286+
- publicKey
287+
- capabilities
288+
- signature
289+
properties:
290+
id:
291+
type: string
292+
description: Unique identifier for this key package
293+
publicKey:
294+
type: string
295+
format: byte
296+
description: The client's public key
297+
capabilities:
298+
allOf:
299+
- $ref: '#/components/schemas/ClientCapabilities'
300+
description: The client's capabilities and supported ciphersuites
301+
signature:
302+
type: string
303+
format: byte
304+
description: The client's signature over the key package
305+
description: Represents a client's capabilities and provides keys for group operations
306+
MemberRole:
307+
type: string
308+
enum:
309+
- Admin
310+
- Member
311+
description: Possible roles for group members
312+
Proposal:
313+
type: object
314+
required:
315+
- id
316+
- type
317+
- signature
318+
properties:
319+
id:
320+
type: string
321+
description: Unique identifier for this proposal
322+
type:
323+
allOf:
324+
- $ref: '#/components/schemas/ProposalType'
325+
description: The type of proposal
326+
target:
327+
type: string
328+
description: The target of the proposal (e.g., member to remove)
329+
keyPackage:
330+
allOf:
331+
- $ref: '#/components/schemas/KeyPackage'
332+
description: The key package for add proposals
333+
signature:
334+
type: string
335+
format: byte
336+
description: The proposal sender's signature
337+
description: Represents a proposed change to the group state
338+
ProposalType:
339+
type: string
340+
enum:
341+
- Add
342+
- Remove
343+
- Update
344+
- ReInit
345+
description: Types of proposals that can be made
346+
Version:
347+
type: string
348+
enum:
349+
- v0.1.0-alpha.2
350+
Welcome:
351+
type: object
352+
required:
353+
- groupId
354+
- epoch
355+
- keyPackage
356+
- encryptedGroupState
357+
properties:
358+
groupId:
359+
type: string
360+
description: The group ID the new member is being added to
361+
epoch:
362+
type: integer
363+
format: int32
364+
description: The epoch number the new member is being added to
365+
keyPackage:
366+
allOf:
367+
- $ref: '#/components/schemas/KeyPackage'
368+
description: The key package of the new member
369+
encryptedGroupState:
370+
type: string
371+
format: byte
372+
description: Encrypted group state for the new member
373+
description: Welcome message for new group members
374+
servers:
375+
- url: https://example.com
376+
description: Example endpoint
377+
variables: {}

0 commit comments

Comments
 (0)