144 lines
3.3 KiB
JSON
144 lines
3.3 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "CompatLoginInput",
|
|
"description": "Input for the compatibility login policy.",
|
|
"type": "object",
|
|
"properties": {
|
|
"user": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"session_counts": {
|
|
"description": "How many sessions the user has.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/SessionCounts"
|
|
}
|
|
]
|
|
},
|
|
"session_replaced": {
|
|
"description": "Whether a session will be replaced by this login",
|
|
"type": "boolean"
|
|
},
|
|
"login": {
|
|
"description": "What type of login is being performed.\n This also determines whether the login is interactive.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/CompatLogin"
|
|
}
|
|
]
|
|
},
|
|
"requester": {
|
|
"$ref": "#/definitions/Requester"
|
|
}
|
|
},
|
|
"required": [
|
|
"user",
|
|
"session_counts",
|
|
"session_replaced",
|
|
"login",
|
|
"requester"
|
|
],
|
|
"definitions": {
|
|
"SessionCounts": {
|
|
"description": "Information about how many sessions the user has",
|
|
"type": "object",
|
|
"properties": {
|
|
"total": {
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0
|
|
},
|
|
"oauth2": {
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0
|
|
},
|
|
"compat": {
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0
|
|
},
|
|
"personal": {
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0
|
|
}
|
|
},
|
|
"required": [
|
|
"total",
|
|
"oauth2",
|
|
"compat",
|
|
"personal"
|
|
]
|
|
},
|
|
"CompatLogin": {
|
|
"oneOf": [
|
|
{
|
|
"description": "Used as the interactive part of SSO login.",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "m.login.sso"
|
|
},
|
|
"redirect_uri": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"redirect_uri"
|
|
]
|
|
},
|
|
{
|
|
"description": "Used as the final (non-interactive) stage of SSO login.",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "m.login.token"
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
]
|
|
},
|
|
{
|
|
"description": "Non-interactive password-over-the-API login.",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "m.login.password"
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"Requester": {
|
|
"description": "Identity of the requester",
|
|
"type": "object",
|
|
"properties": {
|
|
"ip_address": {
|
|
"description": "IP address of the entity making the request",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"format": "ip"
|
|
},
|
|
"user_agent": {
|
|
"description": "User agent of the entity making the request",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |