Browse Source

Update nextcloud server and notifications to 25.0.0

pull/98/head
jld3103 2 years ago
parent
commit
faf1523a75
No known key found for this signature in database
GPG Key ID: 9062417B9E8EB7B3
  1. 2
      external/nextcloud-notifications
  2. 2
      external/nextcloud-server
  3. 15
      packages/nextcloud/lib/src/nextcloud.openapi.dart
  4. 6
      packages/nextcloud/lib/src/nextcloud.openapi.g.dart
  5. 14
      packages/nextcloud/lib/src/nextcloud.openapi.json
  6. 2
      packages/nextcloud/lib/src/version_supported.dart
  7. 4
      packages/nextcloud/test/helper.dart
  8. 0
      packages/nextcloud/test/overlay/.gitkeep
  9. 42
      packages/nextcloud/test/overlay/apps/user_status/appinfo/routes.php
  10. 114
      packages/nextcloud/test/overlay/apps/user_status/lib/Controller/HeartbeatController.php
  11. 15
      specs/core.json
  12. 2
      specs/notifications.json
  13. 2
      specs/provisioning_api.json
  14. 2
      specs/templates/appinfo_core.xml
  15. 286
      specs/templates/core.json
  16. 2
      specs/templates/notifications.json
  17. 136
      specs/templates/provisioning_api.json
  18. 4
      specs/templates/user_status.json
  19. 3
      specs/user_status.json
  20. 5
      tool/Dockerfile.dev
  21. 1
      tool/update.sh

2
external/nextcloud-notifications vendored

@ -1 +1 @@
Subproject commit 7190056dd64da2f2c4b2fd3fd8d40d26cb768937 Subproject commit 65bb0849179cf93c161387a730f4abc79a782f77

2
external/nextcloud-server vendored

@ -1 +1 @@
Subproject commit 3aabb381b9e7ffc5b13f951b8fb89494fe903a2c Subproject commit 20ea9a25353129b56d46951fe7d23939665ab2b2

15
packages/nextcloud/lib/src/nextcloud.openapi.dart

@ -209,6 +209,8 @@ class CoreServerCapabilities_Ocs_Data_Capabilities_Core {
CoreServerCapabilities_Ocs_Data_Capabilities_Core({ CoreServerCapabilities_Ocs_Data_Capabilities_Core({
required this.pollinterval, required this.pollinterval,
required this.webdavRoot, required this.webdavRoot,
required this.referenceApi,
required this.referenceRegex,
}); });
factory CoreServerCapabilities_Ocs_Data_Capabilities_Core.fromJson(Map<String, dynamic> json) => factory CoreServerCapabilities_Ocs_Data_Capabilities_Core.fromJson(Map<String, dynamic> json) =>
@ -219,6 +221,12 @@ class CoreServerCapabilities_Ocs_Data_Capabilities_Core {
@JsonKey(name: 'webdav-root') @JsonKey(name: 'webdav-root')
final String webdavRoot; final String webdavRoot;
@JsonKey(name: 'reference-api')
final bool referenceApi;
@JsonKey(name: 'reference-regex')
final String referenceRegex;
// coverage:ignore-start // coverage:ignore-start
Map<String, dynamic> toJson() => _$CoreServerCapabilities_Ocs_Data_Capabilities_CoreToJson(this); Map<String, dynamic> toJson() => _$CoreServerCapabilities_Ocs_Data_Capabilities_CoreToJson(this);
// coverage:ignore-end // coverage:ignore-end
@ -560,11 +568,16 @@ class CoreServerCapabilities_Ocs_Data_Capabilities_Ocm {
@JsonSerializable() @JsonSerializable()
class CoreServerCapabilities_Ocs_Data_Capabilities_Dav { class CoreServerCapabilities_Ocs_Data_Capabilities_Dav {
CoreServerCapabilities_Ocs_Data_Capabilities_Dav({required this.chunking}); CoreServerCapabilities_Ocs_Data_Capabilities_Dav({
this.bulkupload,
required this.chunking,
});
factory CoreServerCapabilities_Ocs_Data_Capabilities_Dav.fromJson(Map<String, dynamic> json) => factory CoreServerCapabilities_Ocs_Data_Capabilities_Dav.fromJson(Map<String, dynamic> json) =>
_$CoreServerCapabilities_Ocs_Data_Capabilities_DavFromJson(json); _$CoreServerCapabilities_Ocs_Data_Capabilities_DavFromJson(json);
final String? bulkupload;
final String chunking; final String chunking;
// coverage:ignore-start // coverage:ignore-start

6
packages/nextcloud/lib/src/nextcloud.openapi.g.dart

@ -70,6 +70,8 @@ CoreServerCapabilities_Ocs_Data_Capabilities_Core _$CoreServerCapabilities_Ocs_D
CoreServerCapabilities_Ocs_Data_Capabilities_Core( CoreServerCapabilities_Ocs_Data_Capabilities_Core(
pollinterval: json['pollinterval'] as int, pollinterval: json['pollinterval'] as int,
webdavRoot: json['webdav-root'] as String, webdavRoot: json['webdav-root'] as String,
referenceApi: json['reference-api'] as bool,
referenceRegex: json['reference-regex'] as String,
); );
Map<String, dynamic> _$CoreServerCapabilities_Ocs_Data_Capabilities_CoreToJson( Map<String, dynamic> _$CoreServerCapabilities_Ocs_Data_Capabilities_CoreToJson(
@ -77,6 +79,8 @@ Map<String, dynamic> _$CoreServerCapabilities_Ocs_Data_Capabilities_CoreToJson(
<String, dynamic>{ <String, dynamic>{
'pollinterval': instance.pollinterval, 'pollinterval': instance.pollinterval,
'webdav-root': instance.webdavRoot, 'webdav-root': instance.webdavRoot,
'reference-api': instance.referenceApi,
'reference-regex': instance.referenceRegex,
}; };
CoreServerCapabilities_Ocs_Data_Capabilities_Bruteforce CoreServerCapabilities_Ocs_Data_Capabilities_Bruteforce
@ -345,12 +349,14 @@ Map<String, dynamic> _$CoreServerCapabilities_Ocs_Data_Capabilities_OcmToJson(
CoreServerCapabilities_Ocs_Data_Capabilities_Dav _$CoreServerCapabilities_Ocs_Data_Capabilities_DavFromJson( CoreServerCapabilities_Ocs_Data_Capabilities_Dav _$CoreServerCapabilities_Ocs_Data_Capabilities_DavFromJson(
Map<String, dynamic> json) => Map<String, dynamic> json) =>
CoreServerCapabilities_Ocs_Data_Capabilities_Dav( CoreServerCapabilities_Ocs_Data_Capabilities_Dav(
bulkupload: json['bulkupload'] as String?,
chunking: json['chunking'] as String, chunking: json['chunking'] as String,
); );
Map<String, dynamic> _$CoreServerCapabilities_Ocs_Data_Capabilities_DavToJson( Map<String, dynamic> _$CoreServerCapabilities_Ocs_Data_Capabilities_DavToJson(
CoreServerCapabilities_Ocs_Data_Capabilities_Dav instance) => CoreServerCapabilities_Ocs_Data_Capabilities_Dav instance) =>
<String, dynamic>{ <String, dynamic>{
'bulkupload': instance.bulkupload,
'chunking': instance.chunking, 'chunking': instance.chunking,
}; };

14
packages/nextcloud/lib/src/nextcloud.openapi.json

@ -182,7 +182,9 @@
"type": "object", "type": "object",
"required": [ "required": [
"pollinterval", "pollinterval",
"webdav-root" "webdav-root",
"reference-api",
"reference-regex"
], ],
"properties": { "properties": {
"pollinterval": { "pollinterval": {
@ -190,6 +192,12 @@
}, },
"webdav-root": { "webdav-root": {
"type": "string" "type": "string"
},
"reference-api": {
"type": "boolean"
},
"reference-regex": {
"type": "string"
} }
} }
}, },
@ -466,6 +474,9 @@
"chunking" "chunking"
], ],
"properties": { "properties": {
"bulkupload": {
"type": "string"
},
"chunking": { "chunking": {
"type": "string" "type": "string"
} }
@ -3678,7 +3689,6 @@
} }
}, },
"/ocs/v1.php/apps/user_status/api/v1/heartbeat": { "/ocs/v1.php/apps/user_status/api/v1/heartbeat": {
"description": "Depends on https://github.com/nextcloud/server/pull/32646",
"put": { "put": {
"operationId": "heartbeat", "operationId": "heartbeat",
"tags": [ "tags": [

2
packages/nextcloud/lib/src/version_supported.dart

@ -4,7 +4,7 @@ part of '../nextcloud.dart';
extension CoreVersionSupported on CoreClient { extension CoreVersionSupported on CoreClient {
/// Checks if the app on the server is supported by the client /// Checks if the app on the server is supported by the client
Future<bool> isSupported([final CoreServerCapabilities_Ocs_Data? capabilities]) async => Future<bool> isSupported([final CoreServerCapabilities_Ocs_Data? capabilities]) async =>
(capabilities ?? (await getCapabilities()).ocs.data).version.major == 24; (capabilities ?? (await getCapabilities()).ocs.data).version.major == 25;
} }
// ignore: public_member_api_docs // ignore: public_member_api_docs

4
packages/nextcloud/test/helper.dart

@ -8,7 +8,7 @@ import 'package:nextcloud/nextcloud.dart';
import 'package:process_run/cmd_run.dart'; import 'package:process_run/cmd_run.dart';
import 'package:test/test.dart'; import 'package:test/test.dart';
const String nextcloudVersion = '24.0.6'; const String nextcloudVersion = '25.0.0';
const String defaultUsername = 'user1'; const String defaultUsername = 'user1';
const String defaultPassword = 'user1'; const String defaultPassword = 'user1';
@ -250,8 +250,6 @@ class TestDockerHelper {
'RUN ./occ maintenance:install --admin-pass admin --admin-email admin@example.com', 'RUN ./occ maintenance:install --admin-pass admin --admin-email admin@example.com',
'RUN ./occ app:disable password_policy', 'RUN ./occ app:disable password_policy',
'RUN ./occ config:system:set allow_local_remote_servers --value=true', 'RUN ./occ config:system:set allow_local_remote_servers --value=true',
'RUN sed -i "s/localhost/host.docker.internal/" /usr/src/nextcloud/apps/notifications/lib/Controller/PushController.php',
'ADD overlay /usr/src/nextcloud/',
generateCreateTestUserInstruction(), generateCreateTestUserInstruction(),
if (apps != null) ...[ if (apps != null) ...[
for (final app in apps) ...[ for (final app in apps) ...[

0
packages/nextcloud/test/overlay/.gitkeep

42
packages/nextcloud/test/overlay/apps/user_status/appinfo/routes.php

@ -1,42 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2020, Georg Ehrke
*
* @author Georg Ehrke <oc.list@georgehrke.com>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
return [
'ocs' => [
// Routes for querying statuses
['name' => 'Statuses#findAll', 'url' => '/api/v1/statuses', 'verb' => 'GET'],
['name' => 'Statuses#find', 'url' => '/api/v1/statuses/{userId}', 'verb' => 'GET'],
// Routes for manipulating your own status
['name' => 'UserStatus#getStatus', 'url' => '/api/v1/user_status', 'verb' => 'GET'],
['name' => 'UserStatus#setStatus', 'url' => '/api/v1/user_status/status', 'verb' => 'PUT'],
['name' => 'UserStatus#setPredefinedMessage', 'url' => '/api/v1/user_status/message/predefined', 'verb' => 'PUT'],
['name' => 'UserStatus#setCustomMessage', 'url' => '/api/v1/user_status/message/custom', 'verb' => 'PUT'],
['name' => 'UserStatus#clearMessage', 'url' => '/api/v1/user_status/message', 'verb' => 'DELETE'],
// Routes for listing default routes
['name' => 'PredefinedStatus#findAll', 'url' => '/api/v1/predefined_statuses/', 'verb' => 'GET'],
// Route for doing heartbeats
['name' => 'Heartbeat#heartbeat', 'url' => '/api/v1/heartbeat', 'verb' => 'PUT'],
],
];

114
packages/nextcloud/test/overlay/apps/user_status/lib/Controller/HeartbeatController.php

@ -1,114 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2020, Georg Ehrke
*
* @author Georg Ehrke <oc.list@georgehrke.com>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\UserStatus\Controller;
use OCA\UserStatus\Db\UserStatus;
use OCA\UserStatus\Service\StatusService;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\OCSController;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IRequest;
use OCP\IUserSession;
use OCP\User\Events\UserLiveStatusEvent;
use OCP\UserStatus\IUserStatus;
class HeartbeatController extends OCSController {
/** @var IEventDispatcher */
private $eventDispatcher;
/** @var IUserSession */
private $userSession;
/** @var ITimeFactory */
private $timeFactory;
/** @var StatusService */
private $service;
public function __construct(string $appName,
IRequest $request,
IEventDispatcher $eventDispatcher,
IUserSession $userSession,
ITimeFactory $timeFactory,
StatusService $service) {
parent::__construct($appName, $request);
$this->eventDispatcher = $eventDispatcher;
$this->userSession = $userSession;
$this->timeFactory = $timeFactory;
$this->service = $service;
}
/**
* @NoAdminRequired
*
* @param string $status
* @return JSONResponse
*/
public function heartbeat(string $status): JSONResponse {
if (!\in_array($status, [IUserStatus::ONLINE, IUserStatus::AWAY], true)) {
return new JSONResponse([], Http::STATUS_BAD_REQUEST);
}
$user = $this->userSession->getUser();
if ($user === null) {
return new JSONResponse([], Http::STATUS_INTERNAL_SERVER_ERROR);
}
$event = new UserLiveStatusEvent(
$user,
$status,
$this->timeFactory->getTime()
);
$this->eventDispatcher->dispatchTyped($event);
$userStatus = $event->getUserStatus();
if (!$userStatus) {
return new JSONResponse([], Http::STATUS_NO_CONTENT);
}
/** @psalm-suppress UndefinedInterfaceMethod */
return new JSONResponse($this->formatStatus($userStatus->getInternal()));
}
private function formatStatus(UserStatus $status): array {
return [
'userId' => $status->getUserId(),
'message' => $status->getCustomMessage(),
'messageId' => $status->getMessageId(),
'messageIsPredefined' => $status->getMessageId() !== null,
'icon' => $status->getCustomIcon(),
'clearAt' => $status->getClearAt(),
'status' => $status->getStatus(),
'statusIsUserDefined' => $status->getIsUserDefined(),
];
}
}

15
specs/core.json

@ -2,7 +2,7 @@
"openapi": "3.1.0", "openapi": "3.1.0",
"info": { "info": {
"title": "Core", "title": "Core",
"version": "24.0.6", "version": "25.0.0",
"description": "Core functionality of Nextcloud", "description": "Core functionality of Nextcloud",
"license": { "license": {
"name": "agpl", "name": "agpl",
@ -168,7 +168,9 @@
"type": "object", "type": "object",
"required": [ "required": [
"pollinterval", "pollinterval",
"webdav-root" "webdav-root",
"reference-api",
"reference-regex"
], ],
"properties": { "properties": {
"pollinterval": { "pollinterval": {
@ -176,6 +178,12 @@
}, },
"webdav-root": { "webdav-root": {
"type": "string" "type": "string"
},
"reference-api": {
"type": "boolean"
},
"reference-regex": {
"type": "string"
} }
} }
}, },
@ -452,6 +460,9 @@
"chunking" "chunking"
], ],
"properties": { "properties": {
"bulkupload": {
"type": "string"
},
"chunking": { "chunking": {
"type": "string" "type": "string"
} }

2
specs/notifications.json

@ -2,7 +2,7 @@
"openapi": "3.1.0", "openapi": "3.1.0",
"info": { "info": {
"title": "Notifications", "title": "Notifications",
"version": "2.12.1", "version": "2.13.1",
"description": "This app provides a backend and frontend for the notification API available in Nextcloud.", "description": "This app provides a backend and frontend for the notification API available in Nextcloud.",
"license": { "license": {
"name": "agpl", "name": "agpl",

2
specs/provisioning_api.json

@ -2,7 +2,7 @@
"openapi": "3.1.0", "openapi": "3.1.0",
"info": { "info": {
"title": "Provisioning API", "title": "Provisioning API",
"version": "1.14.0", "version": "1.15.0",
"description": "This application enables a set of APIs that external systems can use to manage users, groups and apps.", "description": "This application enables a set of APIs that external systems can use to manage users, groups and apps.",
"license": { "license": {
"name": "agpl", "name": "agpl",

2
specs/templates/appinfo_core.xml

@ -4,6 +4,6 @@
<name>Core</name> <name>Core</name>
<summary>Core functionality of Nextcloud</summary> <summary>Core functionality of Nextcloud</summary>
<description><![CDATA[Core functionality of Nextcloud]]></description> <description><![CDATA[Core functionality of Nextcloud]]></description>
<version>24.0.6</version> <version>25.0.0</version>
<licence>agpl</licence> <licence>agpl</licence>
</info> </info>

286
specs/templates/core.json

@ -2,7 +2,7 @@
"openapi": "3.1.0", "openapi": "3.1.0",
"info": { "info": {
"title": "Core", "title": "Core",
"version": "24.0.6", "version": "25.0.0",
"description": "Core functionality of Nextcloud", "description": "Core functionality of Nextcloud",
"license": { "license": {
"name": "agpl", "name": "agpl",
@ -199,6 +199,44 @@
} }
} }
}, },
"/core/avatar/{userId}/{size}/dark": {
"parameters": [
{
"name": "userId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "size",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"get": {
"operationId": "avatar-getavatardark-TODO",
"tags": [
"core"
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/core/avatar/{userId}/{size}": { "/core/avatar/{userId}/{size}": {
"parameters": [ "parameters": [
{ {
@ -247,7 +285,7 @@
{ {
"name": "path", "name": "path",
"in": "query", "in": "query",
"required": true, "required": false,
"schema": { "schema": {
"type": "string" "type": "string"
} }
@ -295,7 +333,7 @@
{ {
"name": "crop", "name": "crop",
"in": "query", "in": "query",
"required": true, "required": false,
"schema": { "schema": {
"type": "array" "type": "array"
} }
@ -335,6 +373,44 @@
} }
} }
}, },
"/core/avatar/guest/{guestName}/{size}/dark": {
"parameters": [
{
"name": "guestName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "size",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"get": {
"operationId": "guestavatar-getavatardark-TODO",
"tags": [
"core"
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/core/avatar/guest/{guestName}/{size}": { "/core/avatar/guest/{guestName}/{size}": {
"parameters": [ "parameters": [
{ {
@ -361,6 +437,17 @@
"tags": [ "tags": [
"core" "core"
], ],
"parameters": [
{
"name": "darkTheme",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 0
}
}
],
"responses": { "responses": {
"200": { "200": {
"description": "", "description": "",
@ -1318,18 +1405,10 @@
} }
} }
}, },
"/core/svg/core/{folder}/{fileName}": { "/core/core/references/preview/{referenceId}": {
"parameters": [ "parameters": [
{ {
"name": "folder", "name": "referenceId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "fileName",
"in": "path", "in": "path",
"required": true, "required": true,
"schema": { "schema": {
@ -1338,70 +1417,10 @@
} }
], ],
"get": { "get": {
"operationId": "svg-getsvgfromcore-TODO", "operationId": "reference-preview-TODO",
"tags": [ "tags": [
"core" "core"
], ],
"parameters": [
{
"name": "color",
"in": "query",
"required": false,
"schema": {
"type": "string",
"default": "ffffff"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/core/svg/{app}/{fileName}": {
"parameters": [
{
"name": "app",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "fileName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"get": {
"operationId": "svg-getsvgfromapp-TODO",
"tags": [
"core"
],
"parameters": [
{
"name": "color",
"in": "query",
"required": false,
"schema": {
"type": "string",
"default": "ffffff"
}
}
],
"responses": { "responses": {
"200": { "200": {
"description": "", "description": "",
@ -1980,7 +1999,7 @@
{ {
"name": "itemType", "name": "itemType",
"in": "query", "in": "query",
"required": true, "required": false,
"schema": { "schema": {
"type": "string" "type": "string"
} }
@ -1988,7 +2007,7 @@
{ {
"name": "itemId", "name": "itemId",
"in": "query", "in": "query",
"required": true, "required": false,
"schema": { "schema": {
"type": "string" "type": "string"
} }
@ -2418,6 +2437,121 @@
} }
} }
}, },
"/ocs/v1.php/core/resolve": {
"get": {
"operationId": "referenceapi-resolveone-TODO",
"tags": [
"core"
],
"parameters": [
{
"name": "reference",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
},
"post": {
"operationId": "referenceapi-resolve-TODO",
"tags": [
"core"
],
"parameters": [
{
"name": "references",
"in": "query",
"required": true,
"schema": {
"type": "array"
}
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 1
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/ocs/v1.php/core/extract": {
"post": {
"operationId": "referenceapi-extract-TODO",
"tags": [
"core"
],
"parameters": [
{
"name": "text",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "resolve",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 0
}
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 1
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/ocs/v1.php/core/{targetUserId}": { "/ocs/v1.php/core/{targetUserId}": {
"parameters": [ "parameters": [
{ {

2
specs/templates/notifications.json

@ -2,7 +2,7 @@
"openapi": "3.1.0", "openapi": "3.1.0",
"info": { "info": {
"title": "Notifications", "title": "Notifications",
"version": "2.12.1", "version": "2.13.1",
"description": "This app provides a backend and frontend for the notification API available in Nextcloud.", "description": "This app provides a backend and frontend for the notification API available in Nextcloud.",
"license": { "license": {
"name": "agpl", "name": "agpl",

136
specs/templates/provisioning_api.json

@ -2,7 +2,7 @@
"openapi": "3.1.0", "openapi": "3.1.0",
"info": { "info": {
"title": "Provisioning API", "title": "Provisioning API",
"version": "1.14.0", "version": "1.15.0",
"description": "This application enables a set of APIs that external systems can use to manage users, groups and apps.", "description": "This application enables a set of APIs that external systems can use to manage users, groups and apps.",
"license": { "license": {
"name": "agpl", "name": "agpl",
@ -1317,6 +1317,140 @@
} }
} }
}, },
"/ocs/v1.php/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}": {
"parameters": [
{
"name": "appId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "configKey",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"post": {
"operationId": "preferences-setpreference-TODO",
"tags": [
"provisioning_api"
],
"parameters": [
{
"name": "configValue",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
},
"delete": {
"operationId": "preferences-deletepreference-TODO",
"tags": [
"provisioning_api"
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/ocs/v1.php/apps/provisioning_api/api/v1/config/users/{appId}": {
"parameters": [
{
"name": "appId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"post": {
"operationId": "preferences-setmultiplepreferences-TODO",
"tags": [
"provisioning_api"
],
"parameters": [
{
"name": "configs",
"in": "query",
"required": true,
"schema": {
"type": "array"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
},
"delete": {
"operationId": "preferences-deletemultiplepreference-TODO",
"tags": [
"provisioning_api"
],
"parameters": [
{
"name": "configKeys",
"in": "query",
"required": true,
"schema": {
"type": "array"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/apps/provisioning_api/mailVerification/{key}/{token}/{userId}": { "/apps/provisioning_api/mailVerification/{key}/{token}/{userId}": {
"parameters": [ "parameters": [
{ {

4
specs/templates/user_status.json

@ -2,7 +2,7 @@
"openapi": "3.1.0", "openapi": "3.1.0",
"info": { "info": {
"title": "User status", "title": "User status",
"version": "1.4.0", "version": "1.5.0",
"description": "User status", "description": "User status",
"license": { "license": {
"name": "agpl", "name": "agpl",
@ -257,7 +257,7 @@
} }
} }
}, },
"/apps/user_status/heartbeat": { "/ocs/v1.php/apps/user_status/api/v1/heartbeat": {
"put": { "put": {
"operationId": "heartbeat-heartbeat-TODO", "operationId": "heartbeat-heartbeat-TODO",
"tags": [ "tags": [

3
specs/user_status.json

@ -2,7 +2,7 @@
"openapi": "3.1.0", "openapi": "3.1.0",
"info": { "info": {
"title": "User status", "title": "User status",
"version": "1.4.0", "version": "1.5.0",
"description": "User status", "description": "User status",
"license": { "license": {
"name": "agpl", "name": "agpl",
@ -542,7 +542,6 @@
} }
}, },
"/ocs/v1.php/apps/user_status/api/v1/heartbeat": { "/ocs/v1.php/apps/user_status/api/v1/heartbeat": {
"description": "Depends on https://github.com/nextcloud/server/pull/32646",
"put": { "put": {
"operationId": "heartbeat", "operationId": "heartbeat",
"tags": [ "tags": [

5
tool/Dockerfile.dev

@ -1,4 +1,4 @@
FROM nextcloud:24.0.6 FROM nextcloud:25.0.0
WORKDIR /usr/src/nextcloud WORKDIR /usr/src/nextcloud
RUN chown -R www-data:www-data . RUN chown -R www-data:www-data .
USER www-data USER www-data
@ -8,9 +8,6 @@ RUN ./occ app:disable password_policy
RUN ./occ config:system:set allow_local_remote_servers --value=true RUN ./occ config:system:set allow_local_remote_servers --value=true
RUN ./occ config:system:set trusted_domains 1 --value=10.0.2.2 RUN ./occ config:system:set trusted_domains 1 --value=10.0.2.2
RUN sed -i "s/localhost/host.docker.internal/" /usr/src/nextcloud/apps/notifications/lib/Controller/PushController.php
ADD overlay /usr/src/nextcloud/
RUN OC_PASS="user1" ./occ user:add --password-from-env --display-name "User One" user1 RUN OC_PASS="user1" ./occ user:add --password-from-env --display-name "User One" user1
RUN OC_PASS="user2" ./occ user:add --password-from-env --display-name "User Two" user2 RUN OC_PASS="user2" ./occ user:add --password-from-env --display-name "User Two" user2

1
tool/update.sh

@ -24,6 +24,7 @@ elif [ -d "external/nextcloud-$1" ]; then
git fetch --tags git fetch --tags
latest_tag="$(git tag --sort=v:refname | grep -vi "rc" | grep -vi "alpha" | grep -vi "beta" | tail -n 1)" latest_tag="$(git tag --sort=v:refname | grep -vi "rc" | grep -vi "alpha" | grep -vi "beta" | tail -n 1)"
git reset --hard "$latest_tag" git reset --hard "$latest_tag"
git submodule update
) )
else else
echo "$1 not found" echo "$1 not found"

Loading…
Cancel
Save