notifications/openapi.json

982 строки
38 KiB
JSON

{
"openapi": "3.0.3",
"info": {
"title": "notifications",
"version": "0.0.1",
"description": "This app provides a backend and frontend for the notification API available in Nextcloud.",
"license": {
"name": "agpl"
}
},
"components": {
"securitySchemes": {
"basic_auth": {
"type": "http",
"scheme": "basic"
},
"bearer_auth": {
"type": "http",
"scheme": "bearer"
}
},
"schemas": {
"Capabilities": {
"type": "object",
"required": [
"notifications"
],
"properties": {
"notifications": {
"type": "object",
"required": [
"ocs-endpoints",
"push",
"admin-notifications"
],
"properties": {
"ocs-endpoints": {
"type": "array",
"items": {
"type": "string"
}
},
"push": {
"type": "array",
"items": {
"type": "string"
}
},
"admin-notifications": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
},
"Notification": {
"type": "object",
"required": [
"notification_id",
"app",
"user",
"datetime",
"object_type",
"object_id",
"subject",
"message",
"link",
"actions"
],
"properties": {
"notification_id": {
"type": "integer",
"format": "int64"
},
"app": {
"type": "string"
},
"user": {
"type": "string"
},
"datetime": {
"type": "string"
},
"object_type": {
"type": "string"
},
"object_id": {
"type": "string"
},
"subject": {
"type": "string"
},
"message": {
"type": "string"
},
"link": {
"type": "string"
},
"actions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/NotificationAction"
}
},
"subjectRich": {
"type": "string"
},
"subjectRichParameters": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/RichObjectParameter"
}
},
"messageRich": {
"type": "string"
},
"messageRichParameters": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/RichObjectParameter"
}
},
"icon": {
"type": "string"
},
"shouldNotify": {
"type": "boolean"
}
}
},
"NotificationAction": {
"type": "object",
"required": [
"label",
"link",
"type",
"primary"
],
"properties": {
"label": {
"type": "string"
},
"link": {
"type": "string"
},
"type": {
"type": "string"
},
"primary": {
"type": "boolean"
}
}
},
"OCSMeta": {
"type": "object",
"required": [
"status",
"statuscode"
],
"properties": {
"status": {
"type": "string"
},
"statuscode": {
"type": "integer"
},
"message": {
"type": "string"
},
"totalitems": {
"type": "string"
},
"itemsperpage": {
"type": "string"
}
}
},
"RichObjectParameter": {
"type": "object",
"required": [
"type",
"id",
"name"
],
"properties": {
"type": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"server": {
"type": "string"
},
"link": {
"type": "string"
},
"call-type": {
"type": "string",
"enum": [
"one2one",
"group",
"public"
]
},
"icon-url": {
"type": "string"
},
"message-id": {
"type": "string"
},
"boardname": {
"type": "string"
},
"stackname": {
"type": "string"
},
"size": {
"type": "string"
},
"path": {
"type": "string"
},
"mimetype": {
"type": "string"
},
"preview-available": {
"type": "string",
"enum": [
"yes",
"no"
]
},
"mtime": {
"type": "string"
},
"latitude": {
"type": "string"
},
"longitude": {
"type": "string"
},
"description": {
"type": "string"
},
"thumb": {
"type": "string"
},
"website": {
"type": "string"
},
"visibility": {
"type": "string",
"enum": [
"0",
"1"
]
},
"assignable": {
"type": "string",
"enum": [
"0",
"1"
]
},
"conversation": {
"type": "string"
},
"etag": {
"type": "string"
},
"permissions": {
"type": "string"
},
"width": {
"type": "string"
},
"height": {
"type": "string"
}
}
}
}
},
"paths": {
"/ocs/v2.php/apps/notifications/api/{apiVersion}/notifications": {
"get": {
"operationId": "endpoint-list-notifications",
"summary": "Get all notifications",
"tags": [
"endpoint"
],
"security": [
{
"bearer_auth": []
},
{
"basic_auth": []
}
],
"parameters": [
{
"name": "apiVersion",
"in": "path",
"description": "Version of the API to use",
"required": true,
"schema": {
"type": "string",
"enum": [
"v1",
"v2"
],
"default": "v2"
}
},
{
"name": "OCS-APIRequest",
"in": "header",
"description": "Required to be true for the API request to pass",
"required": true,
"schema": {
"type": "boolean",
"default": true
}
}
],
"responses": {
"200": {
"description": "Notifications returned",
"headers": {
"X-Nextcloud-User-Status": {
"schema": {
"type": "string"
}
}
},
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Notification"
}
}
}
}
}
}
}
}
},
"204": {
"description": "No app uses notifications",
"headers": {
"X-Nextcloud-User-Status": {
"schema": {
"type": "string"
}
}
}
}
}
},
"delete": {
"operationId": "endpoint-delete-all-notifications",
"summary": "Delete all notifications",
"tags": [
"endpoint"
],
"security": [
{
"bearer_auth": []
},
{
"basic_auth": []
}
],
"parameters": [
{
"name": "apiVersion",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"v1",
"v2"
],
"default": "v2"
}
},
{
"name": "OCS-APIRequest",
"in": "header",
"description": "Required to be true for the API request to pass",
"required": true,
"schema": {
"type": "boolean",
"default": true
}
}
],
"responses": {
"200": {
"description": "All notifications deleted successfully",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {}
}
}
}
}
}
}
},
"403": {
"description": "Deleting notification for impersonated user is not allowed",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"nullable": true
}
}
}
}
}
}
}
}
}
}
},
"/ocs/v2.php/apps/notifications/api/{apiVersion}/notifications/{id}": {
"get": {
"operationId": "endpoint-get-notification",
"summary": "Get a notification",
"tags": [
"endpoint"
],
"security": [
{
"bearer_auth": []
},
{
"basic_auth": []
}
],
"parameters": [
{
"name": "apiVersion",
"in": "path",
"description": "Version of the API to use",
"required": true,
"schema": {
"type": "string",
"enum": [
"v1",
"v2"
],
"default": "v2"
}
},
{
"name": "id",
"in": "path",
"description": "ID of the notification",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "OCS-APIRequest",
"in": "header",
"description": "Required to be true for the API request to pass",
"required": true,
"schema": {
"type": "boolean",
"default": true
}
}
],
"responses": {
"200": {
"description": "Notification returned",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"$ref": "#/components/schemas/Notification"
}
}
}
}
}
}
}
},
"404": {
"description": "Notification not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"nullable": true
}
}
}
}
}
}
}
}
}
},
"delete": {
"operationId": "endpoint-delete-notification",
"summary": "Delete a notification",
"tags": [
"endpoint"
],
"security": [
{
"bearer_auth": []
},
{
"basic_auth": []
}
],
"parameters": [
{
"name": "apiVersion",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"v1",
"v2"
],
"default": "v2"
}
},
{
"name": "id",
"in": "path",
"description": "ID of the notification",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "OCS-APIRequest",
"in": "header",
"description": "Required to be true for the API request to pass",
"required": true,
"schema": {
"type": "boolean",
"default": true
}
}
],
"responses": {
"200": {
"description": "Notification deleted successfully",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {}
}
}
}
}
}
}
},
"403": {
"description": "Deleting notification for impersonated user is not allowed",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"nullable": true
}
}
}
}
}
}
}
},
"404": {
"description": "Notification not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"nullable": true
}
}
}
}
}
}
}
}
}
}
},
"/ocs/v2.php/apps/notifications/api/{apiVersion}/notifications/exists": {
"post": {
"operationId": "endpoint-confirm-ids-for-user",
"summary": "Check if notification IDs exist",
"tags": [
"endpoint"
],
"security": [
{
"bearer_auth": []
},
{
"basic_auth": []
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"description": "IDs of the notifications to check",
"items": {
"type": "integer",
"format": "int64"
}
}
}
}
}
}
},
"parameters": [
{
"name": "apiVersion",
"in": "path",
"description": "Version of the API to use",
"required": true,
"schema": {
"type": "string",
"enum": [
"v1",
"v2"
],
"default": "v2"
}
},
{
"name": "OCS-APIRequest",
"in": "header",
"description": "Required to be true for the API request to pass",
"required": true,
"schema": {
"type": "boolean",
"default": true
}
}
],
"responses": {
"200": {
"description": "Existing notification IDs returned",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
}
}
}
}
}
}
}
}
},
"400": {
"description": "Too many notification IDs requested",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
}
}
}
}
}
}
}
}
}
}
}
},
"/ocs/v2.php/apps/notifications/api/{apiVersion}/settings": {
"post": {
"operationId": "settings-personal",
"summary": "Update personal notification settings",
"tags": [
"settings"
],
"security": [
{
"bearer_auth": []
},
{
"basic_auth": []
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"batchSetting",
"soundNotification",
"soundTalk"
],
"properties": {
"batchSetting": {
"type": "integer",
"format": "int64",
"description": "How often E-mails about missed notifications should be sent (hourly: 1; every three hours: 2; daily: 3; weekly: 4)"
},
"soundNotification": {
"type": "string",
"description": "Enable sound for notifications ('yes' or 'no')"
},
"soundTalk": {
"type": "string",
"description": "Enable sound for Talk notifications ('yes' or 'no')"
}
}
}
}
}
},
"parameters": [
{
"name": "apiVersion",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"v2"
],
"default": "v2"
}
},
{
"name": "OCS-APIRequest",
"in": "header",
"description": "Required to be true for the API request to pass",
"required": true,
"schema": {
"type": "boolean",
"default": true
}
}
],
"responses": {
"200": {
"description": "Personal settings updated",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {}
}
}
}
}
}
}
}
}
}
}
},
"tags": []
}