Compare commits

...

2 Commits

Author SHA1 Message Date
Kévin Commaille 26ce3929b4
Clean up unecessary `allOf`s (#1797)
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
4 weeks ago
Kévin Commaille 1095179374
Upgrade version of Hugo used to build the spec in CI (#1794)
* Upgrade version of Hugo used to build the spec in CI

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>

* Escape HTML manually in property-type partial

The behavior of `delimit` changed,
so Hugo doesn't recognize "safe" HTML passed to it anymore, so it escapes nested HTML links.

To fix that we escape the schema data manually
and consider the output of the partial as "safe".

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>

* Add changelog

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>

---------

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
4 weeks ago

@ -268,7 +268,8 @@ jobs:
- name: " Setup Hugo"
uses: peaceiris/actions-hugo@16361eb4acea8698b220b76c0d4e84e1fd22c61d
with:
hugo-version: '0.113.0'
# Cannot build the spec with Hugo 0.125.0 because of https://github.com/google/docsy/issues/1930
hugo-version: '0.124.1'
extended: true
- name: "📥 Source checkout"
uses: actions/checkout@v4

@ -0,0 +1 @@
Update the version of Hugo used to render the spec to v0.124.1.

@ -0,0 +1 @@
Clean up unnecessary `allOf`s in OpenAPI definitions.

@ -14,37 +14,22 @@
properties:
content:
items:
allOf:
- $ref: push_rule.yaml
title: PushRule
type: object
$ref: push_rule.yaml
type: array
override:
items:
allOf:
- $ref: push_rule.yaml
title: PushRule
type: object
$ref: push_rule.yaml
type: array
room:
items:
allOf:
- $ref: push_rule.yaml
title: PushRule
type: object
$ref: push_rule.yaml
type: array
sender:
items:
allOf:
- $ref: push_rule.yaml
title: PushRule
type: object
$ref: push_rule.yaml
type: array
underride:
items:
allOf:
- $ref: push_rule.yaml
title: PushRule
type: object
$ref: push_rule.yaml
type: array
type: object

@ -20,8 +20,7 @@ properties:
type: object
description: "A map of session IDs to key data."
additionalProperties:
allOf:
- $ref: "key_backup_data.yaml"
$ref: "key_backup_data.yaml"
example: {
"sessionid1": {
"first_message_index": 1,

@ -36,9 +36,7 @@ paths:
type: array
description: A list of all registered devices for this user.
items:
type: object
allOf:
- $ref: definitions/client_device.yaml
$ref: definitions/client_device.yaml
examples:
response:
value: {
@ -75,9 +73,7 @@ paths:
content:
application/json:
schema:
type: object
allOf:
- $ref: definitions/client_device.yaml
$ref: definitions/client_device.yaml
examples:
response:
value: {

@ -143,9 +143,7 @@ paths:
content:
application/json:
schema:
type: object
allOf:
- $ref: definitions/sync_filter.yaml
$ref: definitions/sync_filter.yaml
examples:
response:
value: {

@ -841,8 +841,7 @@ paths:
type: object
description: A map of room IDs to room key backup data.
additionalProperties:
allOf:
- $ref: definitions/room_key_backup.yaml
$ref: definitions/room_key_backup.yaml
example:
"!room:example.org":
sessions:
@ -946,8 +945,7 @@ paths:
type: object
description: A map of room IDs to room key backup data.
additionalProperties:
allOf:
- $ref: definitions/room_key_backup.yaml
$ref: definitions/room_key_backup.yaml
example:
"!room:example.org":
sessions:

@ -226,8 +226,7 @@ paths:
uploaded via `/keys/signatures/upload` that the requesting user
is allowed to see.
additionalProperties:
allOf:
- $ref: definitions/cross_signing_key.yaml
$ref: definitions/cross_signing_key.yaml
example:
"@alice:example.com":
user_id: "@alice:example.com"
@ -244,8 +243,7 @@ paths:
information returned will be the same as uploaded via
`/keys/device_signing/upload`.
additionalProperties:
allOf:
- $ref: definitions/cross_signing_key.yaml
$ref: definitions/cross_signing_key.yaml
example:
"@alice:example.com":
user_id: "@alice:example.com"
@ -265,8 +263,7 @@ paths:
information returned will be the same as uploaded via
`/keys/device_signing/upload`.
additionalProperties:
allOf:
- $ref: definitions/cross_signing_key.yaml
$ref: definitions/cross_signing_key.yaml
example:
"@alice:example.com":
user_id: "@alice:example.com"

@ -470,9 +470,7 @@ paths:
rule to be applied to an event. A rule with no conditions
always matches. Only applicable to `underride` and `override` rules.
items:
type: object
allOf:
- $ref: definitions/push_condition.yaml
$ref: definitions/push_condition.yaml
pattern:
type: string
description: Only applicable to `content` rules. The glob-style pattern to match

@ -171,8 +171,7 @@ paths:
content:
application/json:
schema:
allOf:
- $ref: ../client-server/definitions/errors/error.yaml
$ref: ../client-server/definitions/errors/error.yaml
examples:
response:
value: {
@ -186,8 +185,7 @@ paths:
content:
application/json:
schema:
allOf:
- $ref: ../client-server/definitions/errors/error.yaml
$ref: ../client-server/definitions/errors/error.yaml
examples:
response:
value: {
@ -318,8 +316,7 @@ paths:
content:
application/json:
schema:
allOf:
- $ref: ../client-server/definitions/errors/error.yaml
$ref: ../client-server/definitions/errors/error.yaml
examples:
response:
value: {
@ -333,8 +330,7 @@ paths:
content:
application/json:
schema:
allOf:
- $ref: ../client-server/definitions/errors/error.yaml
$ref: ../client-server/definitions/errors/error.yaml
examples:
response:
value: {

@ -178,8 +178,7 @@ paths:
uploaded via `/keys/signatures/upload` that the user is
allowed to see.
additionalProperties:
allOf:
- $ref: ../client-server/definitions/cross_signing_key.yaml
$ref: ../client-server/definitions/cross_signing_key.yaml
example:
"@alice:example.com":
user_id: "@alice:example.com"
@ -196,8 +195,7 @@ paths:
information returned will be the same as uploaded via
`/keys/device_signing/upload`.
additionalProperties:
allOf:
- $ref: ../client-server/definitions/cross_signing_key.yaml
$ref: ../client-server/definitions/cross_signing_key.yaml
example:
"@alice:example.com":
user_id: "@alice:example.com"

@ -18,9 +18,7 @@ allOf:
- "$ref": core-event-schema/room_event.yaml
properties:
content:
type: object
allOf:
- "$ref": core-event-schema/call_event.yaml
"$ref": core-event-schema/call_event.yaml
type:
type: string
enum:

@ -44,8 +44,7 @@ properties:
ephemeral public key (encoded as unpadded base64) and the canonical JSON
representation of the `m.key.verification.start` message.
m.relates_to:
allOf:
- $ref: m.key.verification.m.relates_to.yaml
$ref: m.key.verification.m.relates_to.yaml
required:
- method
- key_agreement_protocol

@ -58,8 +58,7 @@ properties:
respond again with `m.unexpected_message` to avoid the other device potentially
sending another error response.
m.relates_to:
allOf:
- $ref: m.key.verification.m.relates_to.yaml
$ref: m.key.verification.m.relates_to.yaml
required:
- code
- reason

@ -13,8 +13,7 @@ properties:
Required when sent as a to-device message. The opaque identifier for
the verification process/request.
m.relates_to:
allOf:
- $ref: m.key.verification.m.relates_to.yaml
$ref: m.key.verification.m.relates_to.yaml
type: object
type:
enum:

@ -18,8 +18,7 @@ properties:
description: |-
The device's ephemeral public key, encoded as unpadded base64.
m.relates_to:
allOf:
- $ref: m.key.verification.m.relates_to.yaml
$ref: m.key.verification.m.relates_to.yaml
required:
- key
type: object

@ -29,8 +29,7 @@ properties:
The MAC of the comma-separated, sorted, list of key IDs given in the `mac`
property, encoded as unpadded base64.
m.relates_to:
allOf:
- $ref: m.key.verification.m.relates_to.yaml
$ref: m.key.verification.m.relates_to.yaml
required:
- mac
- keys

@ -27,8 +27,7 @@ properties:
items:
type: string
m.relates_to:
allOf:
- $ref: m.key.verification.m.relates_to.yaml
$ref: m.key.verification.m.relates_to.yaml
required:
- from_device
- methods

@ -30,8 +30,7 @@ properties:
description: |-
The shared secret from the QR code, encoded using unpadded base64.
m.relates_to:
allOf:
- $ref: m.key.verification.m.relates_to.yaml
$ref: m.key.verification.m.relates_to.yaml
required:
- from_device
- method

@ -58,8 +58,7 @@ properties:
type: string
enum: ["decimal", "emoji"]
m.relates_to:
allOf:
- $ref: m.key.verification.m.relates_to.yaml
$ref: m.key.verification.m.relates_to.yaml
required:
- from_device
- method

@ -32,8 +32,7 @@ properties:
when the `method` chosen only verifies one user's key. This field will
never be present if the `method` verifies keys both ways.
m.relates_to:
allOf:
- $ref: m.key.verification.m.relates_to.yaml
$ref: m.key.verification.m.relates_to.yaml
required:
- from_device
- method

@ -46,7 +46,7 @@
<tr>
<td><code>{{ $property_name }}</code></td>
<td><code>{{ partial "partials/property-type" $property }}</code></td>
<td><code>{{ partial "partials/property-type" $property | safeHTML }}</code></td>
<td>{{ partial "partials/property-description" (dict "property" $property "required" $required) }}</td>
</tr>
@ -67,7 +67,7 @@
{{ $property := . }}
<tr>
<td><code>{{ partial "partials/property-type" $property }}</code></td>
<td><code>{{ partial "partials/property-type" $property | safeHTML }}</code></td>
<td>{{ partial "partials/property-description" (dict "property" $property) }}</td>
</tr>
</table>
@ -128,14 +128,14 @@
{{ end }}
{{ else }}
{{ range .type }}
{{ $types = $types | append . }}
{{ $types = $types | append (htmlEscape .) }}
{{ end }}
{{ end }}
{{ $type = delimit $types "|" }}
{{ else }}
{{/* A simple type like string or boolean */}}
{{ $type = .type }}
{{ $type = (htmlEscape .type) }}
{{ end }}
{{ return $type }}
@ -165,9 +165,9 @@
If the property has a `title`, use that rather than `type`.
This means we can write things like `EventFilter` rather than `object`.
*/}}
{{ $type = .title }}
{{ $type = .title | htmlEscape }}
{{ if .anchor }}
{{ $type = printf "<a href=\"#%s\">%s</a>" (htmlEscape .anchor) (htmlEscape $type) | safeHTML }}
{{ $type = printf "<a href=\"#%s\">%s</a>" (htmlEscape .anchor) $type }}
{{ end }}
{{ else if reflect.IsMap .additionalProperties }}
{{/*

Loading…
Cancel
Save