feat: cluster groups (#30739)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
This commit is contained in:
co-authored by
Daniel Dietzler
parent
f88fb628ff
commit
11b1aa5ecf
@@ -5861,6 +5861,355 @@
|
||||
"x-immich-state": "Stable"
|
||||
}
|
||||
},
|
||||
"/cluster-groups/requests": {
|
||||
"get": {
|
||||
"description": "Retrieve the pending requests for the current user to join a cluster group.",
|
||||
"operationId": "getClusterGroupRequests",
|
||||
"parameters": [],
|
||||
"responses": {
|
||||
"200": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/ClusterGroupRequestResponseDto"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"bearer": []
|
||||
},
|
||||
{
|
||||
"cookie": []
|
||||
},
|
||||
{
|
||||
"api_key": []
|
||||
}
|
||||
],
|
||||
"summary": "Retrieve cluster group requests",
|
||||
"tags": [
|
||||
"Cluster groups"
|
||||
],
|
||||
"x-immich-history": [
|
||||
{
|
||||
"version": "v3.2.0",
|
||||
"state": "Added"
|
||||
}
|
||||
],
|
||||
"x-immich-permission": "clusterGroupRequest.read"
|
||||
}
|
||||
},
|
||||
"/cluster-groups/requests/{id}": {
|
||||
"delete": {
|
||||
"description": "Delete a pending request to join a cluster group.",
|
||||
"operationId": "deleteClusterGroupRequest",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"required": true,
|
||||
"in": "path",
|
||||
"schema": {
|
||||
"format": "uuid",
|
||||
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"204": {
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"bearer": []
|
||||
},
|
||||
{
|
||||
"cookie": []
|
||||
},
|
||||
{
|
||||
"api_key": []
|
||||
}
|
||||
],
|
||||
"summary": "Decline a cluster group request",
|
||||
"tags": [
|
||||
"Cluster groups"
|
||||
],
|
||||
"x-immich-history": [
|
||||
{
|
||||
"version": "v3.2.0",
|
||||
"state": "Added"
|
||||
}
|
||||
],
|
||||
"x-immich-permission": "clusterGroupRequest.delete"
|
||||
}
|
||||
},
|
||||
"/cluster-groups/requests/{id}/accept": {
|
||||
"post": {
|
||||
"description": "Join the cluster group the request was created for.",
|
||||
"operationId": "acceptClusterGroupRequest",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"required": true,
|
||||
"in": "path",
|
||||
"schema": {
|
||||
"format": "uuid",
|
||||
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"204": {
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"bearer": []
|
||||
},
|
||||
{
|
||||
"cookie": []
|
||||
},
|
||||
{
|
||||
"api_key": []
|
||||
}
|
||||
],
|
||||
"summary": "Accept a cluster group request",
|
||||
"tags": [
|
||||
"Cluster groups"
|
||||
],
|
||||
"x-immich-history": [
|
||||
{
|
||||
"version": "v3.2.0",
|
||||
"state": "Added"
|
||||
}
|
||||
],
|
||||
"x-immich-permission": "clusterGroupRequest.create"
|
||||
}
|
||||
},
|
||||
"/cluster-groups/{id}/leave": {
|
||||
"post": {
|
||||
"description": "Move the current user into a new cluster group of their own.",
|
||||
"operationId": "leaveClusterGroup",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"required": true,
|
||||
"in": "path",
|
||||
"schema": {
|
||||
"format": "uuid",
|
||||
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"204": {
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"bearer": []
|
||||
},
|
||||
{
|
||||
"cookie": []
|
||||
},
|
||||
{
|
||||
"api_key": []
|
||||
}
|
||||
],
|
||||
"summary": "Leave a cluster group",
|
||||
"tags": [
|
||||
"Cluster groups"
|
||||
],
|
||||
"x-immich-history": [
|
||||
{
|
||||
"version": "v3.2.0",
|
||||
"state": "Added"
|
||||
}
|
||||
],
|
||||
"x-immich-permission": "clusterGroup.leave"
|
||||
}
|
||||
},
|
||||
"/cluster-groups/{id}/requests": {
|
||||
"get": {
|
||||
"description": "Retrieve the pending requests for other users to join the cluster group.",
|
||||
"operationId": "getClusterGroupRequestsForGroup",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"required": true,
|
||||
"in": "path",
|
||||
"schema": {
|
||||
"format": "uuid",
|
||||
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/ClusterGroupRequestResponseDto"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"bearer": []
|
||||
},
|
||||
{
|
||||
"cookie": []
|
||||
},
|
||||
{
|
||||
"api_key": []
|
||||
}
|
||||
],
|
||||
"summary": "Retrieve the requests sent by a cluster group",
|
||||
"tags": [
|
||||
"Cluster groups"
|
||||
],
|
||||
"x-immich-history": [
|
||||
{
|
||||
"version": "v3.2.0",
|
||||
"state": "Added"
|
||||
}
|
||||
],
|
||||
"x-immich-permission": "clusterGroupRequest.read"
|
||||
},
|
||||
"put": {
|
||||
"description": "Ask another user to join the cluster group of the current user.",
|
||||
"operationId": "createClusterGroupRequest",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"required": true,
|
||||
"in": "path",
|
||||
"schema": {
|
||||
"format": "uuid",
|
||||
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"requestBody": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/ClusterGroupRequestCreateDto"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": true
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/ClusterGroupRequestResponseDto"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"bearer": []
|
||||
},
|
||||
{
|
||||
"cookie": []
|
||||
},
|
||||
{
|
||||
"api_key": []
|
||||
}
|
||||
],
|
||||
"summary": "Create a cluster group request",
|
||||
"tags": [
|
||||
"Cluster groups"
|
||||
],
|
||||
"x-immich-history": [
|
||||
{
|
||||
"version": "v3.2.0",
|
||||
"state": "Added"
|
||||
}
|
||||
],
|
||||
"x-immich-permission": "clusterGroupRequest.create"
|
||||
}
|
||||
},
|
||||
"/cluster-groups/{id}/users": {
|
||||
"get": {
|
||||
"description": "Retrieve the users that are a member of the cluster group.",
|
||||
"operationId": "getClusterGroupUsers",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"required": true,
|
||||
"in": "path",
|
||||
"schema": {
|
||||
"format": "uuid",
|
||||
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/UserResponseDto"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"bearer": []
|
||||
},
|
||||
{
|
||||
"cookie": []
|
||||
},
|
||||
{
|
||||
"api_key": []
|
||||
}
|
||||
],
|
||||
"summary": "Retrieve the users of a cluster group",
|
||||
"tags": [
|
||||
"Cluster groups"
|
||||
],
|
||||
"x-immich-history": [
|
||||
{
|
||||
"version": "v3.2.0",
|
||||
"state": "Added"
|
||||
}
|
||||
],
|
||||
"x-immich-permission": "clusterGroup.read"
|
||||
}
|
||||
},
|
||||
"/config": {
|
||||
"get": {
|
||||
"description": "Retrieve the system configuration properties that are visible to logged in users.",
|
||||
@@ -16764,6 +17113,10 @@
|
||||
"name": "Authentication (admin)",
|
||||
"description": "Administrative endpoints related to authentication."
|
||||
},
|
||||
{
|
||||
"name": "Cluster groups",
|
||||
"description": "A cluster group is a set of users whose faces are clustered together, so that a person can be shared between them."
|
||||
},
|
||||
{
|
||||
"name": "Config (user)",
|
||||
"description": "The system configuration properties that are visible to logged in users."
|
||||
@@ -20142,6 +20495,56 @@
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"ClusterGroupRequestCreateDto": {
|
||||
"properties": {
|
||||
"userId": {
|
||||
"description": "User to invite into the cluster group",
|
||||
"format": "uuid",
|
||||
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"userId"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"ClusterGroupRequestResponseDto": {
|
||||
"properties": {
|
||||
"clusterGroupId": {
|
||||
"description": "Cluster group the user is invited to join",
|
||||
"format": "uuid",
|
||||
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
|
||||
"type": "string"
|
||||
},
|
||||
"createdAt": {
|
||||
"description": "Creation date",
|
||||
"example": "2024-01-01T00:00:00.000Z",
|
||||
"format": "date-time",
|
||||
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
|
||||
"type": "string"
|
||||
},
|
||||
"id": {
|
||||
"description": "Request ID",
|
||||
"format": "uuid",
|
||||
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
|
||||
"type": "string"
|
||||
},
|
||||
"userId": {
|
||||
"description": "User the request was created for",
|
||||
"format": "uuid",
|
||||
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"clusterGroupId",
|
||||
"createdAt",
|
||||
"id",
|
||||
"userId"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"Colorspace": {
|
||||
"description": "Colorspace",
|
||||
"enum": [
|
||||
@@ -22105,6 +22508,7 @@
|
||||
"SystemMessage",
|
||||
"AlbumInvite",
|
||||
"AlbumUpdate",
|
||||
"ClusterGroupRequest",
|
||||
"Custom"
|
||||
],
|
||||
"type": "string"
|
||||
@@ -22530,6 +22934,11 @@
|
||||
"backup.download",
|
||||
"backup.upload",
|
||||
"backup.delete",
|
||||
"clusterGroup.read",
|
||||
"clusterGroup.leave",
|
||||
"clusterGroupRequest.create",
|
||||
"clusterGroupRequest.read",
|
||||
"clusterGroupRequest.delete",
|
||||
"adminConfig.read",
|
||||
"adminConfig.update",
|
||||
"userConfig.read",
|
||||
@@ -28040,6 +28449,18 @@
|
||||
"avatarColor": {
|
||||
"$ref": "#/components/schemas/UserAvatarColor"
|
||||
},
|
||||
"clusterGroupId": {
|
||||
"description": "Cluster group the user is a member of",
|
||||
"format": "uuid",
|
||||
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
|
||||
"type": "string",
|
||||
"x-immich-history": [
|
||||
{
|
||||
"version": "v3.2.0",
|
||||
"state": "Added"
|
||||
}
|
||||
]
|
||||
},
|
||||
"createdAt": {
|
||||
"description": "Creation date",
|
||||
"example": "2024-01-01T00:00:00.000Z",
|
||||
@@ -28132,6 +28553,7 @@
|
||||
},
|
||||
"required": [
|
||||
"avatarColor",
|
||||
"clusterGroupId",
|
||||
"createdAt",
|
||||
"deletedAt",
|
||||
"email",
|
||||
|
||||
Reference in New Issue
Block a user