From 1947f2a72bcc3c3de6cd2e8def58585d4e1cd87d Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Fri, 11 Jul 2025 14:42:42 +0300 Subject: [PATCH 1/5] Add `format` query parameter to `GET /state/{eventType}/{stateKey}` Fixes #1047 --- .../client_server/newsfragments/2175.feature | 1 + data/api/client-server/rooms.yaml | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 changelogs/client_server/newsfragments/2175.feature diff --git a/changelogs/client_server/newsfragments/2175.feature b/changelogs/client_server/newsfragments/2175.feature new file mode 100644 index 00000000..ddd71d27 --- /dev/null +++ b/changelogs/client_server/newsfragments/2175.feature @@ -0,0 +1 @@ +Add `format` query parameter to `GET /state/{eventType}/{stateKey}` to allow fetching metadata of a specific state event. diff --git a/data/api/client-server/rooms.yaml b/data/api/client-server/rooms.yaml index a2197f34..8bbe2395 100644 --- a/data/api/client-server/rooms.yaml +++ b/data/api/client-server/rooms.yaml @@ -105,9 +105,24 @@ paths: example: "" schema: type: string + - in: query + name: format + description: |- + The format to use for the returned data. `content` (the default) will + return only the content of the state event. `event` will return the entire + event in the usual format suitable for clients, including fields like event + ID, sender and timestamp. + example: event + schema: + type: string + enum: + - content + - event responses: "200": - description: The content of the state event. + description: |- + The content of the state event, or the entire client-formatted event + if `?format=event` was used. content: application/json: schema: From a14740e8da8efbb50073da0823b2c1ee6d37af73 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Fri, 11 Jul 2025 19:34:13 +0300 Subject: [PATCH 2/5] Use oneOf for response schema --- data/api/client-server/rooms.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/data/api/client-server/rooms.yaml b/data/api/client-server/rooms.yaml index 8bbe2395..9d456d32 100644 --- a/data/api/client-server/rooms.yaml +++ b/data/api/client-server/rooms.yaml @@ -126,7 +126,9 @@ paths: content: application/json: schema: - type: object + oneOf: + - type: object + - $ref: "../../event-schemas/core-event-schema/state_event.yaml examples: response: value: { From efa676dbf9191214f09091c64469cd18e87cdc0b Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Fri, 11 Jul 2025 19:48:05 +0300 Subject: [PATCH 3/5] " --- data/api/client-server/rooms.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/api/client-server/rooms.yaml b/data/api/client-server/rooms.yaml index 9d456d32..ad343224 100644 --- a/data/api/client-server/rooms.yaml +++ b/data/api/client-server/rooms.yaml @@ -128,7 +128,7 @@ paths: schema: oneOf: - type: object - - $ref: "../../event-schemas/core-event-schema/state_event.yaml + - $ref: "../../event-schemas/core-event-schema/state_event.yaml" examples: response: value: { From c4bbef30d117267227a2a3d3b5fe1830b758ac0f Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Fri, 11 Jul 2025 19:50:49 +0300 Subject: [PATCH 4/5] schema/ --- data/api/client-server/rooms.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/api/client-server/rooms.yaml b/data/api/client-server/rooms.yaml index ad343224..ce110c2c 100644 --- a/data/api/client-server/rooms.yaml +++ b/data/api/client-server/rooms.yaml @@ -128,7 +128,7 @@ paths: schema: oneOf: - type: object - - $ref: "../../event-schemas/core-event-schema/state_event.yaml" + - $ref: "../../event-schemas/schema/core-event-schema/state_event.yaml" examples: response: value: { From 0bf809a3990abb49ff20d47b98d71a710f46e59d Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Thu, 17 Jul 2025 00:03:14 +0300 Subject: [PATCH 5/5] Add x-addedInMatrixVersion --- data/api/client-server/rooms.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/data/api/client-server/rooms.yaml b/data/api/client-server/rooms.yaml index ce110c2c..a5c9977e 100644 --- a/data/api/client-server/rooms.yaml +++ b/data/api/client-server/rooms.yaml @@ -107,6 +107,7 @@ paths: type: string - in: query name: format + x-addedInMatrixVersion: "1.16" description: |- The format to use for the returned data. `content` (the default) will return only the content of the state event. `event` will return the entire