-
Notifications
You must be signed in to change notification settings - Fork 389
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Convert server keys to swagger #1405
Changes from 3 commits
bd2c0b7
96889f1
3e13ec2
7cb9184
bafdcf3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
# Copyright 2018 New Vector Ltd | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
type: object | ||
title: Server Keys | ||
description: Server keys | ||
example: | ||
$ref: "../examples/server_key.json" | ||
properties: | ||
server_name: | ||
type: string | ||
description: DNS name of the homeserver | ||
required: true # TODO: Verify | ||
example: "example.org" | ||
verify_keys: | ||
type: object | ||
description: Public keys of the homeserver for verifying digital signatures | ||
required: true # TODO: Verify | ||
additionalProperties: | ||
type: object | ||
title: Verify Key | ||
example: { | ||
"ed25519:auto2": { | ||
"key": "Base+64+Encoded+Signature+Verification+Key" | ||
} | ||
} | ||
properties: | ||
key: | ||
type: string | ||
description: The key | ||
required: true | ||
example: "Base+64+Encoded+Signature+Verification+Key" | ||
old_verify_keys: | ||
type: object | ||
description: The public keys that the server used to use and when it stopped using them | ||
additionalProperties: | ||
type: object | ||
title: Old Verify Key | ||
example: { | ||
"ed25519:auto1": { | ||
"expired_ts": 922834800000, | ||
"key": "Base+64+Encoded+Signature+Verification+Key" | ||
} | ||
} | ||
properties: | ||
expired_ts: | ||
type: integer | ||
format: int64 | ||
description: The expiration time | ||
required: true | ||
example: 922834800000 | ||
key: | ||
type: string | ||
description: The key | ||
required: true | ||
example: "Base+64+Encoded+Signature+Verification+Key" | ||
signatures: | ||
type: object | ||
description: Digital signatures for this object signed using the ``verify_keys`` | ||
additionalProperties: | ||
type: object | ||
title: Signed Server | ||
example: { | ||
"example.org": { | ||
"ad25519:auto2": "Base+64+Encoded+Signature+Verification+Key" | ||
} | ||
} | ||
additionalProperties: | ||
type: string | ||
name: Encoded Signature Verification Key | ||
tls_fingerprints: | ||
type: array | ||
description: Hashes of X.509 TLS certificates used by this server encoded as `Unpadded Base64`_ | ||
items: | ||
type: object | ||
title: TLS Fingerprint | ||
properties: | ||
sha256: | ||
type: string | ||
description: The encoded fingerprint | ||
example: Base+64+Encoded+SHA-256-Fingerprint | ||
valid_until_ts: | ||
type: integer | ||
format: int64 | ||
description: POSIX timestamp when the list of valid keys should be refreshed | ||
example: 1052262000000 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# Copyright 2018 New Vector Ltd | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
type: object | ||
description: Server keys | ||
example: { | ||
"server_keys": [{ | ||
$ref: "../examples/server_key.json" | ||
}] | ||
} | ||
properties: | ||
server_keys: | ||
type: array | ||
title: Server Keys | ||
description: The server keys | ||
items: | ||
$ref: "keys.yaml" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
{ | ||
"server_name": "example.org", | ||
"verify_keys": { | ||
"ed25519:auto2": { | ||
"key": "Base+64+Encoded+Signature+Verification+Key" | ||
} | ||
}, | ||
"old_verify_keys": { | ||
"ed25519:auto1": { | ||
"expired_ts": 922834800000, | ||
"key": "Base+64+Encoded+Old+Verify+Key" | ||
} | ||
}, | ||
"signatures": { | ||
"example.org": { | ||
"ed25519:auto2": "Base+64+Encoded+Signature" | ||
} | ||
}, | ||
"tls_fingerprints": [{ | ||
"sha256": "Base+64+Encoded+SHA-256-Fingerprint" | ||
}], | ||
"valid_until_ts": 1052262000000 | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
# Copyright 2018 New Vector Ltd | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
swagger: '2.0' | ||
info: | ||
title: "Matrix Federation Key Exchange API" | ||
version: "1.0.0" | ||
host: localhost:8448 | ||
schemes: | ||
- https | ||
basePath: /_matrix/key/v2 | ||
produces: | ||
- application/json | ||
paths: | ||
"/query/{serverName}/{keyId}": | ||
get: | ||
summary: Retreive a server key | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. retrieve |
||
description: Retreive a server key | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ditto There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [also as per https://github.com/matrix-org/matrix-doc/blob/master/meta/documentation_style.rst#openapi this is meant to be a long-form description; however I'm happy if you want to punt that for now] There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The longer form descriptions are punted to a later PR which actually attempts to improve the documentation. The plan is to convert things to swagger then improve to make the diff a little bit more clear. |
||
operationId: getQueryKeys | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is a bit of a funny name for it. Maybe |
||
parameters: | ||
- in: path | ||
name: serverName | ||
type: string | ||
description: Server name | ||
required: true | ||
x-example: matrix.org | ||
- in: path | ||
name: keyId | ||
type: string | ||
description: Key ID | ||
required: true | ||
x-example: TODO # No examples in spec so far | ||
- in: query | ||
name: minimum_valid_until_ts | ||
type: integer | ||
format: int64 | ||
description: Minimum Valid Until Milliseconds | ||
required: true # TODO: Verify | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think it is. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's not, but the existing documentation says it is. The 'fix' is in #1423 |
||
x-example: 1234567890 | ||
responses: | ||
200: | ||
description: The keys for the server | ||
schema: | ||
$ref: "definitions/keys_query_response.yaml" | ||
"/query": | ||
post: | ||
summary: Retreive a server key | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. retrieve |
||
description: Retreive a server key | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ditto |
||
operationId: postQueryKeys | ||
parameters: | ||
- in: body | ||
name: body | ||
schema: | ||
type: object | ||
# TODO: Improve example | ||
example: { | ||
"server_keys": { | ||
"{server_name}": { | ||
"{key_id}": { | ||
"minimum_valid_until_ts": 1234567890 | ||
} | ||
} | ||
} | ||
} | ||
properties: | ||
server_keys: | ||
type: object | ||
description: The query criteria | ||
additionalProperties: | ||
type: object | ||
name: ServerName | ||
description: The server names to query | ||
additionalProperties: | ||
type: object | ||
title: Query Criteria | ||
description: The server keys to query | ||
properties: | ||
minimum_valid_until_ts: | ||
type: integer | ||
format: int64 | ||
description: Minimum Valid Until MS | ||
example: 1234567890 | ||
required: ['server_keys'] | ||
responses: | ||
200: | ||
description: The keys for the server | ||
schema: | ||
$ref: "definitions/keys_query_response.yaml" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# Copyright 2018 New Vector Ltd | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
swagger: '2.0' | ||
info: | ||
title: "Matrix Federation Key Exchange API" | ||
version: "1.0.0" | ||
host: localhost:8448 | ||
schemes: | ||
- https | ||
basePath: /_matrix/key/v2 | ||
produces: | ||
- application/json | ||
paths: | ||
"/server/{keyId}": | ||
get: | ||
summary: Get the server's key | ||
description: Get the server's key | ||
operationId: getServerKey | ||
parameters: | ||
- in: path | ||
name: keyId | ||
type: string | ||
description: Key ID | ||
required: false | ||
x-example: TODO # No examples in the spec so far | ||
responses: | ||
200: | ||
description: The server's keys | ||
schema: | ||
$ref: "definitions/keys.yaml" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
as per https://github.com/matrix-org/matrix-doc/blob/master/meta/documentation_style.rst#openapi, please could these end with full stops?