{ "openapi": "3.0.3", "info": { "title": "cloud_federation_api", "version": "0.0.1", "description": "Enable clouds to communicate with each other and exchange data", "license": { "name": "agpl" } }, "components": { "securitySchemes": { "basic_auth": { "type": "http", "scheme": "basic" }, "bearer_auth": { "type": "http", "scheme": "bearer" } }, "schemas": { "AddShare": { "type": "object", "required": [ "recipientDisplayName" ], "properties": { "recipientDisplayName": { "type": "string" } } }, "Capabilities": { "type": "object", "required": [ "ocm" ], "properties": { "ocm": { "type": "object", "required": [ "enabled", "apiVersion", "endPoint", "resourceTypes" ], "properties": { "enabled": { "type": "boolean" }, "apiVersion": { "type": "string" }, "endPoint": { "type": "string" }, "resourceTypes": { "type": "array", "items": { "type": "object", "required": [ "name", "shareTypes", "protocols" ], "properties": { "name": { "type": "string" }, "shareTypes": { "type": "array", "items": { "type": "string" } }, "protocols": { "type": "object", "additionalProperties": { "type": "string" } } } } } } } } }, "Error": { "type": "object", "required": [ "message" ], "properties": { "message": { "type": "string" } } }, "ValidationError": { "allOf": [ { "$ref": "#/components/schemas/Error" }, { "type": "object", "required": [ "validationErrors" ], "properties": { "validationErrors": { "type": "array", "items": { "type": "object", "required": [ "name", "message" ], "properties": { "name": { "type": "string" }, "message": { "type": "string", "nullable": true } } } } } } ] } } }, "paths": { "/index.php/ocm/shares": { "post": { "operationId": "request_handler-add-share", "summary": "Add share", "tags": [ "request_handler" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "shareWith", "in": "query", "description": "The user who the share will be shared with", "required": true, "schema": { "type": "string" } }, { "name": "name", "in": "query", "description": "The resource name (e.g. document.odt)", "required": true, "schema": { "type": "string" } }, { "name": "description", "in": "query", "description": "Share description", "schema": { "type": "string", "nullable": true } }, { "name": "providerId", "in": "query", "description": "Resource UID on the provider side", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "description": "Provider specific UID of the user who owns the resource", "required": true, "schema": { "type": "string" } }, { "name": "ownerDisplayName", "in": "query", "description": "Display name of the user who shared the item", "schema": { "type": "string", "nullable": true } }, { "name": "sharedBy", "in": "query", "description": "Provider specific UID of the user who shared the resource", "schema": { "type": "string", "nullable": true } }, { "name": "sharedByDisplayName", "in": "query", "description": "Display name of the user who shared the resource", "schema": { "type": "string", "nullable": true } }, { "name": "protocol", "in": "query", "description": "e,.g. ['name' => 'webdav', 'options' => ['username' => 'john', 'permissions' => 31]]", "required": true, "schema": { "type": "string" } }, { "name": "shareType", "in": "query", "description": "'group' or 'user' share", "required": true, "schema": { "type": "string" } }, { "name": "resourceType", "in": "query", "description": "'file', 'calendar',...", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "description": "The notification was successfully received. The display name of the recipient might be returned in the body", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddShare" } } } }, "400": { "description": "Bad request due to invalid parameters, e.g. when `shareWith` is not found or required properties are missing", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationError" } } } }, "501": { "description": "Share type or the resource type is not supported", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/index.php/ocm/notifications": { "post": { "operationId": "request_handler-receive-notification", "summary": "Send a notification about an existing share", "tags": [ "request_handler" ], "security": [ {}, { "bearer_auth": [] }, { "basic_auth": [] } ], "parameters": [ { "name": "notificationType", "in": "query", "description": "Notification type, e.g. SHARE_ACCEPTED", "required": true, "schema": { "type": "string" } }, { "name": "resourceType", "in": "query", "description": "calendar, file, contact,...", "required": true, "schema": { "type": "string" } }, { "name": "providerId", "in": "query", "description": "ID of the share", "schema": { "type": "string", "nullable": true } }, { "name": "notification", "in": "query", "description": "The actual payload of the notification", "schema": { "type": "string", "nullable": true } } ], "responses": { "201": { "description": "The notification was successfully received", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": { "type": "object" } } } } }, "400": { "description": "Bad request due to invalid parameters, e.g. when `type` is invalid or missing", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationError" } } } }, "403": { "description": "Getting resource is not allowed", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "501": { "description": "The resource type is not supported", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } } }, "tags": [ { "name": "request_handler", "description": "Open-Cloud-Mesh-API" } ] }