mirror of
https://github.com/matrix-org/matrix-spec
synced 2026-02-18 12:03:42 +01:00
Describe MSC4133 profile endpoint changes
This commit is contained in:
parent
dcb39c603a
commit
fdc012ac01
|
|
@ -16,48 +16,85 @@ info:
|
||||||
title: Matrix Client-Server Profile API
|
title: Matrix Client-Server Profile API
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
paths:
|
paths:
|
||||||
"/profile/{userId}/displayname":
|
"/profile/{userId}/{key_name}":
|
||||||
put:
|
put:
|
||||||
summary: Set the user's display name.
|
summary: Set the user's profile field.
|
||||||
description: |-
|
description: |-
|
||||||
This API sets the given user's display name. You must have permission to
|
This API sets or updates a specified profile field in a user's profile. You must have the
|
||||||
set this user's display name, e.g. you need to have their `access_token`.
|
appropriate permissions (i.e. an access token) to modify the profile field. Note that setting
|
||||||
operationId: setDisplayName
|
a `null` value SHOULD NOT delete the field.
|
||||||
|
operationId: setProfileField
|
||||||
security:
|
security:
|
||||||
- accessTokenQuery: []
|
- accessTokenQuery: []
|
||||||
- accessTokenBearer: []
|
- accessTokenBearer: []
|
||||||
parameters:
|
parameters:
|
||||||
- in: path
|
- in: path
|
||||||
name: userId
|
name: userId
|
||||||
description: The user whose display name to set.
|
description: The user whose profile field to set.
|
||||||
required: true
|
required: true
|
||||||
example: "@alice:example.com"
|
example: "@alice:example.com"
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
|
- in: path
|
||||||
|
name: key_name
|
||||||
|
description: The profile field key name to set.
|
||||||
|
required: true
|
||||||
|
example: "displayname"
|
||||||
|
schema:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
enum: ["displayname", "avatar_url"]
|
||||||
|
- type: string
|
||||||
|
description: Must follow the [Common Namespaced Identifier Grammar](/appendices/#common-namespaced-identifier-grammar).
|
||||||
requestBody:
|
requestBody:
|
||||||
|
description: The new profile field value. The JSON object must contain the "key_name" specified in the URL.
|
||||||
|
required: true
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
type: object
|
type: object
|
||||||
example: {
|
additionalProperties:
|
||||||
"displayname": "Alice Margatroid"
|
type: string
|
||||||
}
|
example: { "displayname": "Alice Wonderland" }
|
||||||
properties:
|
|
||||||
displayname:
|
|
||||||
type: string
|
|
||||||
description: The new display name for this user.
|
|
||||||
description: The new display name information.
|
|
||||||
required: true
|
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: The display name was set.
|
description: The profile field was set.
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
type: object # empty json object
|
type: object # empty JSON object
|
||||||
examples:
|
examples:
|
||||||
response:
|
response:
|
||||||
value: {}
|
value: {}
|
||||||
|
"400":
|
||||||
|
description: >
|
||||||
|
The request is malformed, missing a required parameter, or the profile data exceeds allowed limits.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: definitions/errors/error.yaml
|
||||||
|
examples:
|
||||||
|
bad_request:
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"errcode": "M_BAD_JSON",
|
||||||
|
"error": "Malformed JSON payload.",
|
||||||
|
}
|
||||||
|
"403":
|
||||||
|
description: >
|
||||||
|
The server is unwilling to perform the operation—either due to insufficient permissions
|
||||||
|
or because profile modifications are disabled.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: definitions/errors/error.yaml
|
||||||
|
examples:
|
||||||
|
forbidden:
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"errcode": "M_FORBIDDEN",
|
||||||
|
"error": "Profile modification is not permitted.",
|
||||||
|
}
|
||||||
"429":
|
"429":
|
||||||
description: This request was rate-limited.
|
description: This request was rate-limited.
|
||||||
content:
|
content:
|
||||||
|
|
@ -67,98 +104,126 @@ paths:
|
||||||
tags:
|
tags:
|
||||||
- User data
|
- User data
|
||||||
get:
|
get:
|
||||||
summary: Get the user's display name.
|
summary: Get the user's profile field.
|
||||||
description: |-
|
description: |-
|
||||||
Get the user's display name. This API may be used to fetch the user's
|
Get the value of a user's profile field. This API can retrieve the profile fields of the user
|
||||||
own displayname or to query the name of other users; either locally or
|
or other users, either locally or on remote homeservers. It supports both standard fields
|
||||||
on remote homeservers.
|
(e.g. "displayname" and "avatar_url") and custom keys.
|
||||||
operationId: getDisplayName
|
operationId: getProfileField
|
||||||
parameters:
|
parameters:
|
||||||
- in: path
|
- in: path
|
||||||
name: userId
|
name: userId
|
||||||
description: The user whose display name to get.
|
description: The user whose profile field to get.
|
||||||
required: true
|
required: true
|
||||||
example: "@alice:example.com"
|
example: "@alice:example.com"
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
|
- in: path
|
||||||
|
name: key_name
|
||||||
|
description: The profile field key name to retrieve (e.g. "displayname", "avatar_url", or custom).
|
||||||
|
required: true
|
||||||
|
example: "displayname"
|
||||||
|
schema:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
enum: ["displayname", "avatar_url"]
|
||||||
|
- type: string
|
||||||
|
description: Must follow the
|
||||||
|
[Common Namespaced Identifier Grammar](/appendices/#common-namespaced-identifier-grammar).
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: The display name for this user.
|
description: The profile field value was retrieved.
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
additionalProperties:
|
||||||
displayname:
|
type: string
|
||||||
type: string
|
|
||||||
description: The user's display name if they have set one, otherwise not
|
|
||||||
present.
|
|
||||||
examples:
|
examples:
|
||||||
response:
|
response:
|
||||||
value: {
|
value: { "displayname": "Alice" }
|
||||||
"displayname": "Alice Margatroid"
|
|
||||||
}
|
|
||||||
"403":
|
"403":
|
||||||
x-addedInMatrixVersion: "1.12"
|
x-addedInMatrixVersion: "1.12"
|
||||||
description: The server is unwilling to disclose whether the user exists and/or
|
description:
|
||||||
has a display name.
|
The server is unwilling to disclose whether the user exists and/or
|
||||||
|
has the specified profile field.
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: definitions/errors/error.yaml
|
$ref: definitions/errors/error.yaml
|
||||||
examples:
|
examples:
|
||||||
response:
|
response:
|
||||||
value: {
|
value:
|
||||||
"errcode": "M_FORBIDDEN",
|
{
|
||||||
"error": "Profile lookup is disabled on this homeserver"
|
"errcode": "M_FORBIDDEN",
|
||||||
}
|
"error": "Profile lookup is disabled on this homeserver",
|
||||||
|
}
|
||||||
"404":
|
"404":
|
||||||
description: There is no display name for this user or this user does not exist.
|
description: There is no profile field with this key for this user, or the user does not exist.
|
||||||
tags:
|
tags:
|
||||||
- User data
|
- User data
|
||||||
"/profile/{userId}/avatar_url":
|
delete:
|
||||||
put:
|
summary: Delete a profile field.
|
||||||
summary: Set the user's avatar URL.
|
description: Delete the specified profile field from a user's profile.
|
||||||
description: |-
|
operationId: deleteProfileField
|
||||||
This API sets the given user's avatar URL. You must have permission to
|
|
||||||
set this user's avatar URL, e.g. you need to have their `access_token`.
|
|
||||||
operationId: setAvatarUrl
|
|
||||||
security:
|
security:
|
||||||
- accessTokenQuery: []
|
- accessTokenQuery: []
|
||||||
- accessTokenBearer: []
|
- accessTokenBearer: []
|
||||||
parameters:
|
parameters:
|
||||||
- in: path
|
- in: path
|
||||||
name: userId
|
name: userId
|
||||||
description: The user whose avatar URL to set.
|
description: The user whose profile field to delete.
|
||||||
required: true
|
required: true
|
||||||
example: "@alice:example.com"
|
example: "@alice:example.com"
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
requestBody:
|
- in: path
|
||||||
content:
|
name: key_name
|
||||||
application/json:
|
description: The profile field key name to delete.
|
||||||
schema:
|
required: true
|
||||||
type: object
|
example: "displayname"
|
||||||
example: {
|
schema:
|
||||||
"avatar_url": "mxc://matrix.org/wefh34uihSDRGhw34"
|
oneOf:
|
||||||
}
|
- type: string
|
||||||
properties:
|
enum: ["displayname", "avatar_url"]
|
||||||
avatar_url:
|
- type: string
|
||||||
type: string
|
description: Must follow the
|
||||||
format: uri
|
[Common Namespaced Identifier Grammar](/appendices/#common-namespaced-identifier-grammar).
|
||||||
description: The new avatar URL for this user.
|
|
||||||
description: The new avatar information.
|
|
||||||
required: true
|
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: The avatar URL was set.
|
description: The profile field was deleted.
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
type: object # empty json object
|
type: object
|
||||||
examples:
|
examples:
|
||||||
response:
|
response:
|
||||||
value: {}
|
value: {}
|
||||||
|
"400":
|
||||||
|
description: >
|
||||||
|
The request is malformed or specifies an invalid key.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: definitions/errors/error.yaml
|
||||||
|
examples:
|
||||||
|
bad_request:
|
||||||
|
value:
|
||||||
|
{ "errcode": "M_BAD_JSON", "error": "Malformed request." }
|
||||||
|
"403":
|
||||||
|
description: >
|
||||||
|
The user is not authorised to delete this profile field.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: definitions/errors/error.yaml
|
||||||
|
examples:
|
||||||
|
forbidden:
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"errcode": "M_FORBIDDEN",
|
||||||
|
"error": "Profile deletion is not permitted.",
|
||||||
|
}
|
||||||
"429":
|
"429":
|
||||||
description: This request was rate-limited.
|
description: This request was rate-limited.
|
||||||
content:
|
content:
|
||||||
|
|
@ -167,63 +232,12 @@ paths:
|
||||||
$ref: definitions/errors/rate_limited.yaml
|
$ref: definitions/errors/rate_limited.yaml
|
||||||
tags:
|
tags:
|
||||||
- User data
|
- User data
|
||||||
get:
|
|
||||||
summary: Get the user's avatar URL.
|
|
||||||
description: |-
|
|
||||||
Get the user's avatar URL. This API may be used to fetch the user's
|
|
||||||
own avatar URL or to query the URL of other users; either locally or
|
|
||||||
on remote homeservers.
|
|
||||||
operationId: getAvatarUrl
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: userId
|
|
||||||
description: The user whose avatar URL to get.
|
|
||||||
required: true
|
|
||||||
example: "@alice:example.com"
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: The avatar URL for this user.
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
avatar_url:
|
|
||||||
type: string
|
|
||||||
format: uri
|
|
||||||
description: The user's avatar URL if they have set one, otherwise not present.
|
|
||||||
examples:
|
|
||||||
response:
|
|
||||||
value: {
|
|
||||||
"avatar_url": "mxc://matrix.org/SDGdghriugerRg"
|
|
||||||
}
|
|
||||||
"403":
|
|
||||||
x-addedInMatrixVersion: "1.12"
|
|
||||||
description: The server is unwilling to disclose whether the user exists and/or
|
|
||||||
has an avatar URL.
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: definitions/errors/error.yaml
|
|
||||||
examples:
|
|
||||||
response:
|
|
||||||
value: {
|
|
||||||
"errcode": "M_FORBIDDEN",
|
|
||||||
"error": "Profile lookup is disabled on this homeserver"
|
|
||||||
}
|
|
||||||
"404":
|
|
||||||
description: There is no avatar URL for this user or this user does not exist.
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
"/profile/{userId}":
|
"/profile/{userId}":
|
||||||
get:
|
get:
|
||||||
summary: Get this user's profile information.
|
summary: Get this user's profile information.
|
||||||
description: |-
|
description: |-
|
||||||
Get the combined profile information for this user. This API may be used
|
Retrieve the combined profile information for a user. In addition to the standard fields,
|
||||||
to fetch the user's own profile information or other users; either
|
this API may include extended custom profile fields as defined in MSC4133.
|
||||||
locally or on remote homeservers.
|
|
||||||
operationId: getUserProfile
|
operationId: getUserProfile
|
||||||
parameters:
|
parameters:
|
||||||
- in: path
|
- in: path
|
||||||
|
|
@ -241,23 +255,27 @@ paths:
|
||||||
schema:
|
schema:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
avatar_url:
|
"avatar_url":
|
||||||
type: string
|
type: string
|
||||||
format: uri
|
format: uri
|
||||||
description: The user's avatar URL if they have set one, otherwise not present.
|
description: The user's avatar URL if set.
|
||||||
displayname:
|
"displayname":
|
||||||
type: string
|
type: string
|
||||||
description: The user's display name if they have set one, otherwise not
|
description: The user's display name if set.
|
||||||
present.
|
additionalProperties:
|
||||||
examples:
|
type: string
|
||||||
response:
|
examples:
|
||||||
value: {
|
response:
|
||||||
"avatar_url": "mxc://matrix.org/SDGdghriugerRg",
|
value:
|
||||||
"displayname": "Alice Margatroid"
|
{
|
||||||
}
|
"avatar_url": "mxc://matrix.org/SDGdghriugerRg",
|
||||||
|
"displayname": "Alice Margatroid",
|
||||||
|
"m.example_field": "custom_value",
|
||||||
|
}
|
||||||
"403":
|
"403":
|
||||||
x-addedInMatrixVersion: "1.2"
|
x-addedInMatrixVersion: "1.2"
|
||||||
description: The server is unwilling to disclose whether the user exists and/or
|
description:
|
||||||
|
The server is unwilling to disclose whether the user exists and/or
|
||||||
has profile information.
|
has profile information.
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
|
|
@ -265,12 +283,14 @@ paths:
|
||||||
$ref: definitions/errors/error.yaml
|
$ref: definitions/errors/error.yaml
|
||||||
examples:
|
examples:
|
||||||
response:
|
response:
|
||||||
value: {
|
value:
|
||||||
"errcode": "M_FORBIDDEN",
|
{
|
||||||
"error": "Profile lookup is disabled on this homeserver"
|
"errcode": "M_FORBIDDEN",
|
||||||
}
|
"error": "Profile lookup is disabled on this homeserver",
|
||||||
|
}
|
||||||
"404":
|
"404":
|
||||||
description: There is no profile information for this user or this user does not
|
description:
|
||||||
|
There is no profile information for this user or this user does not
|
||||||
exist.
|
exist.
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
|
|
@ -278,10 +298,8 @@ paths:
|
||||||
$ref: definitions/errors/error.yaml
|
$ref: definitions/errors/error.yaml
|
||||||
examples:
|
examples:
|
||||||
response:
|
response:
|
||||||
value: {
|
value:
|
||||||
"errcode": "M_NOT_FOUND",
|
{ "errcode": "M_NOT_FOUND", "error": "Profile not found" }
|
||||||
"error": "Profile not found"
|
|
||||||
}
|
|
||||||
tags:
|
tags:
|
||||||
- User data
|
- User data
|
||||||
servers:
|
servers:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue